Python 3.2.1: преобразование записи в число - PullRequest
0 голосов
/ 01 ноября 2011

Я сам пытаюсь создать что-то вроде Python "Цена верна".Моя проблема в том, что я пытаюсь преобразовать запись в число.См. Код ниже:

 ...

 Podium1Bid = Entry(Point(42.5, 35), 4)
Podium2Bid = Entry(Point(122.5, 35), 4)
Podium3Bid = Entry(Point(202.5, 35), 4)
Podium4Bid = Entry(Point(282.5, 35), 4)

Bid1 = int(Podium1Bid.getText())
Bid2 = int(Podium2Bid.getText())
Bid3 = int(Podium3Bid.getText())
Bid4 = int(Podium4Bid.getText())

 ...

Строки Bid1 = int (Podium1Bid.getText ()) и т. Д. Через Bid4 ... дают мне ошибку:

 Traceback (most recent call last):
    File "<pyshell#8>", line 1, in <module>
       ContestantsRow()
    File "<pyshell#7>", line 31, in ContestantsRow
       Bid1 = int(Podium1Bid.getText())
 ValueError: invalid literal for int() with base 10: ''

У меня естьтакже пытался использовать eval () и подобные вещи, и я все еще получаю ошибки.

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Если бы Point и Entry были вашими собственными классами, вы можете добавить метод __int__ в свой класс Entry .Это научит класс быть конвертируемым в целое число.

В случае графической библиотеки Python вы должны проверить объекты с помощью vars(Podium1Bid), чтобы увидеть, какие атрибуты напрямую доступны с чем-то вроде Podium1Bid.widthили Podium1Bid.point.x.

3 голосов
/ 01 ноября 2011

Я точно не знаю, что здесь происходит с этими PodiumBid объектами, но ошибка:

ValueError: invalid literal for int() with base 10: ''

просто означает, что python не знает, как преобразовать пустую строку в число. int('') вызовет то же исключение.

Если ваше намерение, чтобы пустая строка была равна 0, вы можете сделать что-то вроде этого:

int(mystring or 0)

, который будет использовать 0 в качестве ввода для int, если mystring оценивается как False (например, пустые строки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...