我有一些代码,它使用some ()将一系列数字用逗号隔开。虽然这很好,但我希望用户能够输入这些数字,但也包括一个范围,如果他们想。
输入= 1,2,3 #工作正常
输入= 1,2,3,4-9,15 #不知道这是否可行
我不知道这是不是最好的追求与一个regex,因为他们完全迷惑了我。
码
def convert_to_int(user_input_str):
input_list_str = list(user_input_str.split(","))
number_list = []
for n in input_list_str:
number_list.append(int(n))
return number_list
if __name__ == "__main__":
#manual_testing()
print("enter list, each integer separated by a comma")
user_input_str = input()
print("From user : ", convert_to_int(user_input_str))输入
1,2,3返回
From user : [1, 2, 3]所需的功能
输入
1,2,3,9-14,21
期望输出
From user : [1, 2, 3, 9, 10, 11, 12, 13, 14, 21]发布于 2021-08-26 06:44:59
只需为-添加另一个检查器并将范围添加到列表中:
def convert_to_int(user_input_str):
input_list_str = list(user_input_str.split(","))
number_list = []
for n in input_list_str:
if '-' not in n:
number_list.append(int(n))
else:
number_list.extend(range(int(n.split('-')[0]), int(n.split('-')[1]) + 1))
return number_list
if __name__ == "__main__":
#manual_testing()
print("enter list, each integer separated by a comma")
user_input_str = input()
print("From user : ", convert_to_int(user_input_str))发布于 2021-08-26 06:42:12
尝试regex:
import re
def convert_to_int(user_input_str):
input_list_str = list(re.split('\D', user_input_str))
number_list = []
for n in input_list_str:
number_list.append(int(n))
return number_list
if __name__ == "__main__":
#manual_testing()
print("enter list, each integer separated by a comma")
user_input_str = input()
print("From user : ", convert_to_int(user_input_str))发布于 2021-08-26 06:53:42
试试这个:
import re
def convert_to_int(user_input_str):
input_list_str = user_input_str.split(",")
number_list = []
for n in input_list_str:
if '-' in n:
number_list.extend(x for i,j in re.findall(r'(\d+)-(\d+)',user_input_str.replace(' ','')) for x in range(int(i),int(j)+1))
else:
number_list.append(int(n))
return number_list
if __name__ == "__main__":
print("enter list, each integer separated by a comma")
user_input_str = input()
print("From user : ", convert_to_int(user_input_str))https://stackoverflow.com/questions/68933637
复制相似问题