因此,我正在为我正在制作的问答游戏开发一名得分管理员。
score = 0
bolivia = str(input("Name a capital of Bolivia."))
if (bolivia == "La Paz" or "Sucre"):
print ("Correct")
score = score + 50
print (score)
else:
print ("You/re incorrect")
input ("Press enter to exit;)")
问题是,如果我得到错误的答案,则打印出来:
Correct
50
Press enter to exit;)
我不知道自己做错了什么。任何反馈都表示赞赏。
答案 0 :(得分:3)
声明
if (bolivia == "La Paz" or "Sucre"):
有以下两个陈述:
1)bolivia == "La Paz"
2)"Sucre"
后一个语句"Sucre"
是一个Truthy value的字符串,因此if
语句作为一个整体将在它们与or
关键字连接在一起时传递。
您可能想要评估的是
if bolivia == "La Paz" or bolivia == "Sucre":
或者考虑in
关键字:
if bolivia in ("La Paz", "Sucre"):
答案 1 :(得分:1)
源代码的问题在于构造if语句的方式。
您应该将其编辑为如下所示:
if bolivia == "La Paz" or bolivia == "Sucre":
请注意,您应该再次使用玻利维亚变量。
答案 2 :(得分:0)
问题在于行if (bolivia == "La Paz" or "Sucre"):
or "Sucre"
将始终评估为true。
您需要检查if (bolivia == "La Paz" or bolivia == "Sucre"):
答案 3 :(得分:0)
首先,您对语句的问题是,当您执行布尔逻辑(此处为and
/ or
语句)时,它将被计算为表达式。
选择您拥有的第三行:
if (bolivia == "La Paz" or "Sucre"):
这里有布尔逻辑运算符or
。这意味着它将评估每一方(或者更确切地说是评估第一方......如果这是正确的,它会忽略第二个语句......但这只是额外信息的一小部分)。
bolvia == "La Paz"
是一个有效的表达。你问的是bolvia是否等于字符串“La Paz”。
"Sucre"
不是有效的声明。它没有任何意义,你必须将它形成一个表达式。
bolvia == "La Paz" or bolvia == "Sucre"
将是两个正确的表达式,可以通过or
语句进行评估。
现在您应该具有if
声明的预期行为。
我建议通过使其不区分大小写来使其更加万无一失。我的意思是你可以在测试之前将字符串更改为正确的格式。这将允许"sucre"
,"la paz"
和其他可能性。
这会将您的初始陈述更改为
bolivia = str(input("Name a capital of Bolivia.")).title()
现在,在测试语句中,您可以输入la paz
,然后接收La Paz
作为输出。
score = score + 50
也可以缩短为score += 50
,因为这是前者的简写。
这会将您的代码更改为以下内容:
score = 0
bolivia = str(input("Name a capital of Bolivia.")).title()
if (bolivia == "La Paz" or bolivia == "Sucre"):
print ("Correct")
score += 50
print (score)
else:
print ("You/re incorrect")
input ("Press enter to exit;)")
希望这有帮助。