我的if-else声明发生了什么? (Python 3.3)

时间:2013-08-20 17:03:30

标签: python if-statement while-loop

我正在为计费程序项目编写条件语句。对于我认识的初学者来说,它有点先进,但我欢迎挑战。无论如何,我打算通过询问用户名和密码来启动程序。所以这是我对该计划的第一次编码。

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的三个选项以外的任何内容,则打印出“无效的用户名”#39;线。由于某种原因,它打印出有效的用户名'然后继续密码提示。此外,如果我输入除密码选择以外的任何内容,它将始终读出有效密码'提示。

当用户输入除三个选项之外的其他内容时,如何循环用户名提示?我应该使用while语句而不是if-else,还是可以将while语句放在if-else语句的末尾以再次触发提示?

哦,我知道你不能告诉我,因为我在问题中使用了糟糕的格式,但我确实在脚本本身上使用了适当的缩进。

4 个答案:

答案 0 :(得分:4)

布尔表达式本身的问题是它们总是为真。

if a == 'b' or 'c'if (True|False) or 'c'类似,由于'c'truthy,因此无论第一个表达式(a == 'b')如何,它都为真。

您要么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.")

答案 1 :(得分:4)

您需要将您的名字与所有名称进行比较。问题出在这里:

if username == "cking" or "doneal" or "mcook":

Python首先将其评估为true或false,然后使用某些内容执行or,在此上下文中评估为True,最后您的比较如下所示:

if username == "cking" or True or True:

最终成为True。建议您使用:

if username == "cking" or username == "doneal":

或只是做:

if username in ("cking", "doneal"):

这同样适用于密码。

答案 2 :(得分:0)

我认为此代码可以帮助您

from sys import argv

    username=raw_input("Enter user name")
    password=raw_input("Enter password")

    if(username=="VARUN" or "Varun" or "varun"):
        print "\n\tvalid Username "
    else:
        print "\n\tUsername already existes"

    if (password=="@ppu1131986"):
        print "\n\tPasssowrd matched"
    else:
        print "\n\tWeak Password"
~                              

答案 3 :(得分:0)

print ("Hello, welcome to Facebook, please enter your username and password to access.")

username = input ("Enter username:")

if username == "cking":
  print ("Valid username.")
else:
  print ("Invalid username. Please try again.") 

  username = input ("Enter username:")

if username == "cking":
  print ("Valid username.")
else:
  print ("Invalid username. Please try again.") 


password = input ("Enter password:")

if password ==  "tupac1":
  print ("Valid password. User has been verified.")
else:
  print ("Invalid password. Access denied.")

  password = input ("Enter password:")

if password ==  "tupac1":
  print ("Valid password. User has been verified.")
else:
  print ("Invalid password. Access denied.")