1、求10到20之间所有3的倍数的和。
解1:
s=0
for k in range(10,20):
if k%3==0: s=s+k
print("10到20之间所有3的倍数和是:",s)
解2:
s=0
for k in range(12,20,3):
s=s+k
print("sum=",s)
解3:print('10到20之间所有3的倍数和是:',sum(range(12,20,3)))
2、求100到200之间所有的素数的和。
解1:
print('100到200之间所有素数和是:', sum([m for m in range(100,200) if 0 not in [m % i for i in range(2,m) ]]))
3、已知一个列表score中存放了若干学生的成绩,如score = [80,90,78,67,69,54,34,98,87,92],统计成绩在60分以下的人数。
解1:
score = [80,90,78,67,69,54,34,98,87,92]
t=0
for s in score:
if s < 60:t=t+1
print('成绩在60分以下的人数是',t)
解2:
score = [80,90,78,67,69,54,34,98,87,92]
result = len([s for s in score if s < 60])
print('成绩在60分以下的人数是',result)
4、已知字符串weather中存放了若干以逗号分隔的天气,如weather=’sunny,rainny,windy,sunny,rainny,windy,sunny,windy,windy,sunny,sunny,windy’,统计每种天气出现的次数。
解1:
weather='sunny,rainny,windy,sunny,rainny,windy,sunny,windy,windy,sunny,sunny,windy'
wlist = weather.split(',') #转化为列表
result = {w:wlist.count(w) for w in wlist}
print('天气\t次数')
for r in result:
print('{}\t{}'.format(r,result[r]))
5、设有一个英文文本文件text.txt,读取其内容,把其中的大写字母变成小写字母,小写字母变成大写字母后写到文件result.txt中。
with open('text.txt','r') as fp1,open('result.txt','w') as fp2:
fp2.write(fp1.read().swapcase())
6、求1到100之间所有5的倍数的和。
print('1到100之间所有5的倍数和是:',sum(range(0,100,5)))
7、求10到20之间所有的素数的和。
print('10到20之间所有素数和是:', sum([m for m in range(10,20) if 0 not in [m % i for i in range(2,m) ]]))
8、求从1-3中任选2个数组成的所有2位数。
num = [1,2,3]
print([x*10+y for x in num for y in num if x!=y])
9、从键盘输入一个字符串,统计该字符串中各字母出现的次数。
str1 = input('enter a string:')
result = {ch:str1.count(ch) for ch in str1 if ch.isalpha()}
print(result)
10、编写一个判断一个数是否是水仙花数的函数,然后利用该函数求所有的水仙花数。(水仙花数是一个三位数,其每位上数字的立方和等于这个数。如153=1*1*1+5*5*5+3*3*3,153是水仙花数)
def daffodil(n):
i = n // 100 #百位数
j = n // 10 % 10 #十位数
k = n % 10 #个位数
return n == i**3 + j**3 + k**3
total = [n for n in range(100,1000) if daffodil(n)]
print('所有水仙花数是:',total)
11、利用自定义函数求1!+2!+3!+…+n!。
def sumfac(n):
s,f = 0,1
for i in range(1,n+1):
f *= i
s += f
return s
n = int(input('enter n:'))
print('1!+2!+...+{}!={}'.format(n,sumfac(n)))
12、求1到100之间所有偶数的和。
print('1到100之间所有偶数的和是',sum(range(2,101,2)))
13、求200以内能被13整除的最大整数。
for i in range(200,1,-1):
if i % 13 == 0:
print('200以内能被13整除的最大正整数是:',i)
break
14、已知一个列表score中存放了若干学生的成绩,如score = [80,90,78,67,69,54,34,98,87,92],统计成绩在70-80分之间的人数。
score = [80,90,78,67,69,54,34,98,87,92]
result = len([s for s in score if 70 <= s <= 80])
print('成绩在70-80之间的人数是',result)
15、已知字符串words中存放了若干以空格分隔的单词,如words=’hello python hello world hello china good china’,统计每个单词出现的次数。
words='hello python hello world hello china good china'
wlist = words.split()
result = {w:wlist.count(w) for w in wlist}
print('单词\t次数')
for r in result:
print('{}\t{}'.format(r,result[r]))
16、设有一个文本文件data.txt,存放了若干以逗号分隔的整数,求所有整数的平均值,将结果写到文件result.txt中。
ith open('data.txt','r') as fp:
data = fp.read().strip('\n').split(',')
data = list(map(int,data))
avg = sum(data)/len(data)
with open('result.txt','w') as fp:
fp.write(str(avg))
17、从键盘输入一个字符串,判断该字符串是否是回文字符串。所谓回文字符串是指正向和逆向都相同的字符串,如’abcdcba’。
str1 = input('enter a string:')
if str1==str1[::-1]:
print('%s是回文字符串'%str1)
else:
print('%s不是回文字符串'%str1)

