YIRANNA 发表于 2020-11-28 21:44:12

list index out of range 错误

代码如下
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 28 20:59:39 2020

@author: Administrator
"""

import random
jihe=[]
def bg():
    jihe=[]
    f=open('F://aaa.txt','r',encoding='utf-8')
    a=f.readlines()
    a=list(a)
    f.close()
    while 1:
      s=random.randint(0,len(a))
      if s in jihe:
            continue
      else:
            jihe.append(s)
      if len(jihe)==10:
            break
    print(jihe)
    asd=str(a]+a]+a]+a]+a]+a]+a]+a]+a]+a])
    print(asd)
while 1:
    if input('')=='1':
      bg()

文件夹有26行
运行两次没问题
三次报错
请问如何解决?

小伤口 发表于 2020-11-28 21:53:52

本帖最后由 小伤口 于 2020-11-28 21:56 编辑

索引是从0开始的len()是从1开始计数的。所以索引用len()得减一
{:10_297:} 小甲鱼老师不是常说零基础入门学习python吗

笨鸟学飞 发表于 2020-11-28 21:57:46

asd=str(a]+a]+a]+a]+a]+a]+a]+a]+a]+a])
错误在这。。。
列表jihe成员是够的,但是列表a不够啊
例如a = ['1','2','3']
len(a)就是3了,random.randint(0,len(a)),如果出现3
那你a就超界了啊
=====>正确做法,把第17行修改
      s=random.randint(0,len(a)-1)

jackz007 发表于 2020-11-28 22:51:48

本帖最后由 jackz007 于 2020-11-28 23:46 编辑

      楼主可以试试这个代码
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 28 20:59:39 2020

@author: Administrator
"""

import random

def bg():
    jihe = []
    f=open('F://aaa.txt','r',encoding='utf-8')
    a = list(f)
    f . close()
    k = 0
    while k < 10:
      s = random . randint(0 , len(a) - 1)      # 楼主的代码问题出在此处
      if not s in jihe:
            jihe.append(s)
            k += 1
    print(jihe)
    asd = "" . join(a . strip() for x in jihe)
    print(asd)
while 1:
    if input('')=='1':
      bg()
页: [1]
查看完整版本: list index out of range 错误