第9课 for循环应用实例
任务:棋盘与麦粒
第1格放1粒麦粒,第2格放2粒麦粒,第3格放4粒,第4格放8粒,以后每一格的数量都比前一格增加一倍,摆满64格就够了。
填写下表,找一找每格麦粒数和循环次数的关系
{5940675A-B579-460E-94D1-54222C63F5DA}循环变量i
单格麦粒数n
总数s
0
1
1
1
n=2**1
2
n=2**2
3
n=2**i
4
5
……
……
……
观察规律,写出n和s的数学表达式:
n=2**i
s=s+n
尝试完善程序,进行编译测试:
s=1
for i in range(1,64):
s=s+n
n=2*i
print(s)
s=1
for i in range(1,64):
s=s+n
n=2*i
print(s)
尝试完善程序,进行编译测试:
for循环知识链接:
计数器:在算法执行过程中,用来记录某种事件发生次数的变量。1、计数器的初值通常置为0。2、循环体中的计数语句格式通常为i=i+1.
累加器:在算法执行过程中,用来生成 并存储数据累加和的变量。1、累加器的初值通常置为0;2、循环体中的累加语句格式通常为s=s+x。
尝试可将麦粒重量转化为吨数,试完善程序,进行编译测试:
输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153 = 13 + 53 + 33 。
【分析】
(1)本题需要对100 ~ 999范围内的所有数一一进行判断。
(2)本题的变量 i 既是循环变量,同时也是被判断的数。
(3)每次循环过程中需要用 if 语句进行条件判断。因此本题也是循环嵌套选择的结构。
提问:
变量 i 是一个三位整数,例如 i = 123
(1)请写出分离 i 的百位数的表达式。
(2)请写出分离 i 的十位数的表达式。
(3)请写出分离 i 的个位数的表达式。
程序如下:
"""
num = int(input("请输入一个三位数:"))
# print('%s*10^2+%s*10+%s' % (num[0], num[1], num[2]))
gw = num%10
sw = (num/10)%10
bw = num/100
total = gw*gw*gw + sw*sw*sw + bw*bw*bw
if( total == num):
print("是水仙花数")
else:
print("不是水仙花数")
"""
shuixianhua=[]
for i in range(1,10):
for j in range(10):
for k in range(10):
if i*i*i + j*j*j + k*k*k == 100*i + 10*j + k:
shuixianhua.append(100*i + 10*j + k)
for i in shuixianhua:
if i == shuixianhua[-1]:
print(i)
else:
print(i, end = ',')
总结
同学们,请你回想一下,这节课你有什么收获