Python基础习题(二)
来源:互联网 发布:网络平台建设方案 编辑:程序博客网 时间:2024/05/21 18:33
9、一个数如果恰好等于其因子之和,则称为完数,如6=1+2+3。找出1000以内所有完数。
#一个数如果恰好等于其因子之和,则称为完数,如6=1+2+3。找出1000以内所有完数。"""思路:1、利用循环,依次查找数值的因数2、同时对其因数求和,当因数之和大于数值则循环跳出,查找下一个合适数值3、同时对每个数值的因数存放到列表4、查到合适数值后输出该数值以及其因数之和表达式"""#先定义一个判断是否为质数的函数import mathdef isPrime(n): if n<2: return False elif n==2: return True else: m=int(math.sqrt(n)) for i in range(2,m+1): if n%i==0: return False return Truefor n in range(1,1001): #如果为质数或1,则不符合,因为质数!=1+质数本身 if isPrime(n) or n==1: continue else: #创建存放因数的列表 list=[] sum=0 #查找n的因数 for i in range(1,n): if i==1 or n%i==0: sum=sum+i list.append(i) #如果因数之和已大于数值本身则跳出该内循环 if sum>n: break if n==sum: print(str(n)+"=",end="") for i in range(0,len(list)): if i<len(list)-1: print(str(list[i])+"+",end="") else: print(list[i],end="") print()
10、利用条件运算符的嵌套来完成:成绩>=90分的同学用A表示,60-89之间的用B表示低于60份的用C表示。
"""利用条件运算符的嵌套来完成:成绩>=90分的同学用A表示,60-89之间的用B表示低于60份的用C表示"""score=int(input("请输入成绩(0-100):"))score_level='A' if score>=90 else ('B' if 60<=score<90 else 'C')print(score_level)
注意条件运算符的嵌套用法。
11、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数并输出。
"""输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数并输出"""str0=input("请输入一行字符串:")letter_count=0space_count=0number_count=0other_count=0for c in str0: if 'a'<=c<='z' or 'A'<=c<='Z': letter_count+=1 elif c==" ": space_count+=1 elif 0<=int(c)<=9: number_count+=1 else: other_count+=1print("这行字符总共包括"+str(letter_count)+"个字母,",end="")print(str(space_count)+"个空格,",end="")print(str(number_count)+"个数字,",end="")print(str(other_count)+"个其他字符,",end="")
12、求s=a+aa+aaa+aaaa+….;其中加几次由键盘输入指定。
"""求s=a+aa+aaa+aaaa+....;其中加几次由键盘输入指定"""n=int(input("请输入相加的次数:"))a=int(input("请输入一个正整数(1-9):"))s=0m=aprint("s=",end="")for i in range(1,n+1): if i==n: print(str(m),end="") else: print(str(m)+"+",end="") s=s+m m=m*10+aprint("="+str(s))
13、猴子吃桃问题:猴子第一天摘下一堆桃子,吃了一半后又吃了一个;第二天又吃了剩下的一半后又吃了一个;每天都如此吃法,到第十天再想吃时发现只剩一个桃子了,请问第一天共摘了多少只桃子?
def monkeyEatpeach(days,left_count): n=left_count for i in range(1,days): n=(n+1)*2 print("第一天摘的桃子数量是:"+str(n)+"只") return ndays=int(input("请输入最后一天是第几天:"))left_count=int(input("请输入最后一天发现还剩几只桃子:"))monkeyEatpeach(days,left_count)
14、有一个分数序列:2/1、3/2、5/3、8/5、13/8、21/13….求这个序列前20项之和。
#建立两个列表,分别以分子和分母为元素a=[]b=[]a.append(2.0)a.append(3.0)b.append(1.0)b.append(2.0)for i in range(2,20): a.append(a[i-1]+a[i-2]) b.append(b[i-1]+b[i-2])s=0for i in range(0,20): s=s+float(a[i]/b[i]) print(str(s),end=" ")print()print("结果为:"+str(s))
15、求1+2!+3!+4!+…+20!的和。
#求1+2!+3!+4!+...+20!的和。def f1(n): if n==1: return 1 else: return f1(n-1)*ns=0n=int(input("请输入要进行逐数阶乘相加的次数:"))for i in range(1,n+1): s=s+f1(i) if i<n: print(str(i)+"!+",end="") else: print(str(i)+"!=",end="")print(s)
16、对10个数进行排序
#对10个数进行排序def listInputinfo(n): list=[] for i in range(0,n): print("\n请输入第"+str(i+1)+"个数:",end="") e=int(input()) list.append(e) return listn=int(input("请输入要排序的数字数量:"))#直接利用列表升序函数lista=listInputinfo(n)lista.sort()for i in range(0,len(lista)): print(lista[i],end=" ")#方法二listb=listInputinfo(n)for i in range(0,len(listb)-1): for j in range(i+1,len(listb)): if listb[i]>listb[j]: a=listb[i] listb[i]=listb[j] listb[j]=afor i in range(0,len(listb)): print(listb[i],end=" ")
0 0
- Python基础习题(二)
- Python基础习题(一)
- java基础习题50道(二)
- MySQL基础习题锻炼(二)
- 可爱的python课后习题(二)
- Python基础---习题
- python基础(二)
- python基础(二)
- Python基础(二)
- python 基础(二)
- Python基础(二)
- Python基础(二)
- python基础(二)
- python基础(二)
- Python基础(二)
- python程序设计:基础1习题
- 《零基础学python》习题
- Java基础习题(二)——异常
- Java读写Excel的三种方式
- 公司内局域网中的redis缓存和sock线程池,不在局域内运行程序怎么处理
- [BZOJ4521][Cqoi2016]手机号码(数位dp)
- Xilinx & Altera FPGA中的逻辑资源(Slices VS LE)比较
- 业余01-MATLAB之M文件双击没反应修复方法
- Python基础习题(二)
- Windbg扩展指令开发教程
- 一天一条Linux指令-reset
- C/C++笔试必须熟悉掌握的头文件系列(九)——string
- AOP(1)
- 电源地与信号地关系的详细解析
- WebView详解一:打造优雅的WebView
- 01-多线程01
- [BZOJ1179][Apio2009]Atm(tarjan+spfa)