即使答案错误,Python的分数也会增加

时间:2018-05-14 02:50:13

标签: python python-3.x

因此,我正在为我正在制作的问答游戏开发一名得分管理员。

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;)

我不知道自己做错了什么。任何反馈都表示赞赏。

4 个答案:

答案 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;)")

希望这有帮助。