大纲
练习:角谷猜想
对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都会得到1,这是一个数学上的猜想,让我们编写一个程序来验证它。
x = int(input("请输入一个数字:"))
while x!=1:
if x%2 == 0:
x = x/2
else:
x = x*3+1
print(x)
请输入一个数字:13
40
20.0
10.0
5.0
16.0
8.0
4.0
2.0
1.0
练习:蝴蝶效应
某个数字的初始值设为1,让它产生一个极小的偏差,减0.001之后的值是0.999,加上0.001之后的值是1.001,以后每个的值都是自己乘自己,算一下14次之后分别是多少?
x = 0.999
y = 1.001
n = 1
while n<=14:
x = x*x
y = y*y
n = n+1
print("x=",x)
print("y=",y)
x= 0.998001
y= 1.0020009999999997
x= 0.996005996001
y= 1.0040060040009995
x= 0.9920279440699441
y= 1.008028056070055
x= 0.9841194418156402
y= 1.0161205618243738
x= 0.9684910757595271
y= 1.032500996162281
x= 0.937974963825846
y= 1.0660583070761027
x= 0.8797970327640972
y= 1.136480314085966
x= 0.7740428188605099
y= 1.291587504304936
x= 0.5991422854295241
y= 1.6681982812766531
x= 0.3589714781897133
y= 2.7828855056543795
x= 0.12886052215370783
y= 7.744451737581231
x= 0.016605034169726227
y= 59.97653271572496
x= 0.00027572715977777556
y= 3597.184476600426
x= 7.602546663911897e-08
y= 12939736.158695081
练习:韩信点兵
韩信带的士兵要点数,如果站3人一排,多出2人,如果站5人一排,多出4人,如果站7人一排,多出6人,我们知道他所带的士兵一共不超过1500人,问他带的兵具体有多少人?
n = 1500
while True:
if (n%3==2) and (n%5==4) and (n%7==6):
break
n = n-1
print(n)
练习:精益求精
计算一个分数1/7转化成小数的形式,要求计算结果精确到小数点后100位。
output = "0."
a=1
i=1
while i<=100:
a = a*10
b = a//7
output = output+str(b)
a = a%7
i = i+1
print(output)
0.1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428
练习:数列求和
求 5+10+15+20+25+...+200的和是多少
n = 5
sum_n = 0
while n<=200:
sum_n = sum_n+n
n = n + 5
print(sum_n)
sum_n = 0
for n in range(201):
if n%5==0:
sum_n = sum_n+n
print(sum_n)
sum_n = 0
for n in range(5,205,5):
sum_n = sum_n+n
print(sum_n)