我是Python的新手,我想知道如何解决这个问题。我正在尝试为我的计算类为学校项目制作货币转换器,但是我收到了错误。
以下是代码:
## Currency conversion calculator Mk.2 ##
# USD, JPY, EUR
GBP = ["1.66","169.14","1.21"]
# GBP, JPY, EUR
USD = ["0.60","102.20","0.73"]
# GBP, USD, EUR
JPY = ["0.0059","0.0098","0.0072"]
# GBP, USD, JPY
EUR = ["0.82","1.36","139.70"]
# Inputs and outputs
user_input = -1
output = -1
while True:
print("")
print("----------------------------------------------------")
print("Example: 14 GBP to USD")
print("")
user_input = input("How much would you like to convert? ")
user_input = user_input.split()
if user_input[1] == "GBP":
if user_input[3] == "USD":
output = user_input[3] * USD[0]
print(output)
elif user_input[3] == "JPY":
print("Filler text")
elif user_input[3] == "EUR":
print("Filler text")
elif user_input[1] == "USD":
if user_input[3] == "GBP":
print("Filler text")
elif user_input[3] == "JPY":
print("Filler text")
elif user_input[3] == "EUR":
print("Filler text")
elif user_input[1] == "JPY":
if user_input[3] == "GBP":
print("Filler text")
elif user_input[3] == "USD":
print("Filler text")
elif user_input[3] == "EUR":
print("Filler text")
elif user_input[1] == "EUR":
if user_input[3] == "GBP":
print("Filler text")
elif user_input[3] == "USD":
print("Filler text")
elif user_input[3] == "JPY":
print("Filler text")
else:
print("Please input it as something like '15 GBP to USD' remembering capitals!")
这是我得到的错误:
Traceback (most recent call last):
File "C:\Users\Kieran\Desktop\converter.py", line 27, in <module>
output = user_input[3] * USD[0]
TypeError: can't multiply sequence by non-int of type 'str'
顺便说一下,我正在使用Python 3.3.3。
非常感谢!
答案 0 :(得分:2)
更改行
output = user_input[3] * USD[0]
到
output = float(user_input[0]) * float(USD[0])
注意强>
正如错误所示,您正在尝试将序列(此处为字符串)与字符串can't multiply sequence by non-int of type 'str'
相乘。
显然,这里有两个问题
答案 1 :(得分:1)
你想要将两个字符串相乘
user_input[3] = "USD"
和
USD[0] = "0.60"
output = user_input[3] * USD[0]
你可能意味着:
output = float(user_input[0]) * float(USD[0])
顺便说一句,你应该把所有这些整数代替字符串
USD = ["0.60","102.20","0.73"]
至USD = [0.60,102.20,0.73]
答案 2 :(得分:1)
你不能在python中乘以字符串并获得算术响应。您需要将字符串转换为整数。更改以下行:
USD = [0.60,102.20,0.73]
和
output = float(user_input[0]) * USD[0])
答案 3 :(得分:1)
我建议使用字典而不是列表来简化您的生活:
# USD, JPY, EUR
GBP = ["1.66","169.14","1.21"]
到
currencies ={"GBP" : {"USD": 1.66, "JPY": 169.14, "EUR": 1.21}, "USD": {blah, blah}
然后转换给定输入14 GBP to USD
:
(start_cur, end_cur) = user_input[1], user_input[3] # for readabilities sake
converted = user_input[0] * currencies[start_cur][end_cur]
整个计划:
## Currency conversion calculator Mk.3 ##
currencies = {
"GBP" : {"USD": 1.66, "JPY": 169.14, "EUR": 1.21},
"USD" : {"GBP": 0.60, "JPY": 102.20, "EUR": 0.73},
"JPY" : {"GBP": 0.0059, "USD": 0.0098, "EUR": 0.0072},
"EUR" : {"GBP": 0.82, "USD": 1.36, "JPY": 139.70}
}
while True:
print("")
print("----------------------------------------------------")
print("Example: 14 GBP to USD")
print("")
try:
user_input = input("How much would you like to convert? ").split()
(start_cur, end_cur) = user_input[1], user_input[3] # for readabilities sake
converted = float(user_input[0]) * currencies[start_cur][end_cur]
print(converted)
except ValueError:
print("Please input it as something like '15 GBP to USD' remembering capitals!")
答案 4 :(得分:0)
您尝试将字符串乘以另一个字符串。
试试这个:
output = float(user_input[0]) * float(USD[0])
user_input [3]是'GBP'一个字符串,我想你想说0.60