因为现在都关心营养问题,我们计算上一弹中都的卡路里问题,现在需要的就是每一项的卡路里数,然后可以在最内层循环中把每一项的卡路里数加起来。
下面的代码设置了每一项有多少卡路里:
dog_cal = 140
bun_cal = 120
mus_cal = 20
ket_cal = 80
onion_cal = 40
我们只需要把每一个选择的卡路里加起来,因为我们每个菜单的组合项加起来,所以我们直接将数量乘以每一项的卡路里。如下:
tot_cal = (dog*dog_cal) + (bun* bun_cal) + \
(mustard * mus_cal) + (ketchup * ket_cal) + \
(onion*onion_cal)
反斜杠 \ 的作用是,在一个很长的语句中,在一行里放不下,就使用反斜线字符来告诉python ,这一行还没有结束,下一行的内容也是这一行的一部分。
# 程序清单11-7 计算卡路里的热狗程序
dog_cal = 140
bun_cal = 120
mus_cal = 20
ket_cal = 80
onion_cal = 40
# 列出热狗各部分的卡路里
print('\tDog \tBun \tKetchup \tMustard \tOnions \tCalories')
count = 1
for dog in [0,1]:
for bun in [0,1]:
for ketchup in [0,1]:
for mustard in [0,1]:
for onion in [0,1]:
total_cal = (dog*dog_cal) + (bun* bun_cal) + \
(mustard * mus_cal) + (ketchup * ket_cal) + \
(onion*onion_cal)
print('#' ,count, '\t',end=' ')
print(dog, '\t', bun, '\t',ketchup, '\t',end=' ')
print(mustard, '\t',onion,end=' ')
print('\t',total_cal)
count = count +1
结果如下:
>>>
================ RESTART: D:/资料/study/learn python/计算卡路里热狗程序.py ================
Dog Bun Ketchup Mustard Onions Calories
# 1 0 0 0 0 0 0
# 2 0 0 0 0 1 40
# 3 0 0 0 1 0 20
# 4 0 0 0 1 1 60
# 5 0 0 1 0 0 80
# 6 0 0 1 0 1 120
# 7 0 0 1 1 0 100
# 8 0 0 1 1 1 140
# 9 0 1 0 0 0 120
# 10 0 1 0 0 1 160
# 11 0 1 0 1 0 140
# 12 0 1 0 1 1 180
# 13 0 1 1 0 0 200
# 14 0 1 1 0 1 240
# 15 0 1 1 1 0 220
# 16 0 1 1 1 1 260
# 17 1 0 0 0 0 140
# 18 1 0 0 0 1 180
# 19 1 0 0 1 0 160
# 20 1 0 0 1 1 200
# 21 1 0 1 0 0 220
# 22 1 0 1 0 1 260
# 23 1 0 1 1 0 240
# 24 1 0 1 1 1 280
# 25 1 1 0 0 0 260
# 26 1 1 0 0 1 300
# 27 1 1 0 1 0 280
# 28 1 1 0 1 1 320
# 29 1 1 1 0 0 340
# 30 1 1 1 0 1 380
# 31 1 1 1 1 0 360
# 32 1 1 1 1 1 400
在这一弹 ,我们学到了以下内容
1 嵌套循环
2 可变循环
3 排列和组合
1 python 中如何建立可变循环?
2 python 中如何建立嵌套循环?
3 下面的代码总共会打印出多少个※号:
for i in range(5):
for j in range(3):
print('*',end=' ')
print( )
4 第3题中的代码会得到什么输出?
5 如果一个决策树有4 层,每层有两个选择,共有多少种可能的选择(决策树有多少条路径)?
1 还记得以前创建的倒计时定时器程序吗?
#程序清单8-6 你准备好了吗
import time
for i in range(10,0,-1):
print(i)
time.sleep(1)#等待一秒
print('开始')
使用一个可变的循环修改程序,这个程序要询问用户向下计数应当从哪里开始,比如:
倒计时器:需要多少秒?:4
4
3
2
1
开始
2 根据第1 题写的程序,让它除了打印各个数之外还要打印一行星号,如下:
倒计时器:需要多少秒?:4
4 * * * *
3 * * *
2 * *
1 *
开始
(提示,可能需要一个嵌套循环)