我的编码时间不长(不到3周),我想测试并尝试基于文本的游戏。我可能做得很差,但在面对决定时我试图在第一个决定中嵌套另一个决定。但是当我尝试做出决策1的选项B时,它会尝试运行一个嵌套在决策1的选项A下的决定,这会导致问题。我会告诉你我的意思:
kill1 = input("Attack old man? (y/n) ")
if kill1 == "y":
print("You strike the old man with all your force")
time.sleep(1)
print("Old Man staggers back, his right arm crippled")
else:
print("Thanks for the staff")
if kill1 == "y":
kill2 = input("Strike again or run away? (s/r) ")
if kill2 == "s":
print("You swing the staff into the mans ribs")
time.sleep(1)
print("The man falls to the ground, incapacitiated")
else:
print("You run away into the woods")
输出/错误:
Attack old man? (y/n) n
Thanks for the staff
Traceback (most recent call last):
File "/Users/alex/Desktop/game.py", line 28, in <module>
if kill2 == "s":
NameError: name 'kill2' is not defined
很抱歉,如果格式不正确,我很安静,文字选项会让我感到困惑。
答案 0 :(得分:1)
问题在于:
if kill1 == "y":
kill2 = input("Strike again or run away? (s/r) ")
if kill2 == "s":
print("You swing the staff into the mans ribs")
如果kill1
不是"y"
,则永远不会为变量kill2
分配值。
看起来您应该缩进代码,以便if kill2 == "s"
块位于if kill1 == "y"
块内,如下所示:
if kill1 == "y":
kill2 = input("Strike again or run away? (s/r) ")
if kill2 == "s":
print("You swing the staff into the mans ribs")