尝试对整数数组执行乘法时的TypeError

时间:2016-02-24 18:46:15

标签: python

这个位很好,只需将其放入

即可
digit = input("input a 5 digit number:")
if len(digit)==5:
    digit = list(digit)
    print(int(digit[2]))
    print(int(digit[4]))
else:
    print("error")

这里我试图将第2和第4位乘以2

new_digit1 = int(digit[0]*"%d" %1)
new_digit2 = int(digit[1]*"%d" %2)
new_digit3 = int(digit[2]*"%d" %1)
new_digit4 = int(digit[3]*"%d" %2)
new_digit5 = int(digit[4]*"%d" %1)

printable_digit = new_digit1 + new_digit2 + new_digit3 + new_digit4 + new_digit5

错误:

  

TypeError:不能将序列乘以类型' str'

的非int

2 个答案:

答案 0 :(得分:0)

digits = raw_input("enter your 5 digit number") # raw input will keep it as a string

digs = list(digits)    

此行应为

new_digit2 = int(digit[1]*"%d" %2)

应该是

new_digit2 = int(digit[1])*2

答案 1 :(得分:0)

*%具有相同的优先级,无论它们使用何种类型。因此,首先评估digit[0]*"%d",并将结果与​​% 1一起使用。您似乎期望首先评估"%d" % 1,并将其用作乘数(或被乘数,似乎没有人同意哪个是哪个)以及digit[0]

也就是说,digit[0] * "%d" % 1相当于(digit[0] * "%d") % 1,并且您试图将两个字符串相乘。

您需要使用括号来强制执行所需的评估顺序。

digit[0] * ("%d" % 1)

(我忽略了为什么你不能直接将每个数字乘以整数的问题。这里%运算符并不多。)