我在Python中使用货币转换器,但.isdigit()对我不起作用

时间:2014-10-15 11:52:00

标签: python python-2.7

import urllib2
import json

print "Hello and welcome to Currency Converter v0.1"

pounds = input("amount you wish to exchange: ")
url = "http://rate-exchange.appspot.com/currency?from=GBP&to=EUR"
if pounds.isdigit():
    print total
else:
    print "Please, use numeric input, we are not able to convert letters into"
    "money. (But that would be awesome!)"

response = urllib2.urlopen(url).read()
data = json.loads(response.decode('utf8'))
rates = data ['rate']
total = pounds * rates

这是我的代码。当我运行这个时,我收到了这个错误:

   if pounds.isdigit():
AttributeError: 'int' object has no attribute 'isdigit' (when entering number into input)

或使用不同的输入:

   File "<string>", line 1, in <module>
NameError: name 'asedhfafsdg' is not defined (when entering letters in input)

2 个答案:

答案 0 :(得分:1)

您正在使用 使用raw_input()input()

在Python 2中,input()eval(raw_input())相同;例如用户给出的输入作为Python表达式执行。因此,如果您输入可以作为有效Python整数文字执行的文本,您将获得一个int对象,但如果您输入asedhfafsdg,那么这被视为有效的Python标识符,您将得到一个{ {1}}。

如果切换到使用NameError,则必须明确地将输入转换为整数:

raw_input()

您可能还想研究这个关于要求用户输入的规范Stack Overflow帖子:Asking the user for input until they give a valid response

答案 1 :(得分:0)

如果您希望输入整数,也可以尝试这种方式。

>>> try:
...     pounds = int(raw_input("amount you wish to exchange: "))
... except ValueError:
...     print "Please, use numeric input...."
... 
amount you wish to exchange: zero
Please, use numeric input....