将此代码转换为python函数

时间:2015-10-07 07:36:39

标签: python python-3.x

这是我的代码:

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?
在功能中唯一应该改变的是名称(例如,' name1' to' name2',' name3')和userQuestions [](例如.userQuestions [0],... [1],... [2])。

1 个答案:

答案 0 :(得分: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,而不是向userQuestions元组添加17行。