今天学习的循环嵌套:
dog_cal = 140
bun_cal = 120
ket_cal = 80
mus_cal = 20
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 = (bun *bun_cal)+(dog *dog_cal)+\
(ketchup *ket_cal)+(mustard *mus_cal)+\
(onion *onion_cal)
print "#",count,"\t",
print dog ,"\t",bun, "\t",ketchup,"\t",mustard, "\t", onion,
print "\t" ,total_cal, "\t"
count = count + 1
下面是idle输出的显示:
>>> ================================ RESTART ================================
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
问一下为什么会这样,怎么改呢。先谢谢了。
你的代码没有缩进,运行结果markdown也用错了。
关键是,你想做什么也没说,哪里不符合你的预期不知道。没法回答你的问题。
只能就你的程序说,它为什么这么输出。
因为你有5个循环,每个循环循环2次,所以对于最内侧的循环来说一共执行了2*2*2*2=16次,每次循环2次,输出0 1,所以最内层是
0 1 0 1 ... 一共16次0 1
倒数第二层循环循环了8次,每次循环2次,而每一次又被最内侧循环重复2遍,所以是8个 0 0 1 1
再外侧是4个0 0 0 0 1 1 1 1
...
最外侧是16个016个1。
这个程序把所有食物的全组合枚举出来了,然后计算了卡路里的和。
汉堡140,包子120,番茄酱 80 ... 然后最后一列是所有为1的项目的和,所以是0 40 20 60 80 ...