Python-Can';在if语句中找不到语法错误

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

我已经有一段时间没有写代码了,所以我正试图重新开始,但我的一些代码遇到了问题

我想写一个简单的程序,接受用户的输入并检查它是否都是没有空格的字母,长度小于12。每当我运行代码时,第17行总是出现“无效语法”错误,指向if语句后的冒号,该语句检查用户名是否仅为字母且少于12个字符。我知道这意味着之前的线路有错误,但在哪里

#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有问题,在我重新启动程序之前,代码无法正确运行。它成功了,谢谢。如果我的代码有帮助,如果你接受答案,我将不胜感激。否则,有一个伟大的:)