2014-01-21 4 views
-1

У меня есть функция:Invalid буквальным для 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 (или просто номер) поставляется, это просто напечатано. Если это не просто число, мы пытаемся получить, если это URL-адрес тщеславия, и разрешить реальный 64-битный идентификатор, если мы не сможем решить (файл ['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' в качестве имени переменной, это метод питона, который, если вы перезаписать его, может если вы попытаетесь использовать его, добавьте некоторые странные ошибки дальше по строке. – Ffisegydd

ответ

5

Я не знаю вашего полного отслеживающий, но ...

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

Traceback (самый последний вызов последнего): Файл "test.py", строка 13, в печати Int (идентификатор) ValueError: неверный буквальным для междунар() с основанием 10: 'asadasd58' – RomaValcer

+0

Редактировать ваш вопрос и поставить это там. Но да, это неудачно, потому что вы не называете 'isdigit'. Вы просто проверяете, не является ли сама функция «нет» – mhlester

+0

Да, я такой дурак ... – RomaValcer

Смежные вопросы