【问题标题】:Index Error Problems索引错误问题
【发布时间】:2018-07-25 20:37:48
【问题描述】:

所以我正在制作一个计算器,它接收一个字符串并检查它是否包含某些单词,例如加法或减法,然后查找整数。但是,在我当前的代码中,我运行它并收到以下错误消息:

Traceback (most recent call last):
    File "python", line 1, in <module>
    File "python", line 7, in calculator
IndexError: string index out of range

代码在下面输入。

def calculator(string):
    if "add" in string or "Add" in string:
        total = 0
        for i in range(len(string)): #loop for length of string
            try:
                if type(int(string[i])) == int: #checks to see if there is a number in the string
                    try:
                        if type(int(string[i+1])): #checks to see if the number is 2 digits
                            number_1 = int(string[i])*10 
                    except ValueError:
                        number_1 = int(string[i])
                total = total + number_1 #adds all the numbers to a total variable
            except ValueError:
                pass
        print (total)

如果有人可以帮助我,那就太好了!非常感谢!

【问题讨论】:

  • 你的缩进被破坏了。
  • 我应该如何解决这个问题?我只是尝试将它们全部重新输入。
  • 在任何编辑器中编写代码,然后选择它并按CTRL+K
  • 那也没用 :(

标签: python-3.x index-error


【解决方案1】:

我相信您的问题出在type(int(string[i+1]))

因为你有一个for 循环,i 已经可以指向string 的最后一个索引。当你添加1 时,你会得到一个IndexError

例子:

s = 'blabla'
for i in range(len(s)):
    print(s[i])

输出:

b
l
a
b
l
a

例子:

s = 'blabla'
for i in range(len(s)):
    print(s[i+1])

输出:

l
a
b
l
a

File "C:\Users\python\scratch\untitled-1.py", line 3, in <module>
  print(s[i+1])

builtins.IndexError: string index out of range

【讨论】:

    【解决方案2】:

    和我的朋友(@Kay Ace Elits)坐下来,发现有很多事情不对劲,但我们拼凑了起来

    def calculator(string):
        if "add" in string:
    
            total = 0
            first_string = "" # before a in add
            second_string = "" # after d in add
    
            value_list = string.split('add')
            for number in value_list:
                total += int(number)
    
            print(total)
    
        elif  "Add" in string:
            total = 0
            first_string = ""
            second_string = ""
    
            value_list = string.split('Add')
            for number in value_list:
                total += int(number)
    
            print(total)
    
    ### our test your can modify for other factors
    ### like spellings and different operations
    string = "22add43"
    calculator(string)
    

    【讨论】:

    • i=0 会导致string[-1] 这是字符串的最后一个元素...不确定你是否想要那个。
    • 感谢 @EdwinvanMierlo 提出,这是我的疏忽,将在运行测试后编辑代码。
    • 您的缩进已关闭
    猜你喜欢
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多