首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用输入是否有一种输入范围的方法

使用输入是否有一种输入范围的方法
EN

Stack Overflow用户
提问于 2021-08-26 06:37:25
回答 3查看 69关注 0票数 2

我有一些代码,它使用some ()将一系列数字用逗号隔开。虽然这很好,但我希望用户能够输入这些数字,但也包括一个范围,如果他们想。

输入= 1,2,3 #工作正常

输入= 1,2,3,4-9,15 #不知道这是否可行

我不知道这是不是最好的追求与一个regex,因为他们完全迷惑了我。

代码语言:javascript
复制
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))

输入

代码语言:javascript
复制
1,2,3

返回

代码语言:javascript
复制
From user :  [1, 2, 3]

所需的功能

输入

1,2,3,9-14,21

期望输出

代码语言:javascript
复制
From user :  [1, 2, 3, 9, 10, 11, 12, 13, 14, 21]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-26 06:44:59

只需为-添加另一个检查器并将范围添加到列表中:

代码语言:javascript
复制
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))
票数 2
EN

Stack Overflow用户

发布于 2021-08-26 06:42:12

尝试regex:

代码语言:javascript
复制
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))
票数 1
EN

Stack Overflow用户

发布于 2021-08-26 06:53:42

试试这个:

代码语言:javascript
复制
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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68933637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档