2016-01-13 54 views
1

我正在爲遊戲或其他東西或其他代碼編寫一個模擬註冊頁面,在代碼結尾處我想確認用戶輸入的數據是否正確。我通過鍵入來做到這一點。如何從一開始循環一個程序

#User sign up page. 

#Getting the user's information. 
username = input ("Plese enter your first name here: ") 
userage = input ("Please enter your age here: ") 
userphoneno = input ("Please enter your home or mobile number here: ") 

#Showing the inforamtion. 
print ("\nIs the following correct?\n") 
print ("•Name:",username) 
print ("•Age:",userage) 
print ("•Phone Number:",userphoneno) 

#Confirming the data. 
print ("\nType Y for yes, and N for no. (Non-case sensitive.)") 
answer = input ("• ") 
if answer == 'Y'or'y': 
    print ("Okay, thank you for registering!") 
    break 
else: 
    #Restart from #Getting the user's information.? 

我的問題出現在代碼的最後一節。當輸入「Y或y」時程序就會正常結束,但如果輸入「N或n」,我似乎無法解決如何讓用戶輸入數據。我嘗試了一個While循環,我猜是解決方案,但我似乎無法讓它正常工作。

任何幫助將不勝感激。謝謝!

+4

向我們展示您嘗試的while循環?另外,答案=='Y'or'y''將始終評估爲真。看看[這](http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values)。 –

回答

1

你應該使用while循環!用一個函數包裝處理用戶輸入的部分,然後如果用戶沒有迴應則繼續調用該函數。順便說一下,您應該使用raw_input而不是input。例如:

#User sign up page. 

#Getting the user's information. 

def get_user_info(): 
    username = raw_input("Plese enter your first name here: ") 
    userage = raw_input("Please enter your age here: ") 
    userphoneno = raw_input("Please enter your home or mobile number here: ") 

    #Showing the inforamtion. 
    print ("\nIs the following correct?\n") 
    print ("Name:",username) 
    print ("Age:",userage) 
    print ("Phone Number:",userphoneno) 
    print ("\nType Y for yes, and N for no. (Non-case sensitive.)") 
    answer = raw_input("") 
    return answer 

answer = get_user_info() 
#Confirming the data. 
while answer not in ['Y', 'y']: 
    answer = get_user_info() 

print ("Okay, thank you for registering!") 
+0

由於OP(原始海報)正在使用Python 3,因此您需要使用'input'而不是'raw_input'。(您可以通過他爲每個'print'語句使用的括號來判斷,因爲省略這些將會打印元組。 ) – mbomb007

+0

或者如果你願意,你可以在函數get_user_info()中添加while循環來使用遞歸。 –

+0

'raw_input()'在Python 3中不可用。請更改您的代碼以使用'input()',因爲海報正在使用Python 3.如果您實際運行了自己的代碼,則會看到打印錯誤if Python 2,或者'raw_input'在Python 3中無效。 – mbomb007

相關問題