建立一个Pypet(Tatiana Tylosky)双“For”循环

2024-09-18 22:14:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚完成了Tatiana Tylosky's tutorial for Python并创建了我自己的Python pypet。在

在她的教程中,她展示了如何执行“for”循环,包括:

cat = {
    'name': 'Fluffy',
    'hungry': True,
    'weight': 9.5,
    'age': 5,
    'photo': '(=^o.o^=)__',
}

mouse = {
    'name': 'Mouse',
    'age': 6,
    'weight': 1.5,
    'hungry': False,
    'photo': '<:3 )~~~~',
}

pets = [cat, mouse]    

def feed(pet):
    if pet['hungry'] == True:
        pet['hungry'] = False
        pet['weight'] = pet['weight'] + 1
    else:
        print 'The Pypet is not hungry!'

for pet in pets:
    feed(pet)
    print pet

我想知道如何重复这个“for”循环,这样我就可以同时给猫和老鼠喂食三次。我读过的大多数Python指南都说,您必须执行以下操作:

^{pr2}$

然而,在本例中,“for”循环使用列表“pets”,所以不能使用上面的代码?我该怎么办?我试过一些古怪的东西,比如:

for pet in pets(1,4):
    feed(pet)
    print pet

或者:

for pet in range(1,4):
    feed(pet)
    print pet

当然,它不起作用。我该怎么做才能让“for”循环重复?在


Tags: nameinfalsetrueforagefeedcat
3条回答

我将把你的提要for循环放在一个迭代三次的for循环中。我会用一些类似的东西:

for _ in range(3):
    for pet in pets:
        feed(pet)
        print pet

for _ in range(3)迭代三次。请注意,我使用_,因为您没有使用迭代变量,请参见例如What is the purpose of the single underscore "_" variable in Python?

编程语言允许您将一种结构嵌入另一种结构中。将当前循环置于一个运行三次的for循环下,正如@intboolstring的答案已经显示的那样。现在你还应该做两件事:

  1. 不要与True进行比较。if pet["Hungry"] == True:最好写为

    if pet["Hungry"]:
        ...
    
  2. 切换到python3。你为什么要学一种过时的语言?

如果不想使用嵌套for循环,还可以临时扩展宠物列表,如下所示:

for pet in pets * 3:
    feed(pet)

这是因为pet * 3创建了以下列表:[cat, mouse, cat, mouse, cat, mouse]

如果你需要对喂食顺序有更多的控制(例如先喂所有猫,然后喂所有老鼠),嵌套for-loop方法可能更好。在

相关问题 更多 >