鱼C论坛

 找回密码
 立即注册
查看: 2139|回复: 3

[已解决]list index out of range 错误

[复制链接]
发表于 2020-11-28 21:44:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  4. @author: Administrator
  5. """

  6. import random
  7. jihe=[]
  8. def bg():
  9.     jihe=[]
  10.     f=open('F://aaa.txt','r',encoding='utf-8')
  11.     a=f.readlines()
  12.     a=list(a)
  13.     f.close()
  14.     while 1:
  15.         s=random.randint(0,len(a))
  16.         if s in jihe:
  17.             continue
  18.         else:
  19.             jihe.append(s)
  20.         if len(jihe)==10:
  21.             break
  22.     print(jihe)
  23.     asd=str(a[jihe[0]]+a[jihe[1]]+a[jihe[2]]+a[jihe[3]]+a[jihe[4]]+a[jihe[5]]+a[jihe[6]]+a[jihe[7]]+a[jihe[8]]+a[jihe[9]])
  24.     print(asd)
  25. while 1:
  26.     if input('')=='1':
  27.         bg()
复制代码

文件夹有26行
运行两次没问题
三次报错
请问如何解决?
最佳答案
2020-11-28 22:51:48
本帖最后由 jackz007 于 2020-11-28 23:46 编辑

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

  4. @author: Administrator
  5. """

  6. import random

  7. def bg():
  8.     jihe = []
  9.     f=open('F://aaa.txt','r',encoding='utf-8')
  10.     a = list(f)
  11.     f . close()
  12.     k = 0
  13.     while k < 10:
  14.         s = random . randint(0 , len(a) - 1)        # 楼主的代码问题出在此处
  15.         if not s in jihe:
  16.             jihe.append(s)
  17.             k += 1
  18.     print(jihe)
  19.     asd = "" . join(a[x] . strip() for x in jihe)
  20.     print(asd)
  21. while 1:
  22.     if input('')=='1':
  23.         bg()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-28 21:53:52 | 显示全部楼层
本帖最后由 小伤口 于 2020-11-28 21:56 编辑

索引是从0开始的len()是从1开始计数的。所以索引用len()得减一
小甲鱼老师不是常说零基础入门学习python吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-28 21:57:46 | 显示全部楼层
asd=str(a[jihe[0]]+a[jihe[1]]+a[jihe[2]]+a[jihe[3]]+a[jihe[4]]+a[jihe[5]]+a[jihe[6]]+a[jihe[7]]+a[jihe[8]]+a[jihe[9]])
错误在这。。。
列表jihe成员是够的,但是列表a不够啊
例如a = ['1','2','3']
len(a)就是3了,random.randint(0,len(a)),如果出现3
那你a[3]就超界了啊
=====>正确做法,把第17行修改
  1.         s=random.randint(0,len(a)-1)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-28 22:51:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-11-28 23:46 编辑

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

  4. @author: Administrator
  5. """

  6. import random

  7. def bg():
  8.     jihe = []
  9.     f=open('F://aaa.txt','r',encoding='utf-8')
  10.     a = list(f)
  11.     f . close()
  12.     k = 0
  13.     while k < 10:
  14.         s = random . randint(0 , len(a) - 1)        # 楼主的代码问题出在此处
  15.         if not s in jihe:
  16.             jihe.append(s)
  17.             k += 1
  18.     print(jihe)
  19.     asd = "" . join(a[x] . strip() for x in jihe)
  20.     print(asd)
  21. while 1:
  22.     if input('')=='1':
  23.         bg()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 09:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表