这里的问题是我无法让python检查Currency1是否在字符串中,如果不是,则打印存在错误,但如果Currency1在字符串中,则继续并要求用户输入Currency2,然后检查再说一遍。
问问题
123 次
2 回答
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
于 2013-03-23T19:57:48.127 回答
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
于 2013-03-23T20:11:50.190 回答