for循环

例题1:通过擂台法求解列表中的最大数。

a = [2345, 5421, 1254, 23, 5621]
maxx = a[0]
for k in ①:  # k在列表a中依次取值
  if maxx < k:  # 比较maxx和当前数
    ②
print(③)  # 输出结果

分析:

第一空:循环变量从列表中依次取值,所以应该填写列表名

第二空:将列表中的每一个元素依次和最大值变量中的值进行比较,如果比现有的最大值大,则将该元素的值赋给最大值变量。

第三空:输出最大值变量中的值

答案:

1.a          2.maxx=k          3.maxx

例题2:打印以下图形。
----*
---**
--***
-****

for i in ①(4):      #控制打印行数
    print("-" * (②) + "*"*(③))

第一空:range函数可以生成整数列表。range(4)可以生成一个[0,1,2,3]列表,循环变量i可以从这个列表中取到4个数,所以循环语句会执行4次,print()每执行一次就会产生一行输出,因此该程序会输出四行内容

第二空:当i=0时,_共用4个;当i=1时,_共有3个;当i=2时,_共用2个;当i=3时,_共有1个。可以得出i的值和_的关系是_的数量=4-i

第三空:分析过程同第二空,*的数量=1+i

答案:

1.range          2.4-i          3.i+1

例题3:一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1,即n!=1×2×3×...×(n-1)×n。现求正整数n的阶乘。

num = int(input("请输入一个数字: "))
①       #赋初值
for i in range(1,②):
    f = ③
print("%d 的阶乘为 %d" % (num, f))

分析:

第一空:存放乘积的变量的初始值不可能为0.

第二空:将每一个i的值乘进f这个变量中

答案:

1.f=1          2.f*i

例题4:猜数游戏:由计算机随机生成一个100以内的正整数,用户有5次猜数机会,
如果猜中则提示“猜中了!”并退出程序;否则经比较给出相应的提示,然后继续猜数。
如果5次均未猜中,输出提示信息后结束游戏。

import ①        #导入随机模块
m = random.randint(1, 100)  # 产生一个1~100的正整数
for i in range(5):
    t = int(input("请输入你猜的数:"))
    if t > m:
        print("数偏大")
    ②   t < m:
        print("数偏小")
    else:
        print("猜中了!")
        ③  # 退出循环
if t != m:
    print("这个数是:", m)
print("5次没有猜中,很遗憾,游戏结束")

分析:

第一空:导入模块

方法一:导入某个模块
import 模块名
方法二:从某个模块中导入某个函数
from 模块名 import 函数名

第二空:多分支结构关键字

第三空:退出循环语句

退出全部循环:
break

退出本次循环:
continue

for i in range(5):
    if i==3:
        break
    print(i)

运行结果:
0
1
2

for i in range(5):
    if i==3:
        continue
    print(i)

运行结果:
0
1
2
4
5

答案:

1.random          2.elif          3.break

例题5:水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身。请输出全部水仙花数。

print("所有水仙花数:")
for x in range(100, ①):
    b = x // ②  # 百位
    s = (x//10) % 10  # 十位
    g = x % ③  # 个位
    if x == (b**3+s**3+g**3):
        print(x)

分析:

第一空:range()生成的列表左闭右开

第二空:最高位数字=这个数本身//最高位的权重

第三空:最低位数字=这个数本身%10

答案:

1.1000          2.100          3.10

例题6:输入n个整数,将其中的奇数、偶数分别求和。

n = int(input("请输入要计算整数的个数:")) 
s1 = s2 = ① # s1表示偶数的和,s2表示奇数的和
for i in range(1, n+1):
      a = int(input("请输入一个整数:")) 
      if ② == 0:        # 如果是偶数
            s1 = s1+a
      else:
            s2 = ③
print("偶数和为:", s1)
print("奇数和为:", s2)

分析:

第一空:存放奇数和和偶数和的变量的初始值均为0

第二空:判断一个数为偶数的方法

第三空:将每一个奇数加到s2变量中

答案:

1.0          2.a%2          3.s2+a

例题7:计算若干名学生的平均身高(单位,米)

n = int(input("请输入学生人数:"))
s = ①
for i in range(n):
    h = float(input("请输入学生的身高(米):"))
    ② = s+h
s = ③  # 平均身高
print("平均身高(米)为:", s)

分析:

第一空:和变量的初始值

第二空:将某学生的身高加到和变量得到的结果是新的和变量

第三空:总身高/人数

答案:

1.0          2.s          3.s/n

例题8:数学家高斯在很小的时候就能快速算出1+2+3+4+……+100的结果是5050,可以用编程的方式验证结果。

s = ①  # 设置s的初始值
for i in range(1,  ②):  # 只需填一个数字
    s += ③  # 求前i个数之和
print("1+2+3+4+……+100的结果是:", s)

分析:

第一空:和变量的初始值

第二空:range()函数生成的列表区间左闭右开

第三空:s+=i   等效于   s=s+i

答案:

1.0          2.101          3.i

例题9:从前有一个睿智的大臣,他发明了国际象棋,国王想要奖赏他,他推辞不过,最后对国王说:“陛下,请您在这张棋盘的第1个小格里,赏给我1粒麦子,在第2个小格里给2粒,第3小格给4粒,以后每一小格都比前一小格加一倍。请您把棋盘上64个格子中所有的麦粒,都赏给您的仆人吧!”。棋盘上64个格子麦粒的总数计算公式为:请按1颗麦粒约0.05克将这些麦粒数换算成公斤数输出。

n = 0  # n记录所有的麦粒
for i in range(①):    # 此处只需填写一个数
    n += ②        
g = n*0.05
print("大臣要求得到的麦粒是", ③/1000, "公斤")

分析:

第一空:range()函数左闭右开。第一个2**0,最后一个2**63

第二空:求出i所对应的每一项的数

第三空:总克数/1000

答案:

1.64          2.2**i          3.g

例题10:“完数”是指一个自然数恰好等于它的因子(不包含本身)之和。如6的因子为1、2、3,而6=1+2+3,所以6是完数。输入一个正整数,判断该正整数是否为完数。

n = int(input("n="))
s = 0  # 数位和
for i in range(1, n):
  if n % i == ①:    #如果i是n的因子
    s += ②    #将因子累加到s中
if n  ③  s:
  print(n, "是完数")
else:
  print(n, "不是完数")

第一空:i是n的因子,则满足n除以i的余数为0。

第二空:条件满足的因子i加到s中

第三空:判断n本身和因子和s是否相等用==符号

答案:

1.0          2.i          3.==

例题11:根据以下公式求π的近似值。π*π/6=1+1/(2**2)+1/(3**2)+.....+1/(99999**2)

s = ①
for i in range(1, ②):  # 此处仅填一个数
    s += 1/i**2
p = (③)**0.5
print("π的近似值", round(p, 2))

分析:

第一空:和变量的初始值

第二空:range()函数生成的列表左闭右开

第三空:pi的平方=6*s

答案:

1.0          2.100000          3.6*s

例题12:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少路程?第10次反弹多高?

s = 100  # 球下落的高度
h = s / ①  # 球第一次的反弹高度
for n in range(9):
    s = s+2*h
    h = ②  # 反弹回原来高度的一半
print("总共经过路程:", ③)
print("第10次反弹高度:", h)

第一空:原高度的一半=原高度/2

第二空:原高度的一半=原高度/2

第三空:总路程的变量

答案:

1.2          2.h/2          3.s

例题13:小明有1000元要存入银行,请根据输入的存款年数,和银行定期存款年利率(利率可以输入0.01~0.05之间的小数),计算到期后小明可以从银行提取的总金额(保留两位小数)。

y = int(input("请输入存款年数:"))   # y为存款年数
r = float(input("请输入银行定期存款年利率:"))  # r为利率,可以输入0.01~0.05之间的小数
money = 1000
for i in range(1, ①):
   money = money*(②)
print(round(③))   # 输出总金额,保留两位小数

分析:

第一空:range()左闭右开

第二空:下一年的本金=本金*(1+利率)

第三空:round(a,b) #将a保留b位小数

答案:

1.y+1          2.r          3.money,2