2016-06-11 20 views
-4

コードを書いてからしばらく経っていますので、もう一度やり直そうとしていますが、私のコードには問題があります。Python - if文で構文エラーが見つかりません

ユーザーの入力を受け取り、すべての文字が空白でなく、長さが12未満であるかどうかを確認する簡単なプログラムを作成したかったのです。17行目に「無効な構文」エラーコードを実行し、ユーザ名が単なる文字で12文字未満であるかどうかをチェックするif文の後にコロンを指します。私はそれが前にラインにエラーがあることを意味しますが、どこで?

#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!" 

UPDATE - 私はもう少しコードをいじって、私は変更さ唯一の事はifへの条件付きwhileた:

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 

このようなnoobのために申し訳ありません。また、スタックオーバーフローに参加しました。

+2

愚かな質問:どちらか**が**ライン17ですか?逐語で完全なエラーを追加してください! (それはちょっとしたことですが、ちょっとしたことです) –

+0

関数の外側に 'return'ステートメントがあります。 'while check_valid(uinput):'ブロックで 'return True'が何をすると思いますか? 'return'は関数*内でのみ意味を持ち*、あなたの' while'ループは関数内にありません。 –

+0

ありがとうございました!このすべてが非常に役に立ちます。また、@MarcusMüller、17行目は 'if(usrnameinput!= usrnameinput.isalpha())または(len(usrnameinput)> = 12)です:' – Bearclaw

答えて

0

私はこれがあなたの望むものだと信じています。 check_valid()と一般的なmain()関数の2つの関数に分割することをお勧めします。

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() 
+0

私はあなたの提案でそれを実行しようとするとこのエラーが発生します。 'File" Refresher in Python.py "39行目 return True SyntaxError: '関数の外に戻ります'、空白行です。 – Bearclaw

+0

私はこれに干渉する他のコードがあると思います。あなたが投稿したものを正確に走らせたら、それは起こってはいけません。ちょうど私が掲示したコードの中には、関数の外に 'return'はありません。 –

+0

私は、プログラムを再起動するまで、私のIDEがコードを正しく実行しないことが間違っていると思います。それは働いた、ありがとう。 – Bearclaw

関連する問題