Jython 2.5 isdigit
Я пытаюсь добавить isdigit() в программу, чтобы я мог проверить, что вводимые пользователем действительны. Это то, что я до сих пор. Но когда я запускаю его, введите символ, произнесите "f". Вылетает и выдает ошибку, которая будет опубликована под кодом. Есть идеи?
def mirrorHorizontal(source):
userMirrorPoint = requestString("Enter a mirror point from 0 to halfway through the pitcure.") #asks user for an input
while (int(userMirrorPoint) < 0 or int(userMirrorPoint) > (int(getHeight(source) - 1)//2)) or not(userMirrorPoint.isdigit()):
userMirrorPoint = requestString("Enter a mirror point from 0 to halfway through the pitcure.")
height = getHeight(source)
mirrorPoint = int(userMirrorPoint)
for x in range(0, getWidth(source)):
for y in range(0, mirrorPoint):
topPixel = getPixel(source, x, y)
bottomPixel = getPixel(source, x, height-y-1)
color = getColor(topPixel)
setColor(bottomPixel, color)
Ошибка: f Неправильное значение аргумента (правильного типа). Произошла ошибка при попытке передать аргумент функции. Пожалуйста, проверьте строку 182 из / Объемы /FLASHDRIVE2/ Колледж / Весна 16'/ Программы - CPS 201/PA5Sikorski.py
1 ответ
Сам isdigit() ведет себя в jython версии 2.7.0, которую я имею локально
>>> '1'.isdigit()
True
>>> ''.isdigit()
False
>>> 'A'.isdigit()
False
>>> 'A2'.isdigit()
False
>>> '2'.isdigit()
True
>>> '22321'.isdigit()
True
Попробуйте разбить ваше большое выражение, поскольку приведение типов к целым числам приведет к ошибкам для нечисловых строк. Это верно для всех версий Python.
>>> int('b')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'b'
>>> int('2')
2
Вы, вероятно, хотите быть осторожным с порядком частей этого длинного выражения (того или иного или...). Breaking it up would also make it more readable.