我希望我的代码要做的是获取输入文件并从文件中读取整数列表(例如40
,34
,14
,52
) ,然后我希望它将这些整数保存到列表中,然后使用负索引向后迭代列表,反过来显示它们。
fileobject = open(filename,'r')
contents = fileobject.read()
fileobject.close()
contentlength = (-len(contents)-1)
for i in range(-1,contentlength,-1):
print(contents[i])
代码以相反的顺序运行并打印出我的数字,但它会以奇怪的间距打印出来。如果文件包含数字40
,34
,14
和52
,则以下是示例输出:
2
5
4
1
4
3
0
4
答案 0 :(得分:0)
您当前代码的问题在于您永远不会拆分您的输入数字。您将迭代输入文件的文本并一次将其写回一个字符(以相反的顺序)。如果您希望数字保持不变(例如"40"
,而不是"0"
后跟"4"
),并且输入中的空格不会出现在输出中,您可以在你反向写出来之前,我需要拆分输入字符串。
尝试:
with open(filename) as f: # a with statement handles closing the file automatically
text = f.read() # read file as a single string
contents = text.split() # form a list by splitting the text on whitespace
其余代码(执行输出循环)可以像当前一样工作。然而,更多的" Pythonic"解决方案是在列表上的反向迭代器上使用for
循环,而不是使用range
和索引:
for num_string in reversed(contents):
print(num_string)
请注意"数字"由此代码处理的实际上不是int
个对象。它们始终保持着弦。如果您确实需要对值进行一些数学运算,而不是仅仅打印它们,那么您可能希望使用int
构造函数将字符串转换为实际的Python数字。