如何修正IF / ELSE声明?

时间:2019-09-12 10:58:14

标签: python python-3.x

我正在尝试创建一个授权过程,尽管未将名称分配给该未授权变量,它始终显示未授权名称。

我尝试了不同的代码组织方式,即不同的顺序,但是问题并没有得到改善。

Tessa=str
un = Tessa
n1=str
n2=str
input(n1("What is the name of player one?"))
if n1 == un:
    print("Name unauthorised, try again")
else:
    print ("Name authorised")
    input(n2("What is the name of player two?"))
    if n2 == un:
        print("Name unauthorised, try again")
    else:
        print("Name authorised")
        print("Welcome")

我希望除Tessa之外的任何其他输入名称都导致出现“名称已授权”这一短语,但会打印未授权的消息。”

3 个答案:

答案 0 :(得分:1)

我不理解语句n1 = str。请检查我的代码。

un = 'Tessa'

n1 = input("What is the name of player one?")
if n1 == un:
    print("Name unauthorised, try again")
else:
    print ("Name authorised")

    n2 = input("What is the name of player two?")
    if n2 == un:
        print("Name unauthorised, try again")
    else:
        print("Name authorised")
        print("Welcome")

,结果将如下所示。

What is the name of player one? lam
Name authorised
What is the name of player two? rio
Name authorised
Welcome

答案 1 :(得分:1)

您显然是Python的新手,因此,您应该修复以下问题:

  • Python不需要变量具有某种类型。不需要使用n1 = str
  • 如果要分配实际的字符串值,可以使用引号"my string value"
  • 如果您想进行重复检查,请作为循环的一部分
  • 如果要存储多个值,请使用列表。 (例如玩家名称)
  • 如果您要检查多个值(可能有多个未授权名称),请使用列表。

鉴于这些,请考虑以下代码片段:

unauthorised_names = ["Tessa"]

player_names = []

while len(player_names) < 2:
    name = input("Please enter a name for player {}:".format(len(player_names) + 1))
    if name in unauthorised_names:
        print("Unauthorised name, please try again")
    else:
        player_names.append(name)

print(player_names)

unauthorised_names包含所有无法输入的名称。可以是一个,也可以是很多。

player_names包含玩家的姓名。

运行它,直到获得足够数量的有效玩家名称为止,并带有while循环

您以输入播放器的编号作为参数

检查它是否在无效名称列表中,如果不是,请存储它。

一旦名称正确,就可以继续执行程序。

Try it for yourself!

答案 2 :(得分:0)

要进行输入并将值保留在n1中,您需要执行以下操作:

n1 = str(input("What is the name of player one?"))

此外,我不知道您要带着n1 = str等去哪儿,所以我建议您废弃它。