python第5周(python学习题集)
这一周题目出来了,我看着我应该是最早做完的,所以就算审核之后应该时间还够,还是建议前九个题作为之前知识的复习题来做,最后一个题可以先学习列表的增删之后做,因为很简单,基础题目,对于巩固知识是不错的。目录7-1 统计数字 (10 分)7-2 sdut-求满足条件的斐波那契数 (10 分)7-3 平均值 (10 分)7-5 计算 1+2+3+...+m。 (10 分)7-6 sdut-循环-乘法运算
这一周题目出来了,我看着我应该是最早做完的,所以就算审核之后应该时间还够,还是建议前九个题作为之前知识的复习题来做,最后一个题可以先学习列表的增删之后做,因为很简单,基础题目,对于巩固知识是不错的。
目录
7-7 sdut-入门-7 A+B for Input-Output Practice (VII) (10 分)
7-10 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8) (5 分)
7-1 统计数字 (10 分)
输入一个字符串,统计其中数字字符的个数。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个仅由字母和数字组成的字符串(长度不超过80)。
输出格式:
对于每组测试,在一行上输出该字符串中数字字符的个数。
输入样例:
2
ac520ac520
a1c2m3sdf
输出样例:
6
3
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 19:41
n=int(input())
sum=0
while n:
sum=0
n-=1
m=input()
for i in m:
if i.isdigit():
sum+=1
print(sum)
7-2 sdut-求满足条件的斐波那契数 (10 分)
斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。
输入格式:
在一行输人一个正整数n(n>=10)。
输出格式:
在一行输出大于n的最小斐波那契数。
输入样例:
10
结尾无空行
输出样例:
13
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 19:45
n = int(input())
s1 = s2 = s3 = 1
while True:
s1 = s2
s2 = s3
s3 = s1 + s2
if s3 > n:
break
print(s3)
7-3 平均值 (10 分)
在一行上输入若干整数,每个整数以一个空格分开,求这些整数的平均值。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个字符串(仅包含数字字符和空格)。
输出格式:
对于每组测试,输出以空格分隔的所有整数的平均值,结果保留一位小数。
输入样例:
1
1 2 3 4 5 6 7 8 9 10
输出样例:
5.5
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 19:54
n = int(input())
for i in range(n):
sum = 0
m = 0
str1 = input().split()
for i in str1:
sum += float(i)
m += 1
print("%.1f" % (sum / m))
7-4 最小回文数 (10 分)
若一个数正向看和反向看等价,则称做回文数。例如:6,2552,12321均是回文数。 给出一个正整数n,求比n大的最小的回文数。(n和运算结果均不会超出int类型范围)
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入1个正整数n。
输出格式:
对于每组测试数据,输出比n大的最小回文数。
输入样例:
2
12
123456
输出样例:
22
124421
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 19:59
n= int(input())
for i in range(n):
m=int(input())
for l in range(m+1,m*2+1):
ty1=1 #判断是不是回文数
str1=str(l)
for o in range(len(str1)//2):
if str1[o]!=str1[len(str1)-o-1]:
ty1=0
break
if ty1:
print(l)
break
7-5 计算 1+2+3+...+m。 (10 分)
输入一个正整数m(0<=m<=100),计算 1+2+3+...+m 的值。
输入格式:
多组输入。
在一行输入一个正整数m。
输出格式:
对应每一行输入,在一行中按照格式“sum=S”输出对应的和S.
输入样例:
10
100
结尾无空行
输出样例:
在这里给出相应的输出。例如:
sum=55
sum=5050
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 20:07
try:
while True:
sum = 0
n = int(input())
for i in range(1, n + 1):
sum += i
print("sum=%d" % sum)
except EOFError:
pass
7-6 sdut-循环-乘法运算 (10 分)
接收一个正整数N,然后打印输出:N个等式,形如:i(1->N)N=iN 格式的数据。
输入格式:
只有一个正整数N(N<=100)。
输出格式:
输出共N行数据,形式如:i (1->N)*N=? 格式的表达式。
输入样例1:
4
结尾无空行
输出样例1:
1*4=4
2*4=8
3*4=12
4*4=16
结尾无空行
输入样例2:
5
结尾无空行
输出样例2:
1*5=5
2*5=10
3*5=15
4*5=20
5*5=25
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 20:12
n = int(input())
for i in range(1, n + 1):
print("%d*%d=%d" % (i, n, i * n))
7-7 sdut-入门-7 A+B for Input-Output Practice (VII) (10 分)
你的任务是计算a + b。
输入格式:
输入将由一系列整数a和b组成,用一个空格分隔,每行有一对整数。
输出格式:
对于每一对输入整数a和b,应该输出a和b的和,后面跟着一个空行。
输入样例:
在这里给出一组输入。例如:
1 5
10 20
输出样例:
在这里给出相应的输出。例如:
6
30
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 20:14
try:
while True:
n,m=map(int,input().split())
print("%d\n"%(n+m))
except EOFError:
pass
7-8 三七二十一 (10 分)
某天,诺诺看到三七二十一(3721)数,觉得很神奇,这种数除以3余2,而除以7则余1。例如8是一个3721数,因为8除以3余2,8除以7余1。现在给出两个整数a、b,求区间[a,b]中的所有3721数,若区间内不存在3721数则输出“none”。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入两个整数a,b(1≤a<b<2000)。
输出格式:
对于每组测试,在一行上输出区间[a,b]中所有的3721数,每两个数据之间留一个空格。如果给定区间不存3721数,则输出“none”(引号不必输出)。
输入样例:
2
1 7
1 100
输出样例:
none
8 29 50 71 92
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 20:17
n = int(input())
for i in range(n):
sum = 0
m1, m2 = map(int, input().split())
for i in range(m1, m2 + 1):
if i % 3 == 2 and i % 7 == 1:
if sum >= 1:
print(" %d" % i, end='')
else:
print(i, end='')
sum += 1
if sum == 0:
print("none")
else:
print()
7-9 菱形 (10 分)
输入一个整数n,输出2n-1行构成的菱形,例如,n=5时的菱形如输出样例所示。
输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数n(3≤n≤20)。
输出格式:
对于每组测试数据,输出一个共2n-1行的菱形,具体参看输出样例。
输入样例:
5
输出样例:
*
***
*****
*******
*********
*******
*****
***
*
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 20:23
try:
while True:
n=int(input())
for i in range(1,n+1):
for q in range(n-i):
print(" ",end='')
for q in range(i*2-1):
print("*",end='')
print()
for i in range(n-1,0,-1):
for q in range(n-i):
print(" ",end='')
for q in range(i*2-1):
print("*",end='')
print()
except EOFError:
pass
7-10 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8) (5 分)
输入一个列表,删除其中的重复值,再输出。
要求
假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。 不同元素在列表中的相对位置不应被改变。
输入格式:
[元素1, 元素2, ... , 元素n]
输出格式:
[元素1,元素2, ... , 元素k]
输入样例:
[4,3,2,3,2,4,True]
结尾无空行
输出样例:
[3, 2, 4, True]
结尾无空行
提示:将形如"[1,3,5]"的字符串转换成列表可以使用eval()函数。
注意:不要在遍历列表的同时对列表进行增删改操作,这样会引起混乱,导致不正确的结果!
注意,输出格式应与输出样例一致,涉及空格,逗号等。
请接着往下看:你的程序真的对了吗?
多数读者的解题思路是制造一个v列表的复制品以避免在遍历v的同时删除v中的元素。该解决方案可以通过本题设置的全部测试。但这并不意味着该解决方案是“完全正确”的。请尝试下述输入:
[1,7,6,7,7,True,'a',9.8,'a',True]
很遗憾,程序将产生错误的输出:
[6, 7, 9.8, 'a', True]
产生这种意外结果的原因是:在Python里1和True是相等的! 0和False也是相等的! 在使用列表的count()函数,index()函数,remove()函数时,1和True, 0和False被不加区分地对待。
下述代码的执行结果证实了这一点:
v = [1,True,2,True,0,False]
print("count of 1:", v.count(1), ",count of True:", v.count(True))
print("count of 0:", v.count(0), ",count of False:", v.count(False))
print("index of True:",v.index(True), ",index of False",v.index(False))
v.remove(True)
print("after v.remove(True):",v)
其执行结果为:
count of 1: 3 ,count of True: 3 #1,True都同时为1或True
count of 0: 2 ,count of False: 2 #0,False都同时为0或False
index of True: 0 ,index of False 4 #下标0的1被视为True
after v.remove(True): [True, 2, True, 0, False] #1被当作True移除了
这个问题的完美解决方案,请参考拟出版的《Python编程 实验》一书。
该书是高等教育出版社《Python编程基础及应用》教材的配套实验指导书。
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/9/27 20:30
list1 = eval(input())
list1.reverse()
list2 = ['']
for i in list1:
if i not in list2:
list2.insert(0, i)
list2.pop()
print(list2)
更多推荐
所有评论(0)