11 WHILE循环实操

一堆练习题抵达战场

大纲

  • 练习:角谷猜想

  • 练习:蝴蝶效应

  • 练习:韩信点兵

  • 练习:精益求精

  • 练习:数列求和

练习:角谷猜想

对于每一个正整数,如果它是奇数,则对它乘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)
1469

练习:精益求精

计算一个分数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)
4100
sum_n = 0
for n in range(201):
    if n%5==0:
        sum_n = sum_n+n
print(sum_n)
4100
sum_n = 0
for n in range(5,205,5):
    sum_n = sum_n+n
print(sum_n)
4100
sum(range(5,205,5))
4100

Last updated

Was this helpful?