为什么波士顿没有定义?如何从文件中读取姓名?

2024-04-19 06:59:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码:

infile = open("pa6numbers.py","r")
num = eval(infile.readline())

Boston = infile
sum = 0
infant = 0
elder = 0
pneumonia = 0

while num != -1:

 if num != -1:
     sum +=int(num)
 elif num < 1:
     infant=+1
 elif num > 65:
     elder += 1
 else:
     pneumonia+=1
 num = eval(infile.realine())

infile.close()

这是回溯:

^{pr2}$

当我运行我的程序时,它告诉我“NameError:name‘Boston’is not defined’”。在我正在阅读的文件中,我的任务是打印出各州以及婴儿、老年人和气喘症的死亡率。所以我想知道如何从文件中读出名字。在

请不要太复杂,因为我在CMPS150上,教授不想让我们在课堂上领先。在

我正在阅读的文件开头部分:

Boston, MA
509953
41145
20577
309257
Bridgeport, CT
113119
8921
2546
78218

Tags: 文件代码pyreadlineevalopenbostonnum
2条回答

通过使用eval,您假设数据文件的内容是有效的Python,而不是。在

如果我们尝试在交互式Python会话中计算第一行,请观察会发生什么:

> python
Python 2.7.13 (default, Dec 28 2016, 20:51:25) 
>>> eval('Boston, MA')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'Boston' is not defined

如何将数据read()转换为字符串,然后使用该字符串的splitlines()方法。根据您显示的输入文件片段,您将得到如下字符串列表。(下面的示例是从名为IPython的交互式Python环境中粘贴的,请查看。)

^{pr2}$

您可以将其转换为一个可用的数据结构,并使用字典理解功能,如下所示:

^{3}$

这个理解相当于以下嵌套的for-循环:

In [9]: data = {}
   ...: for j in range(0, len(lines), 5):
   ...:     numbers = []
   ...:     for i in range(j+1, j+5):
   ...:         numbers.append(int(lines[i]))
   ...:     data[lines[j]] = tuple(numbers)
   ...:     

In [10]: data
Out[10]: 
{'Boston, MA': (509953, 41145, 20577, 309257),
 'Bridgeport, CT': (113119, 8921, 2546, 78218)}

现在可以按城市索引这些数据:

In [11]: data['Boston, MA']
Out[11]: (509953, 41145, 20577, 309257)

或者迭代键和值:

In [16]: for k, v in data.items():
    ...:     print('key =',k, '; values =', v)
    ...:     
key = Boston, MA ; values = (509953, 41145, 20577, 309257)
key = Bridgeport, CT ; values = (113119, 8921, 2546, 78218)

这个问题在目前的情况下是不可能回答的。我已经复制了你的代码,并阅读了你的评论。我已经在pa6的第一行中加入了数字.py把“波士顿”这个词归档。你的错误在我的系统上被复制了,但它并没有在pa6.py文件中引用Boston,而是在pa6中引用了Boston数字.py未定义文件。如果你想解析这个文件,你需要把它变成纯文本。不是PY文件。这是我在自动取款机上看到的一个错误。波士顿在你的pa6里数字.py文件是一个变量,但它的定义并不是我根据收集到的上下文线索可以判断出来的。没有你的实际档案,这是最好的教育猜测,任何人都可以在这一点上。我有一种感觉,我可能是正确的假设这就是文件的设置方式。在

既然如此,pa6.py文件的第20行也有一个打字错误。在

num = eval(infile.realine())

这应该是

^{pr2}$

你有真实感。请将您正在解析的文件发布为纯文本,我们可以给您一个更好的答案。在

相关问题 更多 >