如何在此代码中修复“ IndexError:列表索引超出范围”

时间:2019-06-14 06:55:38

标签: python python-3.x

试图构建此功能,但时间很短。以为我可以正常工作,但是却出现了这个愚蠢的索引错误。谁能看到原因?

该功能应该:

取一个文件名

将该文件的内容读入profile_list(list)作为参数传递给函数

返回配置文件对象列表

必须使用循环

只能使用字符串和列表方法。

def read_file(filename, profile_list):
    profile_file = open(filename, "r")

    profile_list = profile_file.readlines()

    for i in range(len(profile_list)):
        profile_list[i] = profile_list[i].rstrip('\r\n')

    new_list = []

    i = 0

    while i < len(profile_list):
        given_name = profile_list[i].split(" ")[0]
        family_name = profile_list[i].split(" ")[1]
        email = profile_list[i].split(" ")[2]
        gender = profile_list[i].split(" ")[3]
        i += 1

    status = profile_list[i]
    i += 1

    num_of_friends = int(profile_list[i])

    friend_list = []

    for j in range(num_of_friends):
        i += 1
        friend_list.append(profile_list[i])

    profile_object = profile.Profile(given_name, family_name, email,              gender)

    profile_object.set_status(status)
    profile_object.set_number_friends(num_of_friends)
    profile_object.set_friends_list(friend_list)

    new_list.append(profile_object)

    i += 1

    profile_file.close()

    return new_list

它需要一个充满配置文件信息的文本文件。示例:

Fox Mulder fox@findthetruth.com m #Name, email, gender
The truth is out there!  #Status
1  #number of friends
tony@ironman.com #friend email
Tony Stark tony@ironman.com m
Saving the world is hard work - no time for friends.
0
Phil Dunphy phil@dunphy.com m
wtf? = why the face?
2
robbie@football.com
fox@findthetruth.com

其中每个都是个人资料,应该将其放入自己的列表中。

注意

family_name = profile_list [i] .split(“”)[1]发生索引错误

输入:

profile_list = []

read = read_file("profiles.txt", profile_list)

所需的输出:

如果这是文本文件列表:

Fox Mulder fox@findthetruth.com m 真相就在那里! 1个 tony@ironman.com 托尼·史塔克tony@ironman.com m 拯救世界是艰苦的工作-朋友们没有时间。 0 菲尔·邓菲phil@dunphy.com m wtf? =为什么要面对? 2 robbie@football.com fox@findthetruth.com

我希望它看起来像这样(我仍然需要在显示输出函数中对其进行格式化,以使其看起来像这样,但是我需要它看起来像这样:

请输入选项[摘要|添加|删除|搜索|更新|退出]:摘要

个人资料摘要


Fox Mulder(m | fox@findthetruth.com) - 真相就在那里! -朋友(1):

托尼·斯塔克

托尼·史塔克(m | tony@ironman.com) -拯救世界是艰苦的工作-朋友们没有时间。

-还没有朋友...

(用户输入“摘要”时,配置文件会分开显示)

0 个答案:

没有答案