这个位很好,只需将其放入
即可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
答案 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)
(我忽略了为什么你不能直接将每个数字乘以整数的问题。这里%
运算符并不多。)