运行cod时出现索引错误

2024-06-30 08:23:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还比较陌生,我正在编写一个程序,可以将一个七位数的数字转换成一个GTIN-8代码,还带有一个校验位。它允许我运行它,但在我输入我的号码后,它会给我一个错误:

IndexError: String index out of range

我的代码如下:

sevenNum = ""
gtinNum = ""
checkDigit = ""
total = ""

a = 0
b = 0
c = 0
d = 0
e = 0
f = 0
g = 0

def GTINCalc():
    a = int(sevenNum[0])*3
    b = int(sevenNum[1])*1
    c = int(sevenNum[2])*3
    d = int(sevenNum[3])*1
    e = int(sevenNum[4])*3
    f = int(sevenNum[5])*1
    g = int(sevenNum[6])*3

    total = int(a+b+c+d+e+f+g)

    checkDigit = (total + 9) // 10 * 10 - total

    print("GTIN-8 Code: {0}{1}{2}{3}{4}{5}{6}{7}".format(a, b, c, d, e, f, g, checkDigit))


def sevenNumAsk():
    sevenNum = input("Enter a 7 digit number to be converted into a GTIN-8 Number")
    if sevenNum.isdigit() == True and len(sevenNum) == 7:
        print("Valid Number - Calculating GTIN-8...")
        GTINCalc()
    else:
        print("The number is not valid - please re-enter ")
        sevenNumAsk()

sevenNumAsk()

突出显示的部分是:

a = int(sevenNum[0])*3

感谢您的帮助。谢谢


Tags: 代码程序numberdefinttotalprintgtin
1条回答
网友
1楼 · 发布于 2024-06-30 08:23:43

sevenNumsevenNumAsk内部的局部变量,不影响在顶部创建的全局变量。请执行以下操作:

def sevenNumAsk():
    global sevenNum
    sevenNum = ...

它会像你所期望的那样。更好的方法是使用类或passsevenNum作为参数。全局变量通常是不好的,这也是原因之一

相关问题 更多 >