2015-10-07 73 views
-1

這是我的代碼:談到這段代碼轉換爲Python功能

name1 = input(userQuestions[0]).lower() 
while name1 == "" or not name1.replace(' ','').isalpha(): 
    name1 = input(userQuestions[0]).lower() 

的 'userQuestions []' 是:

userQuestions = (
    "Give me name 1?\n", 
    "Give me name 2?\n", 
    "Give me name 3?\n", 
    ) 

要使用我的驗證上的所有3個問題,我怎麼放這成一個函數,使其更有效,而不是重複類似的聲明x3?
函數中唯一應該改變的是name(例如'name1'到'name2','name3')和userQuestions [](例如userQuestions [0],... [1], ... [2])。

+0

閱讀文檔:[Python lists](http://www.tutorialspoint.com/python/python_lists.htm),[Python函數](http://www.tutorialspoint.com//python/python_functions.htm ) – Mel

+0

我知道那裏有資源,但我到處尋找特定於我的問題的東西。 - 使每個問題的上述價值發生變化。 – ProGrammer

回答

0

如果我正確理解你,那我想這就是你要找的。這遍歷您userQuestions元組並調用返回新的用戶名,並將其添加到列表功能get_user()users

def get_user(userQuestion): 
    name1 = input(userQuestion).lower() 
    while name1 == "" or not name1.replace(' ','').isalpha(): 
     name1 = input(userQuestion).lower() 
    return name1 

userQuestions = (
    "Give me name 1?\n", 
    "Give me name 2?\n", 
    "Give me name 3?\n", 
    ) 
users = [] 

for i in userQuestions: 
    users.append(get_user(i)) 

print(users) 

你可以改變這一點了一點,因爲你的問題正在發生變化的唯一的事情是多少你可以把這個字符串放在函數中,只有像這樣傳遞數字,

def get_user(x): 
    name1 = input('Give me name ' + x + '\n').lower() 
    while name1 == "" or not name1.replace(' ','').isalpha(): 
     name1 = input('Give me name ' + x + '\n').lower() 
    return name1 

users = [] 

for i in range(3): 
    users.append(get_user(str(i+1))) 

print(users) 

這樣可以更容易地擴展到任意數量的用戶。假如你有20個用戶,你所要做的就是將範圍改爲20,而不是再增加17行到你的userQuestions元組。