17输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 s = input("请输入:") # print(s[1]) # print(len(s)) # alpha,digit,space,other = 0 l=alpha=digit=space=other = 0 while l < len(s): if s[l].isalpha(): alpha += 1 # l += 1 elif s[l].isdigit(): digit += 1 # l += 1 elif s[l].isspace(): space += 1 # l += 1 else: other += 1 # l += 1 l += 1 print("字母%s 数字%s 空格%s 其他%s"%(alpha,digit,space,other)) 18求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制 from functools import reduce a = int(input("输入a:")) n = int(input("输入n:")) li = [] Tn = 0 Sn = 0 for i in range(0,n): Tn = Tn + a a *= 10 li.append(Tn) Sn = reduce(lambda x,y:x+y,li) # Sn = lambda x,y:x+y,li print("Sn=",Sn) 19一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 sum = 0 for i in range(0,1001): sum = 0 #每换一个i sum必须从0开始 li=[] for j in range(1,i): if i%j == 0: sum = sum + j li.append(j) # if sum == i: # print(i, li) #输出结果有24 [1, 2, 3, 4, 6, 8] 很明显少了12 因为j=8时已经满足sum = i,j不再增加 if sum == i: #所以得等到所有j遍历完再判断sum print(i,li) #输出结果不再有24 有0[] 哈哈哈哈xswl 改i范围 从1开始 不能改j为从0开始 除数不能为0 # break 20一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? from functools import reduce li = [100] def ball_hei(n): hei = 100 / (2**n) for i in range(1,n): # meter = 100 / (2**i) # li.append(meter*2) li.append(100/i) # print(hei,li) sum = reduce(lambda x,y:x+y,li) print("第%s次反弹高度为%s米,落地时经过%s米"%(n,hei,sum)) ball_hei(10) 22两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。 已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 D = [‘x‘,‘y‘,‘z‘] for i in D: if i != ‘x‘ and i != ‘z‘: # C.append(i) print("c --",i) D.remove(i) # print(D) for j in D: if j != ‘x‘: print("a --", j) D.remove(j) print("b --",D[0]) for a in [‘x‘,‘y‘,‘z‘]: for b in [‘x‘, ‘y‘, ‘z‘]: for c in [‘x‘, ‘y‘, ‘z‘]: if(a!=b)and(b!=c)and(c!=a) and (a!=‘x‘) and (c!=‘x‘) and (c!=‘z‘): print( ‘a--%s,b--%s,c--%s‘ %(a,b,c)) 23 打印出如下图案(菱形): s = ‘*‘ n = int(input("输入层数(奇数):")) for i in range(1,n+1,2): t = (n-i)//2 print(‘ ‘*t + s*i + ‘ ‘*t) for i in reversed(range(1,n-1,2)): t = (n-i)//2 print(‘ ‘*t + s*i + ‘ ‘*t) s = ‘*‘ for i in range(1, 8, 2): print((s*i).center(7)) for i in reversed(range(1, 6, 2)): print((s*i).center(7)) 24 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 from functools import reduce b = 2 a = 1 s = 0 li = [] for i in range(1,21): # s += b / a li.append(b / a) b,a = a+b,b print(li) print(reduce(lambda x,y:x+y,li)) # print(s) 25 利用递归方法求5! sum = 0 def Jiech(n): if n == 1: sum = 1 else: sum = n * Jiech(n-1) return sum print(Jiech(5)) 30 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 s = input("请输入一个5位数:") flag = 1 for i in range(len(s)): if s[i] != s[-i-1]: #要验证不满足的 如果验证满足的 有一位对称则会判定为回文 比如 12341 flag = 0 break if flag: print("是回文") else: print("不是回文") 37
原文:https://www.cnblogs.com/Nicloe2333/p/10963856.html