试图构建此功能,但时间很短。以为我可以正常工作,但是却出现了这个愚蠢的索引错误。谁能看到原因?
该功能应该:
取一个文件名
将该文件的内容读入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) -拯救世界是艰苦的工作-朋友们没有时间。
(用户输入“摘要”时,配置文件会分开显示)