【发布时间】:2019-05-03 13:23:59
【问题描述】:
我正在编写一个货币转换器,其中一个部分是一个程序,它允许您检查和更改英镑与其他三种货币之间的转换率。虽然实际转换很好,但我在将新费率导出到单行的泡菜文件时遇到了问题。这是因为,费率以以下格式写入泡菜文件: 英镑 1 欧元 1.15 美元 1.3 等
我将不胜感激。
我试过简单地转储一个列表和元组,但它根本不起作用 - 这不是 Python 错误,而是一个逻辑错误。
import pickle
Currencies = "Pound-Sterling", "Euro", "US-Dollar", "Japanese-Yen"
Displayed = {}
Exchange_rates = pickle.load(open("rates.pkl","rb"))
print("This program allows you to check and change the currency conversion rates before using the converter program.")
for Line in Exchange_rates:
if not "Pound-Sterling" in Line:
Displayed_key = Line.split(" ")[0]
Displayed_value = Line.split(" ")[1]
Displayed[Displayed_key] = Displayed_value
print("£1 is", Line)
Exchange_rates = {}
New_rates = open("rates.pkl","wb")
pickle.dump("",New_rates)
pickle.dump("Pound-Sterling 1",New_rates)
if getYesNo("Do you want to change an exchange rate for a currency (Y/N):"):
for i in range(1,4):
Currency = Currencies[i]
print("£1 is", Currency, Displayed[Currency])
Prompt = "Please input the new rate for", Currency, ":"
Prompt = " ".join(Prompt)
New_rate = float(input(Prompt))
To_append = Currency, New_rate
pickle.dump(To_append,New_rates)
New_rates.close()
新的 pickle 文件应该是单行的原始格式。相反,它要么在多行,要么不起作用,而且我无法摆脱括号和逗号。
【问题讨论】:
-
您选择在这个程序中使用酸洗有什么原因吗? Pickling 通常用于存储比一些字符串、浮点对更复杂的数据结构。
-
这一行
To_append = Currency, New_rate创建一个元组而不是空格分隔的字符串。为了改进你的python,我建议将这个(一旦工作)提交给codereview.stackexchange.com,因为有一些明显的方法可以改进它,例如使用规范的方式打开和读取文件