Python-IndexError:元组索引超出范围 [英] Python - IndexError: tuple index out of range

查看:293
本文介绍了Python-IndexError:元组索引超出范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个程序,以从我的GCSE修订版的主题中随机生成每个问题.我的代码在出现随机问题后会生成一条错误消息.这是我的代码,后面是错误消息:

I am trying to create a program to randomly generate every question from a topic for my GCSE revision. My code generates an error message after a random question. Here is my code followed by the error message:

computing_UNIT4_networks = (["LOCAL AREA NETWORK","A network in one geographical area."],["WIDE AREA NETWORK","A network spanning two or more geographical areas."],["ROUTER","Connects a network to another network, sends and inspects packets of data."],["SWITCH","Channels data to its indented destination, within an internal network."],["NETWORK INTERFACE CARD","A card that allows a computer to connect to the network."],["FIBRE OPTIC CABLE","Uses light to transmit data."],["ETHERNET CABLE","Uses metal wires (usually copper) to transmit data."],["DNS","Used to match IP addresses to URL."],["HOSTING","Storing data for a user, usually a website."],["CLOUD COMPUTING","A remote computer is used to store data and provide services."])
computing_UNIT5_protocols = (["STAR NETWORK","All computers are connected 'individually' to the server.(using switches)"],["FULL MESH NETWORK","Every computer is connected to every other."],["ENCRYPTION","Disguising data so that it can be read with the key."],["DATA PACKET","Small unit of data to be transmitted."],["LATENCY","The delay in receiving data."],["BANDWIDTH","The amount of data that can be transmitted in a set amount of time."],["PACKET SWITCHING","Packets of data are transmitted and are able to take individual routes to their destination."],["CIRCUIT SWITCHING","Packets of data are transmitted along the same route to their destination."])
done = []
def computing():
    unit = int(input("Which UNIT are you revising?\n-"))
    if unit == 4:
        UNIT = computing_UNIT4_networks
        print("Here are",len(UNIT),"questions on UNIT4 - Wired and wireless networks.")
    elif unit == 5:
        UNIT = computing_UNIT5_protocols
        print("Here are",len(UNIT),"questions on UNIT5 - Network topologies, protocols and layers.")
    i=1
    c=0
    while i <= (len(UNIT)):
        import random
        randint=random.randint(0,len(UNIT))
        while randint in done:
            randint=random.randint(0,len(UNIT))
            if randint in done:
                i=i
            else: break
        question = UNIT[randint][1]
        answer = UNIT[randint][0]
        print("\nWhat is this the definition of?:",question)
        b=input("-").upper()
        if b == answer:
            c=c+1
            print("\nCorrect\nCurrent score:",c,"/",i)
        else: print("\nWrong. The answer was",answer,".\nCurrent score:",c,"/",i)
        done.append(randint)
        i = i+1
    print("\nYou scored",c,"/",len(UNIT),".")

computing()

错误消息:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    computing()
  File "[FILELOCATION]", line 22, in computing
    question = UNIT[randint][1]
IndexError: tuple index out of range

推荐答案

randint应该从0变为len(UNIT)-1.该值可能随机达到len(UNIT)并且该索引超出范围.

randint should go from 0 to len(UNIT)-1. The value is probably randomly reaching the len(UNIT) and that index is out of bounds.

这篇关于Python-IndexError:元组索引超出范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆