python - 编写一个程序,从三个文件中查询信息。程序应要求用户输入电话号码、打印姓名、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 位电话号码,但在我按下回车后,程序停止运行并且没有错误。有人知道为什么吗?
解决方案
我真的建议您仔细查看代码,因为它有很多错误。
对于初学者,
data1 = open("data1.txt", "r")
for line in d1:
d1 = line.split(":")
name = d1[0]
number = int(d1[1])
d1.close()
- 在这里,您尝试循环 d1 但 d1 是一个空列表。我想你想做的是这个
for line in data1:
- 你正在使用分割线,
:
但它给出了一个包含单个元素的列表,你会得到index out of range
一个d1[1]
- 您正在关闭列表而不是实际文件(再次,错字)
为了帮助您入门,这里有一个示例代码,您可以在此基础上进行构建
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,”。
使用这些建议修改您的代码,如果您需要进一步的帮助,请告诉我。
推荐阅读
- java - 执行新的可运行文件时丢失 ApplicationContext
- javascript - 浏览器客户端中的大型 JSON 对象
- acumatica - Acumatica ERP 需要多少 Microsoft SQL Server CAL
- bukkit - Minecraft Bukkit 插件编程保持 Java 对象重载
- sql - 将繁琐的连接作为参数传递
- php - 在此服务器上未找到请求的 URL /learnPHP2/upload.php
- angularjs - Karma-Jasmine 似乎加载了两次文件
- c# - 使用实体框架连接到 Oracle 数据库
- python - 如何在 Mann-whitney u 测试的数据框中忽略 NaN?
- php - 提交表单数据,一键跳转到下一页