我试图编写一些代码来检查一个数字是否可被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")
我真的很感激答案, 感谢
答案 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)]
将是一个超过字符串。