2013-03-23 35 views
-1

这里的问题是,我只是无法得到python来检查如果Currency1是在字符串,如果它不是然后打印,有一个错误,但如果Currency1 IS字符串然后移动和要求用户输入Currency2,然后再次检查。IF语句错误新变量输入python

+1

否则类型检查python意味着*你做错了*。 – 2013-03-23 19:59:15

回答

1

您可以使用try-except

def get_currency(msg): 
    curr = input(msg) 
    try: 
     float(curr) 
     print('You must enter text. Numerical values are not accepted at this stage') 
     return get_currency(msg) #ask for input again 
    except: 
     return curr    #valid input, return the currency name 

curr1=get_currency('Please enter the currency you would like to convert:') 
curr2=get_currency('Please enter the currency you would like to convert into:') 
ExRate = float(input('Please enter the exchange rate in the order of, 1 '+curr1+' = '+curr2)) 
Amount = float(input('Please enter the amount you would like to convert:')) 
print (Amount*ExRate) 

输出:

$ python3 foo.py 

Please enter the currency you would like to convert:123 
You must enter text. Numerical values are not accepted at this stage 
Please enter the currency you would like to convert:rupee 
Please enter the currency you would like to convert into:100 
You must enter text. Numerical values are not accepted at this stage 
Please enter the currency you would like to convert into:dollar 
Please enter the exchange rate in the order of, 1 rupee = dollar 50 
Please enter the amount you would like to convert: 10 
500.0 
+0

谢谢!这种方法效果很好!非常感谢你! :d – ConfusedChild24 2013-03-23 20:32:21

1

你竟然试图为:

if type(Currency1) in (float, int): 
    ... 

isinstance是更好地在这里:

if isinstance(Currency1,(float,int)): 
    ... 

,甚至更好,你可以使用numbers.Number抽象基类:

import numbers 
if isinstance(Currency1,numbers.Number): 

虽然... Currency1 = str(raw_input(...))将保证Currency1是一个字符串(不是整数或浮点数)。实际上,raw_input作出了保证,额外str这里只是多余的:-)。

如果你想检查功能字符串是否可以转换为数字,那么我认为最简单的方法是将只是尝试一下,看看:

def is_float_or_int(s): 
    try: 
     float(s) 
     return True 
    except ValueError: 
     return False 
+0

嘿谢谢..但这里的实际问题是,我检查后,如果Currency1是一个字符串,我不能设法让用户输入Currency2的下一个值。它给我一个语法错误。 elif: Currency2 = str(input('请输入您想转换成的货币:')))#此位不起作用 – ConfusedChild24 2013-03-23 20:02:21