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?

12 WHILE循环再实操

还有完没完

大纲

  • 练习:拍手游戏

  • 练习:报数游戏

  • 练习:化功大法

  • 练习:座位计算

  • 练习:数字求和

练习:拍手游戏

在一次表演中,三位同学进行拍手,A同学每1秒拍一次,B同学每2秒拍一次,C同学每4秒拍一次,三个人同时开始拍第一次手,每人都拍10次,算一下观众可以听到多少次拍手?

a = b = c = 0
time = 0
count=0
while a+b+c<30:
    flag = 0
    if a<10:
        a = a+1
        flag = 1
    if (b<10) and (time%2==0):
        b = b+1
        flag = 1
    if (c<10) and (time%4==0):
        c = c+1
        flag = 1
    if flag:
        count = count+1
    time = time + 1
print(count)
20

练习:报数游戏

两个同学玩报数游戏,A按1-20报数,B按1-30报数,他们同时开始,以同样的速度报数,当两人都报了1000个数时,他们同时而且报出相同数字的次数是多少?

n = 0
a = 0
b = 0
count = 0
while n<1000:
    a = a+1
    if a>20:
        a = 1
    b = b+1
    if b>30:
        b = 1
    if a == b:
        count = count+1
    n = n+1
print(count)
340

练习:化功大法

编写一个程序,输入一个纯小数,然后将其转换成一个最简分数。

a = float(input("输入一个小数:"))
x=1
y=a
# 转化成整数
while abs(y-int(y)>1e-10):
    x = 10*x
    y = x*a

#找出x,y的最大公约数
i=y
while (i>0) and ((x%i!=0) or (y%i!=0)):
    i = i-1
# 将x,y除以他们的最大公约数
y = int(y/i)
x = int(x/i)
print(str(y)+"/"+str(x))
输入一个小数:0.125
1/8

练习:座位计算

有一个大教室,一共有312个座位,第一排有15个座位,之后的每一排比前一排增加2个座位,问一共有几排?最后一排有几个座位?

total = 312
x = 15  
i = 1
sum_x = x
while sum_x<total:
    x = x+2
    i = i+1
    sum_x = sum_x+x
    print(i,x,sum_x)
2 17 32
3 19 51
4 21 72
5 23 95
6 25 120
7 27 147
8 29 176
9 31 207
10 33 240
11 35 275
12 37 312

练习:数位求和

输入一个整数,对各数位求和

x = int(input("请输入一个数字:"))
sum_x = 0
while(x!=0):
    a = x%10
    sum_x = sum_x+a
    x=x//10
print(sum_x)
请输入一个数字:234
9
Previous11 WHILE循环实操Next13 多重循环

Last updated 4 years ago

Was this helpful?