9、一个数如果恰好等于其因子之和,则称为完数,如6=1+2+3。找出1000以内所有完数。
#一个数如果恰好等于其因子之和,则称为完数,如6=1+2+3。找出1000以内所有完数。
"""
思路:1、利用循环,依次查找数值的因数
2、同时对其因数求和,当因数之和大于数值则循环跳出,查找下一个合适数值
3、同时对每个数值的因数存放到列表
4、查到合适数值后输出该数值以及其因数之和表达式
"""
#先定义一个判断是否为质数的函数
import math
def 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 True
for 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=0
space_count=0
number_count=0
other_count=0
for 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+=1
print("这行字符总共包括"+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=0
m=a
print("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+a
print("="+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 n
days=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=0
for 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)*n
s=0
n=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 list
n=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]=a
for i in range(0,len(listb)):
print(listb[i],end=" ")