繁体   English   中英

Python用户输入split()和循环

[英]Python user input split() and loop

我正在接受用户输入,如下所示:0、1、2、3、5用户可以写任意数字并用逗号分隔,输入将为x,y,z,k,c

然后我在检查split()调用后是否有任何数字为0或大于30时遇到麻烦。

程式码片段:

numbers = input(user[i]['name'] + 
", assign 10 different numbers between 1-30 (separate each with a comma ','): ")
        usrNums = numbers.split()

for number in usrNums:
    if number < 1 or number > 30: 
     #Something goes here, however, not important now. 

附言:我已经阅读了all()

说明:用户输入一些数字,例如0,5,2,9,7,10 usrNums = numbers.split() split()被调用并将它们存储在usrNums ,然后我要检查usrNums [0, 5, 2, 9, 7, 10]每个数字usrNums [0, 5, 2, 9, 7, 10]如果其中任何一个为“ 0表示数字<1或> 30”。

编辑:没有,这不是重复的,我读完了, 如何在Python中将输入读取为整数? ,而且根本不一样。 我的问题是用户输入逗号分隔的数字,而不是每个输入一个数字。

使用split时,数字为字符串类型。 要与1或30进行比较,请将它们转换为整数

numbers  = "0,1,2,3,5"
usrNums = numbers.split(",")
#usrNums ["0","1","2","3","5"]
for number in usrNums:
    if int(number) < 1 or int(number) > 30: 
numbers = "1,2,3,31"
for number in numbers.split(","):
    number = eval(number) # or use int(number) or float(number) as example
    if number < 1 or number > 30:
        #do something

您忘记了split函数中的“,”,而忘记了将字符串转换为整数。

您可以使用map()方法。

numberString = '1, 2, 3, 4, 5, 6, 7'
numbers = map(int, numberString.split(',')) # numbers = [1, 2, 3, 4, 5, 6, 7]
for num in numbers:
    if num < 1 or num > 30:
        # Do whatever you want here...

希望这可以帮助! :)

输入是一个字符串。 使用evalint进行比较:

for number in usrNums:
     if eval(number) < 1 or eval(number) > 30: 
     #Something goes here, however, not important now. 

您还需要指出如何分割字符串: input.split(',')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM