首页 > 解决方案 > 编写一个程序,从三个文件中查询信息。程序应要求用户输入电话号码、打印姓名、ss 号码、年收入

问题描述

第一个文件包含一组人的姓名和电话号码。第二个文件包含一组人的姓名和社会安全号码。第三个文件包含一组人的社会安全号码和年收入。

data1.txt Bob, 555-1234 Matthew, 555-2345 Mark, 555-3456 Luke, 000-1234 John, 000-2345

data2.txt 马修,000000001 马克,000000002 卢克,000000003 乔,000000004

data3.txt 000000001, 55000 000000003, 65000 000000004, 70000 000000007, 10000000

 d1 = []
 d2 = []
 d3 = []

data1 = open("data1.txt", "r")
for line in d1:
d1 = line.split(":")
name = d1[0]
number = int(d1[1])
d1.close()

data2 = open("data2.txt", "r")
for line in d2:
d2 = line.split(":")
name = d2[0]
ssnumber = int(d2[1])
d2.close()

data3 = open("data3.txt", "r")
for line in d3:
d3 = line.split(":")
ssnumber = d3[0]
income = d3[1]
d3.close()

l = []
for x in d2:
    for y in d3:
        if x[1] in y:
            l.append((x[0,y]))
        
newfile = []
for x in d1:
    for y in l:
        if x[0] in y:
            newfile.append((x[1], y[0], *y[1]))


tnumber = input("Enter a telephone number including dash: ")

position = 0 
for data in newfile:
    if data[0] == tel:
        position = 1
    
    print("Telephone number:" , tnumber)
    print("Name: ", data[1])
    print("Social Security number ", data[2])
    print("Annual Income: ", data[3])
    
if position == 0:
    print("There is no data for the telephone number entered")

运行我的代码后,我收到用户输入电话号码的提示,我输入了包括破折号 (-) 在内的 7 位电话号码,但在我按下回车后,程序停止运行并且没有错误。有人知道为什么吗?

标签: python

解决方案


真的建议您仔细查看代码,因为它有很多错误。

对于初学者,

data1 = open("data1.txt", "r")
for line in d1:
d1 = line.split(":")
name = d1[0]
number = int(d1[1])
d1.close()
  1. 在这里,您尝试循环 d1 但 d1 是一个空列表。我想你想做的是这个for line in data1:
  2. 你正在使用分割线,:但它给出了一个包含单个元素的列表,你会得到index out of range一个d1[1]
  3. 您正在关闭列表而不是实际文件(再次,错字)

为了帮助您入门,这里有一个示例代码,您可以在此基础上进行构建

d1 = []
d2 = []
d3 = []

#data1.txt = Bob, 555-1234 Matthew, 555-2345 Mark, 555-3456 Luke, 000-1234 John, 000-2345

with open('data1.txt','r') as file1: #this format automatically closes the file
    for line in file1:
        data1 = line.split(" ")      #split using "space"
        d1.append(data1[0])          #append it to the respective list
        d1.append(data1[1])
print(d1)

输出:['鲍勃,','555-1234']

注意:在上面的代码中,data1[0]在名称后面附加了“,”,例如“Bob,”。

使用这些建议修改您的代码,如果您需要进一步的帮助,请告诉我。


推荐阅读