Python for Kids
  • 0 前言
  • 1 编程环境准备
  • 2 运算符和表达式
  • 3 掌握变量
  • 4 字符串
  • 5 获取用户的输入
  • 6 条件判断
  • 7 条件判断实操
  • 8 FOR循环
  • 9 循环和列表
  • 10 WHILE循环
  • 11 WHILE循环实操
  • 12 WHILE循环再实操
  • 13 多重循环
  • 14 再谈列表
  • 15 初见函数
  • 16 函数实操
  • 17 选择排序
  • 18 冒泡排序
  • 19 递归算法之一
  • 20 递归算法实操
  • 21 快速排序
  • 22 汉诺塔游戏
  • 23 递推算法
  • 24 分治算法
  • 25 集合与组合
  • 26 贪心算法
  • 27 字典和键值对
  • 28 广度优先搜索算法
  • 29 数组和向量化计算
  • 30 随机和模拟
  • 31 数据可视化
  • 32 文件读取和分析
Powered by GitBook
On this page
  • 大纲
  • 练习:角谷猜想
  • 练习:蝴蝶效应
  • 练习:韩信点兵
  • 练习:精益求精
  • 练习:数列求和

Was this helpful?

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
Previous10 WHILE循环Next12 WHILE循环再实操

Last updated 4 years ago

Was this helpful?