我正在为计费程序项目编写条件语句。对于我认识的初学者来说有点先进,但是我欢迎挑战。无论如何,我计划通过询问用户名和密码来启动程序。因此,这是我对该程序的第一个编码。
print ("Hello and welcome to Billing Pro, please enter your username and password to access the database.") username = input ("Enter username:") if username == "cking" or "doneal" or "mcook": print ("Valid username.") else: print ("Invalid username. Please try again.") password = input ("Enter password:") if password == "rammstein1" or "theory1" or "tupac1": print ("Valid password. User has been verified.") else: print ("Invalid password. Access denied.")
现在,当我运行此代码时,如果我键入了用户名的三个选项之外的其他选项,Python会打印出“无效的用户名”行。现在由于某种原因,它会打印出“有效的用户名”,然后继续输入密码提示。另外,如果我输入了除密码选项以外的任何内容,它将始终读出“有效密码”提示。
另外,当用户输入三个选项之外的其他内容时,如何循环用户名提示?我应该使用while语句代替if-else还是可以在if- else语句的末尾放置while语句以再次触发提示?
哦,我知道您说不清楚,因为问题中我的格式很糟糕,但是我确实在脚本本身上使用了适当的缩进。
布尔表达式本身的问题在于它们始终为True。
if a == 'b' or 'c'就像if (True|False) or 'c',并且由于'c'是true,所以不管第一个表达式(a == 'b')都是True 。
if a == 'b' or 'c'
if (True|False) or 'c'
'c'
a == 'b'
您要么想要,a == 'b' and a == 'c'…要么更简洁a in {'b', 'c'…},它检查是否a是集合的成员。
a == 'b' and a == 'c'…
a in {'b', 'c'…}
a
如果要循环,请使用循环:)
while username not in {"cking", "doneal", "mcook"}: print ("Invalid username. Please try again.") username = input ("Enter username:") print ("Valid username.")