这是我的编码:
#Getting them to import their code:
number = int(input("Enter 7 digit GTIN code to get eighth number : "))
#importing math for subtracting later:
import math
#Getting the numbers X3 & X1 and then adding them:
def eight(total):
multiplier = [3, 1]
total = 0
for i, digit in enumerate(str(number)):
total = total + int(digit)*multiplier[i%2]
#Subtracting the total to get the last number:
nearest_10 = int(math.ceil(total / 10.0)) * 10
return nearest_10 - total
code = number,eight(number)
code = int(code)
print(code)
#printing their full number:
#Checking the validity of the eight digit GTIN-8 code:
def validity(valid):
multiplier = [3, 1]
valid = 0
string = ""
for i, digit in enumerate(list(str(code))):
valid = valid + str(digit)*multiplier[i%2]
string = string+str(str(digit)*multiplier[i%2])+", "
if code % 10 == 0:
print"Valid"
else:
print"Not valid"
然而,当我试图将我的代码转换为整数以便以后,因为它需要一个整数来表示答案,它说:
code = int(code)
TypeError: int()
argument must be a string or a number, not 'tuple'
答案 0 :(得分:1)
你的行
code = number,eight(number)
使代码成为二进制元组(number, eight(number))
。 Python添加括号并创建一个元组,因为它通常在幕后进行以允许更漂亮的代码。然后你的下一行尝试使用int()
,这是不允许的。
我无法通过eight(number)
了解您的需求,但由于int()
和{{1} number
eight(number)
,因此不清楚为什么要尝试 Offset Info Type Sym. Value Sym. Name + Addend
00000000001f 000200000002 R_X86_64_PC32 0000000000000000 _R_Print - 4
似乎已经是整数了。你想用这条线做什么?
答案 1 :(得分:1)
我认为其他答案是有道理的,但正如Rory Daulton指出的那样,你似乎已经在使用整数。比方说,为了避免制作元组并保持整数 代码= 10 *号+ 8(个)
然后直接打印。
答案 2 :(得分:0)
code = number,eight(number)
code = int(code)
你在这里创建一个元组。数字,八(数字)是一个元组。它有2个值,如何转换为int
?
答案 3 :(得分:0)
解决这个问题的简单方法是将数字连接成一个字符串,并在结果字符串上执行int()。类似的东西:
code = '%s%s' % (number,eight(number))
code = int(code)
print(code)