鱼C论坛

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

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

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

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

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

x
代码如下
# -*- 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[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]])
    print(asd)
while 1:
    if input('')=='1':
        bg()
文件夹有26行
运行两次没问题
三次报错
请问如何解决?
最佳答案
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[x] . strip() for x in jihe)
    print(asd)
while 1:
    if input('')=='1':
        bg()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

索引是从0开始的len()是从1开始计数的。所以索引用len()得减一
小甲鱼老师不是常说零基础入门学习python吗
想知道小甲鱼最近在做啥?请访问 -> 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行修改
        s=random.randint(0,len(a)-1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[x] . strip() for x in jihe)
    print(asd)
while 1:
    if input('')=='1':
        bg()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 06:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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