gpt4 book ai didi

python - 类型错误 : argument of type 'function' is not iterable

转载 作者:行者123 更新时间:2023-12-01 05:01:23 24 4
gpt4 key购买 nike

错误:

Traceback (most recent call last):
File "ex36.py", line 100, in <module>
start()
File "ex36.py", line 16, in start
giant()
File "ex36.py", line 59, in giant
dead()
File "ex36.py", line 70, in dead
try_again()
File "ex36.py", line 85, in try_again
if "y" in user_input or "yes" in user_input:
TypeError: argument of type 'function' is not iterable

这是出现错误的代码块:

def try_again():
print "Would you like to try again?"
user_input = uput
if "y" in user_input or "yes" in user_input:
start()
elif "n" in user_input or "no" in user_input:
sys.exit()
else:
try_again()

我认为我收到错误是因为它是递归函数,但我在整个游戏中都使用它们,并且它们一直有效,直到我添加了 try_again()。

这是其余的代码,以防有帮助:

    # Role Playing Game I made to practice my Python skills!
import sys

def uput(): # get user input and make it all lowercase
return raw_input("> ").lower()

def start(): #Starts the game
print "You are in room with a left and right door."
print "Which do you choose?"
user_input = uput()
if user_input == "left":
print "You open the door..."
lavapit()
elif user_input == "right":
print "You open the door..."
giant()
else:
print "Try again." + "\n" * 3
start()

def lavapit():
print "Your on the edge of valcano."
mountain(10)
print "One wrong step and you fall into the volcano!"
print "You can walk along the edge to the other side and take the path down to the base"
print "Or return to the room!"
user_input = uput()
if "walk" in user_input or "along" in user_input or "edge" in user_input:
print "You stumble."
print "And fall off into the lava!"
dead()
elif "return" in user_input or "door" in user_input or "go back" in user_input:
start()
else:
print "Try again." + "\n" * 3
lavapit()

def giant():
print "You enter a dark musty room."
print "With very high ceilings."
print "Then you hear... heavy breathing."
print "Do you walk slowly and quitely to your right or left."

right = 0
left = 0
while right <= 4 or left <= 5:
user_input = uput()
if "right" in user_input and right < 3:
print "You edge slowly to the right."
right += 1
left -= 1
elif "left" in user_input and left < 4:
print "You edge closer to the left."
right -= 1
left += 1
elif "right" in user_input and right > 2:
print "You bump into the giant and get eaten alive."
print "The giant says, 'Yum'."
dead()
elif "left" in user_input and left > 3:
print "You reach a dark hole in the wall the size of giant mouse."
print "Do you enter it?"
hole()
else:
print "Try again." + "\n" * 3
giant()
def dead():
print "-" * 30
print "Sorry you loose!"
try_again()

def hole():
user_input = uput()
if "yes" in user_input or "y" in user_input:
print "Congratulations! You won nothing!"
try_again()
elif "no" in user_input or "n" in user_input:
return
else:
hole()

def try_again():
print "Would you like to try again?"
user_input = uput
if "y" in user_input or "yes" in user_input:
start()
elif "n" in user_input or "no" in user_input:
sys.exit()
else:
try_again()


def mountain(x):
i = 2
while x > 0:
print " " * x + "@" * i
x -= 1
i += 2

start()

最佳答案

问题是在函数体的第二行try_again中,您没有调用uput,而是将其分配给user_input。你忘了括号,如果你把它改成这样:

def try_again():
print "Would you like to try again?"
user_input = uput()
if "y" in user_input or "yes" in user_input:
start()
elif "n" in user_input or "no" in user_input:
sys.exit()
else:
try_again()

它会起作用。

读取回溯:

TypeError: argument of type 'function' is not iterable

该消息告诉您,您尝试对 user_input 进行迭代,该迭代是由于 in 语句而发生的。

关于python - 类型错误 : argument of type 'function' is not iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com