一、编程题
1、36.| 参考程序:已知有一些学生数据,每名学生的信息是一个字典。所有学生信息放在列表中。(1)计算每个学生的平均分(语文+数学+英语)/3,并对平均分取整,追加到其字典;(2)根据学生的平均分从低到高排列;(3)输出每位学生的学号和平均分。输出格式如下:20230103:72 20230102:82 20230101:92程序模板如下:students= [{'学号':'20230101','语文': 90,'数学':95,'英语':92},{'学号':'20230102','语文': 80,'数学':85,'英语':82},{'学号':'20230103','语文': 70,'数学':75,'英语':72}]for student in students: ① students.sort(key = lambda x:x['平均分'],reverse = False) for student in students: print('{}:{}'.format( ② , ③ )) | |
| ------------------------------------------------------------ | ---- |
| | |
| | |
解析:【喵呜刷题小喵解析】:
本题需要按照给定的参考程序进行逻辑操作,实现三个要求:
1. 计算每个学生的平均分(语文+数学+英语)/3,并对平均分取整,追加到其字典。
2. 根据学生的平均分从低到高排列。
3. 输出每位学生的学号和平均分。
首先,遍历学生列表,计算每个学生的平均分,并对平均分取整,然后追加到其字典中。
然后,使用`sort()`函数根据学生的平均分从低到高排列。
最后,遍历排序后的学生列表,输出每位学生的学号和平均分。
注意,在输出时,需要使用`format()`函数将字典中的'学号'和'平均分'作为字符串输出。
2、37.信息科技社团正在进行一种字符串扩展的实验,实验操作方法如下:
(1)给定一个初始字符串s,筛选出其中的大小写字母,生成新的字符串x;
(2)将字符串x最后一个字符删除,生成一个新的字符串y;
(3)将字符串x的右边最后一个字符拼接到字符串x的末尾;
(4)将字符串y拼接到字符串x的末尾。
按照(2)-(4)步骤重复操作,每一步将当前字符串的长度加倍,直到字符串x长度达到n。
给定初始字符串和n,请帮助社团同学们计算扩展的字符串中第n个位置的字符。
以s=“c1ar23”,n=8 为例
c1ar23 --> car --> carrca --> carrcaacarrc
第8个位置上的字符'c',则输出为c
输入格式:
第一行,一个字符串s(长度不超过20)
第二行,一个整数n(1<=n<=100)
输入样例:
c1ar23
8
输出格式:
一个字符,表示扩展的字符串中的第n个字符。
输出样例:
c
s=input()
n=int(input())
x=""
for i in s:
if ((i>='A' and i<='Z') ① ):
x=x+i
xn=len(x)
while xn
y=x.replace( ② , '')
x=x+x[-1]
x=x+y
xn= ③
print( ④ )
参考答案:```pythons = input()n = int(input())x = ""for i in s:if i.isalpha():x += ixn = len(x)while xn < n:y = x[:-1]x = x[:-1] + x[-1] + yxn = len(x)print(x[n-1])```
解析:【喵呜刷题小喵解析】:
根据题目描述,我们需要对给定的字符串s进行扩展操作,直到字符串的长度达到n。扩展操作的具体步骤如下:
1. 筛选出字符串s中的大小写字母,生成新的字符串x。
2. 将字符串x的最后一个字符删除,生成新的字符串y。
3. 将字符串x的最后一个字符拼接到字符串x的末尾。
4. 将字符串y拼接到字符串x的末尾。
按照步骤2-4重复操作,直到字符串x的长度达到n。最后,我们需要输出扩展后的字符串中第n个位置的字符。
根据上述操作,我们可以编写Python代码来实现这个功能。在代码中,我们使用for循环来筛选出字符串s中的大小写字母,并拼接到字符串x中。然后,我们使用while循环来重复执行步骤2-4,直到字符串x的长度达到n。最后,我们输出扩展后的字符串中第n个位置的字符。
在Python代码中,我们使用input()函数来读取输入的字符串s和整数n,并使用len()函数来获取字符串x的长度。在while循环中,我们使用切片操作来删除字符串x的最后一个字符,并将其拼接到字符串x的末尾和字符串y的末尾。最后,我们输出扩展后的字符串中第n个位置的字符,即x[n-1]。
注意,在题目描述中,步骤2的描述有误,应该是将字符串x的最后一个字符删除,而不是将字符串x的右边最后一个字符删除。因此,在Python代码中,我们使用切片操作x[:-1]来删除字符串x的最后一个字符,而不是使用replace()函数。
3、38.编写Python程序,要求输出区间[m,n]内所有素数的和,实现上述功能的 Python 程序如下,请在划线处填入合适的代码。
def isPrime(num): #判断素数
num=int(num)
for i in range(2,num):
if ① :
return False
if num!=1:
return True
def PrimeSum(a,b):
sum=0
for i in range(a,b+1):
if isPrime(i):
②
return sum
m=int(input("m:"))
n=int(input("n:"))
print( ③ )
参考答案:```pythondef isPrime(num): #判断素数num = int(num)for i in range(2, num):if i * i > num:breakif num % i == 0:return Falseif num != 1:return Truedef PrimeSum(a, b):sum = 0for i in range(a, b+1):if isPrime(i):sum += ireturn summ = int(input("m:"))n = int(input("n:"))print(PrimeSum(m, n))```
解析:【喵呜刷题小喵解析】:
1. 对于`isPrime`函数,我们不需要检查到`num`,只需要检查到`sqrt(num)`。因为如果`num`不是素数,那么它必定有一个因子小于或等于它的平方根。因此,我们可以优化`isPrime`函数,在循环中只检查到`sqrt(num)`。
2. 对于`PrimeSum`函数,如果`i`是素数,我们需要将其加入到`sum`中。因此,在`if isPrime(i):`语句下,我们需要添加`sum += i`。
3. 对于主程序部分,我们直接调用`PrimeSum(m, n)`并打印结果。
所以,划线处应填写的代码为:
①:`if num % i == 0:`
②:`sum += i`
③:`PrimeSum(m, n)`
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!