from datetime import datetime
import requests
API_KEY = "..."
def convert_currency(src, dst, amount):
"""converts `amount` from the `src` currency to `dst` using the free account"""
url = f"http://data.fixer.io/api/latest?access_key={API_KEY}&symbols={src},{dst}&format=1"
data = requests.get(url).json()
if data["success"]:
# request successful
rates = data["rates"]
# since we have the rate for our currency to src and dst, we can get exchange rate between both
# using below calculation
exchange_rate = 1 / rates[src] * rates[dst]
last_updated_datetime = datetime.fromtimestamp(data["timestamp"])
return last_updated_datetime, exchange_rate * amount
if __name__ == "__main__":
import sys
source_currency = sys.argv[1]
destination_currency = sys.argv[2]
amount = float(sys.argv[3])
last_updated_datetime, exchange_rate = convert_currency(source_currency, destination_currency, amount)
# upgraded account, uncomment if you have one
# last_updated_datetime, exchange_rate = convert_currency source_currency, destination_currency, amount)
print("Last updated datetime:", last_updated_datetime)
print(f"{amount} {source_currency} = {exchange_rate} {destination_currency}")
大家好。我试图处理 sys 模块以制作 CLI 界面,但是当我启动它时,它会出错。不要告诉我到底是什么问题?提前致谢。
source_currency = sys.argv[1]
IndexError: list index out of range
问题是您错误地调用了您的应用程序。
sys.argv
包含您在命令行上传递给应用程序的参数。也就是说,如果您使用以下命令启动应用程序:然后 in
sys.argv
将是一个列表['app.py', '1', '2', '3']
。index out of range
通常意味着列表中该索引处没有元素。在您的情况下,这意味着您没有按照此代码的预期在命令行上传递参数。要修复,只需在启动时传递所需的参数。