Python用户输入split()和循环

Python用户输入split()和循环,python,Python,我接受如下用户输入: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

我接受如下用户输入: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. 
numbers=input(用户[i]['name']+
“,在1-30之间分配10个不同的数字(用逗号“,”):”)
usrNums=numbers.split()
对于usrNums中的数字:
如果数量<1或数量>30:
#然而,有些事情现在已经不重要了。
另外,我已经读了一些关于

澄清:用户输入一些数字,例如0,5,2,9,7,10 调用了
usrNums=numbers.split()
split()
并将其存储在
usrNums
中,然后我想检查
usrNums[0,5,2,9,7,10]
中的每个数字是否有“0表示数字<1或>30”


编辑:不,这不是重复的,我通读了一遍,一点都不一样。我的问题是关于用户输入带有分隔逗号的数字,而不是每个输入一个数字。

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

for number in usrNums:
     if eval(number) < 1 or eval(number) > 30: 
     #Something goes here, however, not important now. 
对于usrNums中的数字:
如果eval(编号)<1或eval(编号)>30:
#然而,有些事情现在已经不重要了。

您还需要指示如何拆分字符串:
input.split(“,”)
使用拆分时,数字的类型为string。要与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: 
number=“0,1,2,3,5”
usrNums=数字。拆分(“,”)
#usrNums[“0”、“1”、“2”、“3”、“5”]
对于usrNums中的数字:
如果int(number)<1或int(number)>30:
numbers=“1,2,3,31”
对于数字中的数字。拆分(“,”):
number=eval(number)#或使用int(number)或float(number)作为示例
如果数量<1或数量>30:
#做点什么
您忘记了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...
numberString='1,2,3,4,5,6,7'
数字=映射(int,numberString.split(',')#数字=[1,2,3,4,5,6,7]
对于数字中的num:
如果num<1或num>30:
#在这里你想做什么就做什么。。。

希望这有帮助!:)

输入是字符串。记住这一点;)在if中使用
eval(number)
statement@MMF-当正确的解决方案是
int
时,为什么要使用
eval
?为什么要告诉用户用逗号分隔输入,然后不要用逗号分隔输入?这不是一个真正的重复,因为问题更多的是关于测试而不是输入。try:any(map(lambda i:i==0或i>30,数字))#测试每个数字类型错误:无序类型:tuple()eval?真的吗?@TigerhawkT3感谢您的反馈。如果他确定用户输入了整数,他就不能使用它吗?如果您确定要得到整数,为什么不使用
int
?这就是它的目的。如果它们不是整数,那就更不用
eval
@TigerhawkT3好的,谢谢;)那么什么时候使用
eval
而不是
int
?ValueError:int()的文本无效,以10为基数:“0,1,2,3,4”设置分割(“,”)逗号
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...