2013-08-15 1 views
0
yen = 0.0067 
bsp = 1.35 
usd = 0.65 
ero = 0.85 

if choice == "2": 
    Current_Currency = input("What currency do you want to exchange: Japenese Yen if so please type yen // British Sterling Pound please type bsp // US Dollers please Type usd // Euro please type ero.") 
    if Current_Currency == "yen": 
     amount = input("Type amount you wish to exchange") 
     Future_Currency = input("What currency do you want to exchange into: Japenese Yen if so please type yen // British Sterling Pound please type bsp // US Dollers please Type usd // Euro please type ero.") 
     New_Amount = Future_Currency * amount 

이걸 작성해야하며 분명히 연구를 통해 float가 필요하지만이를 구현하는 방법에 대한 단서는 없습니다.은 'str'유형의 non-int로 곱할 수 없습니다.

+1

이 파이썬 2입니까? 프롬프트에 무엇을 입력 했습니까? –

+0

'Current_Currency'는 문자열이 아니며,'yen' 변수의 값이 될 것입니다. 그래서 문자열''yen ''과 비교해 보면 – JoshG79

+0

이 아닐 수 있습니다. 미안합니다. – user2687255

답변

2

변수 이름을 변수와 혼동하는 것처럼 보입니다. 사용자로부터받는 통화 유형은 문자열이므로 eval을 호출하지 않으면 변수를 참조하는 데 사용할 수 없습니다.

new_amount = eval(future_currency) * amount 

이의 단점은 eval를 사용하는 사용자에게 코드에 영향을 미칠 수있는 가능한 방법을 제공한다는 것입니다. 대신 사전을 사용할 수 있습니다. 사전 값에 문자열을 매핑하고, 그래서 당신은 당신의 변수 선언을 수행 할 수 있습니다

yen = 0.0067 
bsp = 1.35 
usd = 0.65 
ero = 0.85 

을 그리고 사전에 그들을 설정이 사용

currencies = {'yen': 0.0067, 'bsp': 1.35, 'usd': 0.65, 'ero': 0.85} 

, 당신은 당신이에서 찾고있는 값을 찾을 수 있습니다 사전. 잘못된 사용자 입력을 올바르게 처리하는 것을 잊지 마십시오!

currencies = {'yen': 0.0067, 'bsp': 1.35, 'usd': 0.65, 'ero': 0.85} 

current_currency = raw_input() 
future_currency = raw_input() 
amount = int(raw_input()) 
// Check for errors in input here 
new_amount = amount * currencies[future_currency]/currencies[current_currency] 
+0

'input'을'raw_input'으로 바꾸고 (그러면'amount'에'int'를하십시오), 그러면 저에게 +1이옵니다. 'input'은'eval'을하기 때문에 보안 문제로 인해'eval'을 전혀 사용하지 않기 위해서 sage advice를 따르지 않는 말 그대로' "yen"'(따옴표 포함)을 지정할 필요가 있습니다 – JoshG79

+0

My 나쁜,하지만 지금 고정. 나는 치명적인 입력이 얼마나 중요한지 잊어 버렸습니다 ... – cptroot

+0

ok 나는 아주 조금 이해했지만 감사는 보안상의 이유로 – user2687255

0

선 미지 변수가 입력되면

Current_Currency = input("What currency do you want to exchange: Japenese Yen if so please type yen // British Sterling Pound please type bsp // US Dollers please Type usd // Euro please type ero.") 

오류가 발생되며, Current_Currency는 사용자에 의해 제공되는 변수 이름의 값으로 설정되므로, 광고

if Current_Currency == "yen": 

은 실제로 필요하지 않습니다.

yen = 0.0067 
bsp = 1.35 
usd = 0.65 
ero = 0.85 

Current_Currency = input("What currency do you want to exchange: Japenese Yen if so please type yen // British Sterling Pound please type bsp // US Dollers please Type usd // Euro please type ero.") 
amount = input("Type amount you wish to exchange") 
Future_Currency = input("What currency do you want to exchange into: Japenese Yen if so please type yen // British Sterling Pound please type bsp // US Dollers please Type usd // Euro please type ero.") 
New_Amount = Current_Currency/Future_Currency * amount 
+0

죄송합니다.이 트레이스 백 (가장 최근의 마지막 통화) : 파일 "/ Users/James/Downloads/Currency_Coverter_v1-4.py ", 30 행 New_Amount = Future_Currency/Current_Currency * amount TypeError :/: 'str'및 'str'에 대해 지원되지 않는 피연산자 유형 – user2687255

+0

입력 한 내용이 eval 된 결과를 직접 가져 오므로" yen "을 인용 부호로 사용하면 Current_Currency는"yen "이되지만 따옴표없이 엔을 입력하면 Current_Currency는 0.0067이됩니다. 물론 파이썬은 내 시스템과 다른 방식으로 작동하지 않는 한 – Joe

+0

은 eval hear 항상 이해하고 있지만 이해할 수 없다. – user2687255

관련 문제