多个三个检查器(python)

时间:2015-12-19 17:44:00

标签: python

我试图编写一些代码来检查一个数字是否可被3整除,并认为如果你将所有数字相加,如果它是3的倍数,它应该可以被3整除。不是它不应该被三个整除。但是它一直告诉我,ans += (num[a])行是"TypeError: unsupported operand type(s) for +=: 'int' and 'str'"

继承我的代码:

num = input("Enter the number you want to check: ")
chara = int(len(num))
a = int(0)
ans = int(0)
while a <= chara:
    ans += (num[a])
    a += 1

if ans % 3 == 0:
    print(num, " is a multiple of three.")
else:
    print(num, " is not a multiple of three")

我真的很感激答案, 感谢

2 个答案:

答案 0 :(得分:1)

input()函数的返回值是一个字符串。在将其添加到另一个整数之前,您需要将其转换为整数。

while a < chara:
    ans += int((num[a]))

注意:这有几个假设。 1.)num [a]实际上是一个数字 2.)该值不是浮点数。

无论何时接受用户的输入,您都应该在使用之前对其进行验证。

答案 1 :(得分:-1)

你不能添加一个int和一个字符串,num[a]最初从你的输入字符串中提取第一个字符,所以你不能将它添加到一个int即a,你的代码比它更多需要,您只需将每个数字转换为int和sum,然后检查该总和%3是否为0:

num = input("Enter the number you want to check: ")

ans = sum(map(int, num))

if ans % 3 == 0:
    print(num, " is a multiple of three.")
else:
    print(num, " is not a multiple of three")

如果你想创建一个最初设置为0的变量,你不需要调用int(0)只需将其设置为0即a = 0,如果你想要一个循环,请忘记并且只是迭代字符串,你不需要在python中索引一个字符串来获取每个字符。

num = input("Enter the number you want to check: ")
a = 0
ans = 0
for d in num:
    ans += int(d)

if ans % 3 == 0:
    print(num, " is a multiple of three.")
else:
    print(num, " is not a multiple of three") 

即使你在自己的代码中强制转换为int,你最终会得到一个带有while a <= chara:的indexError,索引从0开始,所以num[len(num)]将是一个超过字符串。