Python.<习题四> 循环结构
1.编写程序,计算1×2×3×…×10.
s=1
i=1
while i<=10:
s=s*i
i=i+1
print("s=",s)
sum=0
for i in range(1,100,2):
sum=sum+i
print("sum=",sum)
3.编写程序,输出1~100之间所有能被3整除,但是不能被5整除的数。
for i in range(1,100):
if i%3==0:
continue
print(i,end=" ")
4.编写程序,输出1000~2000年之间所有闰年,要求每行输出5个年份。
n=0
for i in range(1000,2000+1):
if (i%4==0 and i%100!=0) or (i%400==0):
n+=1
print("{}".format(i),end=" ")
if n%5==0:
print("")
5.编写程序,输出斐波那契数列的前20项,要求每行输出5项。
Fib1=1
Fib2=1
print(Fib1,Fib2,end=" ")
n=2
for i in range(3,20+1):
Fibi=Fib1+Fib2
Fib1=Fib2
Fib2=Fibi
n+=1
print("{}".format(Fibi),end=" ")
if n%5==0:
print("")
6.编写程序,从键盘上输入10个整数,输出这10个数中所有奇数之和,偶数之和及所有数的平均值。
sum1=sum2=0
for i in range(10):
num=eval(input("请输入一个整数:"))
if num%2==1:
sum1=sum1+num
else:
sum2=sum2+num
avg=(sum1+sum2)/10
print("所有奇数之和:{},所有偶数之和:{},平均值:{}".format(sum1,sum2,avg))
7.编写程序,从键盘上输入若干个整数,求出这些整数中所有奇数之和、偶数之和及所有数的平均值,当从键盘输入字符"A"时,程序输出计算结果。
sum1=sum2=k=0
num=input("请输入一个整数(输入字符A时结束处理):")
while num!='A':
k=k+1
num=int(num)
if num%2==1:
sum1=sum1+num
else:
sum2=sum2+num
num=input("请输入一个整数(输入字符A时结束处理):")
avg=(sum1+sum2)/k
print("所有奇数之和:{},所有偶数之和:{},平均值:{}".format(sum1,sum2,avg))
8.编写程序,输出1×2×3+3×4×5+5×6×7+…+99×100×101的值。
sum=0
for i in range(1,100,2):
sum=i*(i+1)*(i+2)
print("结果为:",sum)
9.编写程序,计算s=a+aa+aaa+…+aaa…aaa的值,其中a是1~9之间的某个数字,n是一个正整数。例如,当a=2,n=5时,s=2+22+222+2222+22222=24690.
#方法一
a,n=eval(input("请输入a,n的值"))
s=0
item=0
for i in range(1,n+1):
item=item*10+a
s=s+item
print("值为:",s)
#方法二
a,n=eval(input("请输入a,n的值"))
s=0
for i in range(1,n+1):
s=s+int(str(a)*i)
print("值为:",s)
10.编写程序,实现猜数游戏。在程序中随机生成一个0~9之间(包含0和9)的随机整数T,让用户通过键盘输入所猜的数。如果输入的数大于T,显示“遗憾,太大了”;如果小于T,显示“遗憾,太小了”;如此循环,直至猜中该数,显示“预测N次,你猜中了”,其中N是指用户在这次游戏中猜中该随机数一共尝试的次数。
import random
rnd=random.randint(0,9)
print("系统刚随机产生了一个0~9之间的一个整数")
user=int(input("请输入你猜的数"))
k=0
while 1:
k=k+1
if user>rnd:
print("遗憾,太大了")
user=int(input("请继续输入你猜的数"))
elif user<rnd:
print("遗憾,太小了")
user=int(input("请继续输入你猜的数"))
else:
print("预测{}次,你猜中了".format(k))
break
11.编写程序,产生两个0~100之间(包含0和100)的随机整数RND1和RND2,求这两个整数的最大公约数和最小公倍数。
import math
import random
RND1=random.randint(0,100)
RND2=random.randint(0,100)
gys=math.gcd(RND1,RND2)
gbs=RND1*RND2/gys
print("{}和{}的最大公约数为:{},最小公倍数为:{}".format(RND1,RND2,gys,gbs))
12.编写程序模拟硬币的投掷。假设0表示硬币反面,1表示硬币正面。在程序中让计算机产生若干次(建议大于100次)随机数,统计0和1分别出现的次数,并观察0和1出现的次数是否相同。
import random
num0=0
n=eval(input("请输入你要模拟投掷硬币的次数:"))
for i in range(n):
rnd=random.randint(0,1)
if rnd==0:
num0=num0+1
num1=n-num0
print("硬币反面{}次,硬币正面面{}次".format(num0,num1))
13.编写程序,计算“天天向上”和“天天向下”两种情况下的武力值。假设一年有365天,郭大侠第一天的武力值为1.如果郭大侠每天勤于练功,每天武力值相比前一天会增加1%;如果郭大侠每天不练功,每天武力值相比前一天会减少1%。郭大侠制定了一年的练功计划:从第一天开始,前五天每天练功,然后休息两天;接下来又练功五天,休息两天;如此往复,请计算一年后,郭大侠的最终武力值(结果保留2位小数)。
gdxwlz=1
for i in range(1,366):
if i%6==0 or i%7==0:
gdxwlz=gdxwlz*(1-0.01)
else:
gdxwlz=gdxwlz*(1+0.01)
print("郭大侠的最终武力值为:{:.2f}".format(gdxwlz))
14.编写程序,计算糖果总数。假设有一盒糖果,按照如下方式从中取糖果:
一个一个地取,正好取完
两个两个地取,还剩一个
三个三个地取,正好取完
四个四个地取,还剩一个
五个五个地取,还差一个
六个六个地取,还剩三个
七个七个地取,正好取完
八个八个地取,还剩一个
九个九个地取,正好取完
请问:这个盒子里至少有多少个糖果?
n=1
while 1:
if n%2==1 and n%3==0 and n%4==1 and n%5==4 and n%6==3 and n%7==0 and n%8==1 and n%9==0:
print("这个盒子里一共有{}个糖果".format(n))
break
else:
n=n+1
如果我整理的对你有用,就关注我吧。嘻嘻