这是我的代码:
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])。
答案 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行。