Python-Can';在if语句中找不到语法错误
我已经有一段时间没有写代码了,所以我正试图重新开始,但我的一些代码遇到了问题 我想写一个简单的程序,接受用户的输入并检查它是否都是没有空格的字母,长度小于12。每当我运行代码时,第17行总是出现“无效语法”错误,指向if语句后的冒号,该语句检查用户名是否仅为字母且少于12个字符。我知道这意味着之前的线路有错误,但在哪里Python-Can';在if语句中找不到语法错误,python,if-statement,syntax-error,Python,If Statement,Syntax Error,我已经有一段时间没有写代码了,所以我正试图重新开始,但我的一些代码遇到了问题 我想写一个简单的程序,接受用户的输入并检查它是否都是没有空格的字母,长度小于12。每当我运行代码时,第17行总是出现“无效语法”错误,指向if语句后的冒号,该语句检查用户名是否仅为字母且少于12个字符。我知道这意味着之前的线路有错误,但在哪里 #import the os module import os #Declare Message print "Welcome to Userspace - Your On
#import the os module
import os
#Declare Message
print "Welcome to Userspace - Your One-Stop Destination to Greatness!" + "\n" + "Please enter your username below." \
+ "\n" + "\n" + "Username must be at least 12 characters long, with no spaces or symbols." + "\n" + "\n"
#uinput stands for user's input
uinput = raw_input("Enter a Username: ")
#check_valid checks to see if arguement meets requirements
def check_valid(usrnameinput):
if (usrnameinput != usrnameinput.isalpha()) or (len(usrnameinput) >= 12):
os.system('cls')
print "Invalid Username"
return False
else:
os.system('cls')
print "Welcome, %s!" % (usrnameinput)
return True
#Asks for username and checks if its valid
print uinput
check_valid(uinput)
#Checks input to check_valid is correct, and if it is not, then ask for new username input and checks it again
while check_valid(uinput):
return True
break
else:
print uinput
check_valid(uinput)
print "We hope you enjoy your stay here at Userspace!"
更新-我对代码做了更多的修改,唯一的修改是,而条件是if
:
print uinput
check_valid(uinput)
#Checks input to check_valid is correct, and if it is not, then ask for new username input and checks it again
if check_valid(uinput):
print uinput
check_valid(uinput)
print "We hope you enjoy your stay here at Userspace!"
我运行了此代码,但却出现了以下错误:
File "Refresher In Python.py", line 39
return True
SyntaxError: 'return' outside function
对不起,我是个笨蛋。今天也加入了堆栈溢出。我相信这就是你想要的。我建议将其拆分为两个函数,check_valid()和一个常规main()函数
def check_valid(usrnameinput):
if (not usrnameinput.isalpha()) or (len(usrnameinput) >= 12):
print("Invalid name")
return False
else:
print("Welcome!")
return True
def main():
uinput = raw_input("Enter a Username: ")
while not check_valid(uinput): #Repeatedly asks user for name.
uinput = raw_input("Enter a Username: ")
main()
愚蠢的问题:哪一个是第17行?在逐字记录中添加完整错误!(顺便说一句,这是一件很明显的事情)您有一个return
语句,它位于函数之外。检查有效(uinput):
块时,您希望在中返回True
做什么return
仅在函数中有意义,而您的while
循环不在函数中。感谢您的所有回复!所有这些都非常有用。另外,@MarcusMüller,第17行是如果(usrnameinput!=usrnameinput.isalpha())或(len(usrnameinput)>=12):
@Bearclaw不要把它放在评论中,把它放在实际问题中。并添加完整错误。此处发布的代码除了使用我提到的return
之外没有语法错误。所有的check\u valid
函数都解析得很好。当我根据您的建议尝试运行它时,我遇到了这个错误:文件“Refresher In Python.py”,第39行return True SyntaxError:“return”在函数
之外,这是一个空行。我相信您还有其他一些代码会干扰这一点。如果你完全按照我发布的内容运行,那就不应该发生。我刚刚发布的代码中没有“return”外部函数。我认为我的IDE有问题,在我重新启动程序之前,代码无法正确运行。它成功了,谢谢。如果我的代码有帮助,如果你接受答案,我将不胜感激。否则,有一个伟大的:)