2014-01-21 35 views
-1

我有一個函數:無效字面對於int

import urllib2 
import json 
id = u'asadasd58' 
if not id.isdigit: 
    url = 'http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key='+SteamKey+'&vanityurl='+id 
    file = urllib2.urlopen(url).read() 
    file = json.loads(file, 'utf-8') 
    if file['response']['success'] == 1: 
     print file['response']['steamid'] 
    else: 
     print 0 
else: 
    print int(id) 

它應該像這樣的工作:如果64位SteamID(或只是一個數字)被提供,它只是打印出來。如果它不只是一個數字,我們試圖得到它是否是一個虛空網址,並解決真正的64位ID,如果我們無法解決(文件['response'] ['success'] == 42),那麼我們返回0.但是,當你提供上面的id時,它會嘗試對它進行整型,即使它不是數字。爲什麼?

Traceback (most recent call last): File "test.py", line 13, in <module> print int(id) ValueError: invalid literal for int() with base 10: 'asadasd58' 
+0

儘量不要使用'id'作爲變量名,這是一個Python的方法,如果你將其覆蓋,能如果您嘗試使用它,則會在該行的更多位置拋出一些奇怪的錯誤。 – Ffisegydd

回答

5

我不知道你的全追蹤,但是......

id = u'asadasd58' 
if not id.isdigit(): # call this function! with real parentheses! 
    ... 
else: 
    print int(id)  # this will fail! 
+0

回溯(最近通話最後一個): 文件 「test.py」,13號線,在 打印INT(ID) ValueError異常:無效的字面INT()基數爲10: 'asadasd58' – RomaValcer

+0

編輯你的問題,並把它在那裏。但是,它失敗了,因爲你沒有調用'isdigit'。你只是檢查功能本身是否「不是」 – mhlester

+0

是的,我是一個傻瓜... – RomaValcer

相關問題