如何根据 python 中给出的以下语句使用列表理解从用户那里获取有效且特定数量的输入
How to take valid and specific number of inputs from the user using list comprehension as of the statement given below in python
Ai=([int(x) for x in input().split()])
使用上述语句,我想从用户输入的字符串中获取一个列表。
我想限制用户输入的条目数。假设 use 给出了一个条目,其中有 5 个数字,由空格 space 分隔。拆分后我得到 5 个不同的数字,但我想将输入限制为仅 4 个数字。如何使用上述语句实现此目的?如果不是,那么我如何在 python?
的一行中输入不同的数字(假设 4)
您有多种选择。如果你这样做:
Ai = ([int(x) for x in input().split()[:4]])
即使用户输入更多数字,您也只会获取输入的前 4 个数字。但是,如果用户输入的数字少于 4 个,这将给您一个错误。另外,如果用户输入的不是数字,int 转换会报错。
执行此操作的更好方法是在列表理解之前使用正则表达式验证输入,并且仅在它符合您所需的格式时才接受它。此模式匹配任何包含 1 到 4 个由空格分隔的数字的字符串,但不会匹配包含超过 4 个数字或字母的字符串。
此代码将在无限循环中询问您的用户输入,并检查用户输入是否与您想要的格式匹配。如果没有,它会再次要求输入。如果找到匹配项,则循环结束并执行列表理解。
import re
pattern = re.compile(r'^(?: ?\d+ ?){1,4}$')
while True:
user_input = input('Please enter up to four numbers seperated by spaces: ')
if pattern.search(user_input):
break
else:
print('Invalid input, try again!')
Ai = ([int(x) for x in user_input.split()])
Ai=([int(x) for x in input().split()])
使用上述语句,我想从用户输入的字符串中获取一个列表。
我想限制用户输入的条目数。假设 use 给出了一个条目,其中有 5 个数字,由空格 space 分隔。拆分后我得到 5 个不同的数字,但我想将输入限制为仅 4 个数字。如何使用上述语句实现此目的?如果不是,那么我如何在 python?
的一行中输入不同的数字(假设 4)您有多种选择。如果你这样做:
Ai = ([int(x) for x in input().split()[:4]])
即使用户输入更多数字,您也只会获取输入的前 4 个数字。但是,如果用户输入的数字少于 4 个,这将给您一个错误。另外,如果用户输入的不是数字,int 转换会报错。
执行此操作的更好方法是在列表理解之前使用正则表达式验证输入,并且仅在它符合您所需的格式时才接受它。此模式匹配任何包含 1 到 4 个由空格分隔的数字的字符串,但不会匹配包含超过 4 个数字或字母的字符串。
此代码将在无限循环中询问您的用户输入,并检查用户输入是否与您想要的格式匹配。如果没有,它会再次要求输入。如果找到匹配项,则循环结束并执行列表理解。
import re
pattern = re.compile(r'^(?: ?\d+ ?){1,4}$')
while True:
user_input = input('Please enter up to four numbers seperated by spaces: ')
if pattern.search(user_input):
break
else:
print('Invalid input, try again!')
Ai = ([int(x) for x in user_input.split()])