Python新手求助:自行编写的登录验证代码无法正常运行
你的代码里有几个关键问题,我帮你一一梳理清楚:
1. 条件判断的逻辑完全写错了
你写的这个判断语句:
if userName == "igoo" or "igor" or "Igoo" or "Igor" and passWord == "b" or "B":
在Python里完全不生效——因为or后面直接跟非空字符串时,会被判定为True,所以不管你输入什么用户名和密码,这个条件都会成立。再加上and的优先级比or高,整个逻辑完全混乱了。
正确的写法应该是检查用户名是否在允许的列表里,同时密码是否符合要求,可以简化成这样:
# 直接匹配指定的大小写组合 if userName in ["igoo", "igor", "Igoo", "Igor"] and passWord in ["b", "B"]:
或者更灵活的(忽略大小写,用户输入大写小写都能匹配):
if userName.lower() in ["igoo", "igor"] and passWord.lower() == "b":
2. print语句的语法错误
你写的:
print: ("Welcome along.")
这里多了个冒号:,正确的print调用应该是:
print("Welcome along.")
3. 登录失败后没有重新进入登录流程(可选优化)
现在的代码如果用户输错密码,只会打印提示然后程序直接结束。你可以在else块里重新调用begin(),让用户能再次尝试登录:
else: print ("Wrong password or username") time.sleep(1) begin() # 重新启动登录流程
修正后的完整代码
import os import time welcomeMessage = "Welcome to free bitcoin application." print(welcomeMessage) time.sleep(1) def begin(): userName = input("Please enter your username...") passWord = input("Please enter your password...") # 修正了拼写错误:passowrd → password # 用更简洁且容错的条件判断 if userName.lower() in ["igoo", "igor"] and passWord.lower() == "b": print("Welcome along.") logged() else: print ("Wrong password or username") time.sleep(1) begin() def logged(): time.sleep(1) print("Alright you in.") begin()
另外提个小细节:你原来的代码里把password拼成了passowrd,虽然不影响运行,但修正后能避免后续维护时的混淆~
初学编程遇到这种小问题太正常了,把这些错误改完之后代码就能正常运行啦,继续加油!
内容的提问来源于stack exchange,提问作者igoo
相关产品推荐
相关产品推荐

