我正在制作一个基于文本的小游戏来练习我的python技能。我正在努力获取if语句,以根据用户输入的内容显示正确的结果。
weapon_choice = str(input("You can choose between three weapons to defeat the beast!"
" Press 1 for Axe, 2 for Crossbow, 3 for Sword."))
if input(1):
print("You chose the Axe of Might")
elif input(2):
print("You chose the Sacred Crossbow")
else:
print("You chose the Elven Sword")
我希望输出会问我一个数字(1、2或3),然后打印与该数字关联的字符串。相反,当我输入1时,无论我键入什么数字,它都会先输出1,然后输出2,然后输出与数字3相关联的字符串(“ else”选项)。我不明白为什么?
Greetings, weary wanderer.
Welcome to Freyjaberg. Choose your weapon.
You can choose between three weapons to defeat the beast! Press 1 for Axe, 2 for Crossbow, 3 for Sword.1
1
2
You chose the Elven Sword
Process finished with exit code 0
答案 0 :(得分:1)
尝试一下:
weapon_choice = input("You can choose between three weapons to defeat the beast!\nPress 1 for Axe, 2 for Crossbow, 3 for Sword.\n")
if weapon_choice=='1':
print("You chose the Axe of Might")
elif weapon_choice=='2':
print("You chose the Sacred Crossbow")
else:
print("You chose the Elven Sword")
注意:
weapon_choice
无需强制转换为str
格式,因为input()
已经采用字符串格式。input(1)
或input(2)
,它基本上都会提示用户提供其他输入,而不是检查条件。输出:
michael@arkistarvh:/$ python text_game.py
You can choose between three weapons to defeat the beast! Press 1 for Axe, 2 for Crossbow, 3 for Sword.
3
You chose the Elven Sword
答案 1 :(得分:1)
您应该改为:
weapon_choice = input("You can choose between three weapons to defeat the beast! \n " + " Press 1 for Axe, 2 for Crossbow, 3 for Sword.")
if weapon_choice == '1':
print("You chose the Axe of Might")
elif weapon_choice == '2':
print("You chose the Sacred Crossbow")
elif weapon_choice == '3':
print("You chose the Elven Sword")
else:
print("Invalid input selected")
这样做的原因是input(..)
导致字符串被解析,因此str(..)
周围不需要input(..)
。此外,您应该具有传递无效输入的条件,以便将错误的根本原因更清楚地通知用户。
(请注意\n
表示新行的开始)
答案 2 :(得分:1)
那不是输入在Python中的工作方式。
您正确地假设input(“ some text”)将在第一行上打印该文本(并将结果存储在变量robot_choice中),那么为什么您认为input(number)将返回一个布尔值告诉您输入的是那个数字吗?
相反,它的作用是再次打印数字并返回一个空字符串(因为您可能只是按Enter键),因此前两个ifs为False且程序进入else时,打印“ Invalid input selected”。
第一次输入的结果将存储在武器选择中,因此您应该对该变量进行比较。
答案 3 :(得分:0)
if input(1)
使用参数input
调用1
函数,然后使用响应来测试是否在其块中执行代码。由于执行input
只是将其参数输出到终端,并返回用户输入的任何内容作为响应,因此您的程序的行为与代码所暗示的完全相同。
由于您已经将用户对第一个问题的回答存储在名为weapon_choice
的变量中,因此应将if input(1)
替换为if weapon_choice == '1'
-其他变量也应相同。
答案 4 :(得分:0)
您可以尝试此脚本
weapon_choice = str(input("You can choose between three weapons to defeat the beast!"
" Press 1 for Axe, 2 for Crossbow, 3 for Sword."))
if weapon_choice == '1':
print("You chose the Axe of Might")
elif weapon_choice == '2':
print("You chose the Sacred Crossbow")
else:
print("You chose the Elven Sword")