gpt4 book ai didi

python - 如何从Python文件中创建元组列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:49 27 4
gpt4 key购买 nike

好的,我有一个类似这样的文件。

panite,1,1800
ruby,2,100
diamond,0.75,900
emerald,3,250
amethyst,2,50
opal,1,300
sapphire,0.5,750
benitoite,1,2000
malachite,1,60

我们的老师给了我们使用 try/except 的代码来帮助我们打开文件。我需要打开文件并读取每一行并使每一行成为一个元组,然后将其放入列表中。该列表应该是最后一个数字除以中间的数字,然后该值后面跟着 gem 的名称(中间的数字是 gem 的克拉)。我遇到的问题是我什至无法让它从文件中生成列表。这就是我尝试打开它但没有成功的方法。

def main():
fileFound = False
while not fileFound:
fileName = input('File name containing jewel data: ')
try:
dataFile = open(fileName, "r")
fileFound = True
knapsack()
except:
print ('Could not find that file -- try again')

def knapsack():
list = dataFile.readline()

当我将其更改为 def knapsack() 下的简单 printstatement 时,我实际上取得了一些成功,它将打印一些简单的内容,例如 2+2,但是当我尝试创建一个列表时,它给了我 except 错误反而。这是我的第一堂编程课,因此我们将不胜感激。

最佳答案

def make_jewel(line):
name, carats, price = line.split(",")
return (float(price)/float(carats), name)

def main():
while True:
file_name = input('File name containing jewel data: ')
try:
with open(file_name) as inf:
data = [make_jewel(line) for line in inf]
break
except FileNotFoundError:
print('Could not find that file -- try again')

main()

以及一些评论:

  • except: 没有指定的异常类型,也称为“裸异常”,会令人不悦,因为它会捕获所有内容。您应该指定您期望看到的异常类型,并仅处理这些异常;如果您捕获了所有内容,并且出现了完全意外的失败(即 ComputerOnFireError!),您将永远不会发现它。

  • 首选使用 with 打开文件,因为它可以确保文件始终正确关闭。

  • 当您以文本模式打开文件时,您可以逐行迭代它;这是处理文件的最常见方法。

  • 当你.split()一个字符串时,你会得到一个字符串列表。在对这些片段进行数学运算之前,您必须使用 int()float() 将它们从字符串转换为数值。

希望有帮助。

关于python - 如何从Python文件中创建元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23230107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com