Если вы хотите знать, если что-то «число в строку, один, который будет работать с Int()», вы делаете это просто вызывая int
:
try:
i = int(myvar)
# It's an int, and we have the value if you want it
except ValueError:
# It's not an int
Это общий случай принцип EAFP: проще просить прощения, чем разрешения. Вместо того, чтобы пытаться угадать, не получится ли что-то, обычно проще просто попробовать его и посмотреть, не сработает ли он.
Это особенно рекомендуется в тех случаях, когда попытка угадать сложнее, чем кажется. Например, люди всегда предлагают использовать метод isdigit
, но это не удается в ряде случаев. Например:
isdigit
ложно отрицательных чисел, так как '-'
символ не цифра.
isdigit
неверно для чисел с завершающим пробелом (например, потому что вы не rstrip
пинг-строки из вашего ввода).
isdigit
подходит для сотен незападных цифр и цифр специальной формы, которые нельзя использовать с int
.
int
изменил свои правила, по крайней мере, дважды между Python 2.0 и 3.4 и всегда может измениться.
Вы, наверное, мог придумать сложное правило, которое было точно так же, как и «будет работать с межд()», как интерпретировать в какой-то конкретной версии Python, но почему, когда int
, очевидно, гарантировано всегда делать то же самое, что и int
?
Вы пробовали что-нибудь или вы просто ищете людей, чтобы сделать это за вас? –
Это действительно не хороший пример кода. Во-первых, это не легальный код (отсутствует двоеточие после 'def', отсутствует отступ после' def'). И это путано использовать '/ if' для' else', даже в комментарии. И 'standardin' не является встроенной функцией, так как мы знаем, что она запускает (это' str' или 'bytes'? Включает ли она завершающую новую строку? И так далее.) И большая часть кода кажется неуместной к проблеме. Кроме того, странное сочетание стилей заглавных букв, ненужных круглых скобок и т. Д. Не помогает. Пожалуйста, прочитайте [MCVE] (http://stackoverflow.com/help/mcve) в справке. – abarnert