Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x ValueError:将输入读入元组后,int()的文本无效_Python 3.x_List_Tuples - Fatal编程技术网

Python 3.x ValueError:将输入读入元组后,int()的文本无效

Python 3.x ValueError:将输入读入元组后,int()的文本无效,python-3.x,list,tuples,Python 3.x,List,Tuples,我正在编写一个代码,将一些数字作为元组,然后验证是否有数字可以被3整除 我是python的初学者,只知道一些关于元组的基本知识。我的代码如下: def Div3and5(): data=tuple(input("Enter 3 numbers:")) c=[] a=0 for i in range(0,len(data)): d=data[i] c.append(d) m=[int(x) for x in

我正在编写一个代码,将一些数字作为元组,然后验证是否有数字可以被3整除

我是python的初学者,只知道一些关于元组的基本知识。我的代码如下:

def Div3and5():
    data=tuple(input("Enter 3 numbers:"))
    c=[]
    a=0
    for i in range(0,len(data)):
        d=data[i]
        c.append(d)
    m=[int(x) for x in c]
    print(m)
    for i in m:
        if m[i]%3==0:
           print("It is not divisible")
Div3and5()
因此,当我运行此代码时,我得到一个错误,即:

ValueError: invalid literal for int() with base 10: ','
请看,这些值存储为整数,当我发出打印
c
的命令时,它会清楚地显示所有元素。然后,我尝试将每个元素转换为整数,但它显示错误,我不知道为什么。那么,你能告诉我这个错误的原因吗。还有没有直接在元组上使用这个(可分性)操作的方法,而不首先将它们转换为列表


谢谢

您输入的数字可能中间有空格(或逗号)。因此,这些空格(或逗号)将其转换为元组,并且不能转换为
int
s

请尝试使用将输入的数字放入列表中

def Div3and5():
    c = input("Enter 3 numbers:").split(",")
    # Gives you the list e.g. ["3", "4", "5"]

    m = [int(x) for x in c]
    # Gives you the list e.g. [3, 4, 5]

    for i in m:
        if i % 3 == 0:
           print(f"{i} is divisible by 3")

Div3and5()
请记住,
str.split()
将接受分隔符作为参数。在本例中,我使用了逗号
,但您可以使用空格
'
,这取决于用户输入的方式

另外请注意,您在
if
语句中执行的是
if m[i]%3==0
,而不是
if i%3==0
。这是不正确的,因为循环每次迭代中的
i
都是列表
m
的元素,而不是索引

另外,您的条件
i%3==0
是这样的,如果
i
可以被3整除,那么
print
应该表明该数字是可以整除的——您正在打印的是不可以整除的(可能是打字错误)

如果希望所有数字都能被3和5整除,可以如下更改条件:

if i % 3 == 0 and i % 5 == 0:
    print(f"{i} is divisible by 3 and 5")

以下是你问题的答案:

def Div3and5():
c = input("Enter 3 numbers:")

list=c.split(",")
c=tuple(list)

m = [int(x) for x in c]


for i in m:
    if i % 3 == 0:
            print(f'{i} is is divisible by 3')
           

Div3and5()

#输入带“,”:123,45,67的3个数字

当我尝试输入不带逗号的数字(如123)时,在输入for loop之前,它会显示正确答案,但当我输入如1,23,4时,它会显示我提到的上述错误,并且每当我输入多个数字时,它会将所有数字拆分。那么我如何将它们作为一个单独的实体来保存呢?好的@user272837我已经更新了上面的代码,使用逗号(
)作为分割的分隔符,而不是默认的空白。