【问题标题】:cs50 pset6 Credit IndexError: string index out of rangecs50 pset6 Credit IndexError:字符串索引超出范围
【发布时间】:2021-09-26 05:08:22
【问题描述】:

尝试启动程序时,我在第 19 行收到“IndexError: string index out of range”错误。是因为我忘记终止字符串或将其转回 int 吗?对 python 非常陌生,所以任何帮助或琐事将不胜感激。

我尝试做类似这样的事情doubleCheck = int(strNumber[i] * 2),但它并没有解决问题。我做错了吗?

这是完整的代码,以防以后出现错误。

from cs50 import get_int 
import sys

ccNumber = get_int("Number: ")
strNumber = str(ccNumber)
Numlen = len(str(ccNumber))

if Numlen != 13 and Numlen != 15 and Numlen != 16:
    sys.exit()

firstSum = 0
secondSum = 0
doubleCheck = 0

for i in range(Numlen, -1, -1):
    if i % 2 == 0:
        secondSum = secondSum + strNumber[i]
    if i % 2 == 1:
        doubleCheck = strNumber[i] * 2
        if doubleCheck >= 10:
            firstSum = firstSum + (doubleCheck % 10)
            firstSum = firstSum + (doubleCheck / 10)
        else:
            firstSum += doubleCheck;

totalChecksum = firstSum + secondSum

if totalChecksum % 10 == 0:
    if strNumber[0] == 3 and Numlen == 15:
        if strNumber[1] == 4 or strNumber[1] == 7:
            print("AMEX", end="");
    elif strNumber[0] == 4:
        if Numlen == 13 or Numlen == 16:
            print("VISA", end="")
    elif strNumber[0] == 5 and Numlen == 16:
        if strNumber[1] == 1 or strNumber[1] == 2 or strNumber[1] == 4 or strNumber[1] == 5:
            print("MASTERCARD", end="")
else:
    print("INVALID", end="")

【问题讨论】:

    标签: python string cs50 credit-card index-error


    【解决方案1】:

    Python 字符串索引从 0 开始。对于长度为 N 的字符串,有效索引为 0 到 N-1。索引 N 超出范围。

    在 for 循环中,您正在访问 strNumber[i]。在第一次迭代中,i 等于 Numlen,超出范围。

    也许您打算在Numlen - 1 开始循环?

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      相关资源
      最近更新 更多