1、计算1+2+4+..+100的和
def sum_n(n):
sumall=1
for i in range(2,n+1,2):
sumall=sumall+i
return sumall
n=int(input('输入正整数n:'))
print(f'1+2+4+..+{n}={sum_n(n)}')
2、从键盘输入一个字符串,直到回车结束,统计字符串中的大小写英文字母各有多少个
def tongjidaxie(s):
daxie=0
for i in s:
if i>'A' and i<'Z':
daxie=daxie+1
return daxie
def tongjixiaoxie(s):
xiaoxie=0
for j in s:
if j>'a' and j<'z':
xiaoxie=xiaoxie+1
return xiaoxie
s=input('请输入一个字符串:')
print(f'字符串中大写字母有{tongjidaxie(s)}个')
print(f'字符串中小写字母有{tongjixiaoxie(s)}个')
3、求一个序列2/1,3/2,5/3,8/5....求前20项之和
def sum_adivb():
fenzi=2
fenmu=1
sumall=0
for i in range(20+1):
sumall=sumall+fenzi/fenmu
temp=fenmu
fenmu=fenzi
fenzi=fenzi+temp
return sumall
print(f'前20项之和是:{sum_adivb()}')
4、输入若干同学的成绩,计算平均成绩,输入成绩为负或大于100时结束
def count_pingjunchengji():
s=0
n=0
while True:
m=float(input('输入成绩:'))
if m>100 or m<0:
break
s=s+m
n=n+1
m=s/n
return m
ava=count_pingjunchengji()
print('平均成绩为',ava)
5、输入3个正整数a,b,n,精确计算a/b的结果到小数后n位
def tongji_n(a,b,n):
c=a/b
print(f'{a}/{b}=%.{n}f'%c)
a=int(input('输入正整数a:'))
b=int(input('输入正整数b:'))
n=int(input('输入正整数n:'))
tongji_n(a, b, n)
6、猴子摘桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
def monkey_peach(n):
if n==10:
return 1
return 2*(monkey_peach(n+1)+1)
total=monkey_peach(1)
print(f'第1天共摘了{total}个桃子')
7、有一个序列1,3,5,8,13,21...用while循环求出这个数列的前20项之和
def total_xulie():
a=3
b=5
i=1
total=4
while i<=17:
total=total+b
temp=a
a=b
b=b+temp
i=i+1
return total
num=total_xulie()
print(f'前20项的和1+3+5+...={num}')
8、找出1000之内的所有的完数
def is_wanshu(n):
ls=[]
for i in range(1,n):
if n%i==0:
ls.append(i)
if sum(ls)==n:
return 1
else:
return 0
print('1000以内的完数有:',end='')
for j in range(1,1001):
k=is_wanshu(j)
if k==1:
print(j,end='\t')
9、近千人排队,7人一行余3,5余3,3余1.求学生数
def student_num(n):
for j in range(n,1,-1):
if j%7==3 and j%5==3 and j%3==1:
return j
n=int(input('输入估计的学生数:'))
print('学生数应该是:',student_num(n))
10、小华今年12,他妈妈比他大20岁,多少年后他妈妈年龄比他大一倍
def count_year():
xiaohua=12
mama=xiaohua+20
i=0
while True:
if mama==2*xiaohua:
break
xiaohua=xiaohua+1
mama=mama+1
i=i+1
return i
nyear=count_year()
print(f'{nyear}后小华妈妈年龄比他大一倍')
11、世界人口60亿,每年1.5%比例增长,多少年后80亿?
def nyear():
x=60
year=1
while True:
x=x*1.015
if x>=80:
return year
break
else:
year=year+1
print(f'{nyear()}后80亿')
12、一球从80m高度自由下落,每次回到高度1半,求10次后高度多少,共走了多少m
def bool_drop(n):
h=80
s=80
k=[]
for i in range(n):
h=h/2
s=s+2*h
k=[s,h]
return k
n=int(input('输入反弹次数:'))
h_s=bool_drop(n)
print(f'{n}次后高度{h_s[1]},共走了{h_s[0]}m')