all。Python新手。
简单地说,这里是我的基本想法:
我想创建一个";登录";功能,用户必须从预设元组中输入有效的用户名。接下来,一旦输入了有效的名称,他们将被要求输入相应的代码名称,并将其保存到词典中。(我有一种感觉,我把这件事弄得太复杂了,或者也许词典完全是错误的想法,所以任何关于如何简化的建议都会很棒)。
real_names = ("JD", "JM" "JC")
player_ids = {"JD":"Arrow","JM":"Bullet","JC":"Blade"}
while True:
# user must input a name from the real_names tuple
name = input("User unidentified. Please input your name: ")
# if username is not in tuple, rerun script
if not name in real_names:
print("Invalid username detected")
continue
print(f"Positive ID! Welcome, {name}")
break
上面的代码运行得很好。但接下来,我想进行一个新的输入,要求玩家ID与之前输入的名称相匹配。在伪代码中,类似这样的东西:
# While True Loop:
id = input("Please confirm user Code Name: ")
#ID must correspond to keyword in dictionary
if ID value does not match username Keyword:
print("Invalid ID")
continue
print("Identity confirmed!")
break
我走的路对吗?如果是,我将如何对第二部分进行语法分析?如果这本字典完全是错误的想法,请提供一个好的替代品。非常感谢!
player_ids[name]
是您要查找的值。所以,你想要这样的东西:
if id != player_ids[name]:
print("invalid ID")
此外,字典已经记录了玩家的名字,所以您不需要real_names
元组。
前面的答案非常有效,因为您是根据字典中的键查找值的。最后,有一个小提示,最好避免以保留的变量和关键字命名变量,也就是说,使用另一个变量名,以防在程序中再次使用id()
函数。