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)
答案 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....