【问题标题】:Python list error, list index out of rangePython列表错误,列表索引超出范围
【发布时间】:2015-12-17 09:42:37
【问题描述】:

我不明白我做错了什么!

x=7
List=[]
for i in range(0,x):
    verify=False
    while verify==False:
        Values=input("Enter Code")
        verify=Values.isdigit()

    ValueList=int(Values)
    List.append(ValueList)
    value1=int(List[0])
    value2=int(List[1])
    value3=int(List[2])
    value4=int(List[3])
    value5=int(List[4])
    value6=int(List[5])
    value7=int(List[6])
    value8p1=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1)
    value9=math.ceil(value8p1//10)
    print(value9)

我的老师也不知道,我觉得这很愚蠢....

【问题讨论】:

  • List.append(ValueList) 后面的代码应该在 for 循环之外。
  • 它在哪里崩溃?你得到什么输出?有什么例外吗?
  • 这看起来不对:value9=math.ceil(value8p1//10)。为什么是双斜线?
  • // 是 python 整数除法运算符(将向零舍入)。它的输出是一个整数,所以 ceil 什么都不做

标签: python arrays list


【解决方案1】:

这只是一个缩进问题。

import math


x=7
List=[]
for i in range(0,x):
    verify=False
    while verify==False:
        Values=input("Enter Code")
        verify=Values.isdigit()

    ValueList=int(Values)
    List.append(ValueList)
value1=int(List[0])
value2=int(List[1])
value3=int(List[2])
value4=int(List[3])
value5=int(List[4])
value6=int(List[5])
value7=int(List[6])
value8p1=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1)
value9=math.ceil(value8p1//10)
print(value9)

【讨论】:

  • @CODE_KILLER 检查这个。
【解决方案2】:

这是工作代码:

import math

x=7
List=[]
for i in range(0,x):
    verify=False
    while verify==False:
        Values=raw_input("Enter Code")
        verify=Values.isdigit()
        print verify

    ValueList=int(Values)
    List.append(ValueList)
value1=int(List[0])
value2=int(List[1])
value3=int(List[2])
value4=int(List[3])
value5=int(List[4])
value6=int(List[5])
value7=int(List[6])
value8=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1)
value9=math.ceil(value8//10)
print(value9)

【讨论】:

    【解决方案3】:

    如果我输入1234,那么Values 包含字符串"1234"

    然后将字符串转换为整数

    ValueList=int(Values) # converts string "1234" to integer 1234
    

    并将整数添加到空列表中

    List.append(ValueList)# List not looks like this List=[1234]
    

    所以您的列表只包含 一个 元素。
    因此List[1] 超出范围

    顺便说一句:不要以 list 之类的内置名称命名您的值。
    请看官方naming conventions

    编辑

    当您更正缩进时,您的代码仍然很危险。
    如果您将 x 更改为

    仍然很危险的代码

    x=7 
    List=[]
    for i in range(0,x):
        verify=False
        while verify==False:
            Values=input("Enter Code")
            verify=Values.isdigit()
    
        ValueList=int(Values)
        List.append(ValueList)
    
    value1=int(List[0])
    value2=int(List[1])
    value3=int(List[2])
    value4=int(List[3])
    value5=int(List[4])
    value6=int(List[5])
    value7=int(List[6])
    value8p1=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1)
    value9=math.ceil(value8p1//10)
        print(value9)
    

    所以你应该在循环中进行计算以避免索引错误:

    更新代码

    x = 4
    values = []
    for i in range(0, x):
        verify = False
        while verify == False:
            value = input("Enter Code")
            verify = value.isdigit()
    
        values.append(int(value))
    
    result = 0
    for index, value in enumerate(values):
        if index % 2 == 0:
            result += value * 3
        else:
            result += value
    
    finalResult = math.ceil(result // 10)
    print(finalResult)
    

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2018-05-03
      相关资源
      最近更新 更多