Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 December 21

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Vlad
Всем привет, прорешиваю контест по массивам мипт, по условию вводятся числа с новой строки пока не будет введена решетка, с этим все окей, но решение не полное, так как при проверке задачи выяснилось, что программа выдает ошибку, если все числа вводятся строкой. Так вот #вопрос как мне реализовать проверку, число вводится или строка? Ведь по дефолту все данные input являются строкой и я принудительно их интую. Можно ли создать условие типа  ЕСЛИ <я могу интовать> то: ... ?
Либо str.isdigit()
Либо
try:
   int(str)
except ValueError:
   # your code
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Даниил Кустов
Либо str.isdigit()
Либо
try:
   int(str)
except ValueError:
   # your code
спасибо, isdigit самое то
источник
2020 December 23

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Vlad
спасибо, isdigit самое то
С отрицательными числами и float'ами не будет работать, если что
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Даниил Кустов
Либо str.isdigit()
Либо
try:
   int(str)
except ValueError:
   # your code
Дополню - float(str)
Если нужны только целые то if float.is_integer():
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Почему reversed(range(...)) оказывается быстрее чем просто range(...)?
источник

А

Айван in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Бензофуран Гетероцикл
С отрицательными числами и float'ами не будет работать, если что
Зато будет работать с "²". Не понимаю почему именно isdigit обычно советуют :/
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Айван
Зато будет работать с "²". Не понимаю почему именно isdigit обычно советуют :/
Может быть синдром утёнка?
Привет, кстати
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Айван
Зато будет работать с "²". Не понимаю почему именно isdigit обычно советуют :/
По итогу регулярка оказывается лучшим решением))
источник

E

Egor in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Бензофуран Гетероцикл
С отрицательными числами и float'ами не будет работать, если что
опять за старое
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Egor
опять за старое
А что поделать
Нюансы)
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Ты ж помнишь в соседнем чате обсуждение. Тема внезапно слишком глубока.
источник

А

Айван in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Бензофуран Гетероцикл
По итогу регулярка оказывается лучшим решением))
А? Если проверить строку на только числа — isdecimal,  если могут быть отрицательными — int, если с плавающей точкой — float
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Айван
А? Если проверить строку на только числа — isdecimal,  если могут быть отрицательными — int, если с плавающей точкой — float
если могут быть отрицательными int - подразумевается float().is_integer() ? Проблема в том, что здесь программа сначала пытается переделать строку во флоат и  только потом проверяет.  В случае если на вход пришло не число - ошибка. x.isdigit() работает прекрасно, но да, я не тестил отрицательные числа и походу надо искать другой вариант...
источник

E

Egor in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Vlad
если могут быть отрицательными int - подразумевается float().is_integer() ? Проблема в том, что здесь программа сначала пытается переделать строку во флоат и  только потом проверяет.  В случае если на вход пришло не число - ошибка. x.isdigit() работает прекрасно, но да, я не тестил отрицательные числа и походу надо искать другой вариант...
def is_int(s: str) -> bool:
   try:
       return s.isdigit() or float(s).is_integer()
   except ValueError:
       return False


я предлагаю так, но он все равно пропускает некоторые варианты
источник

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Egor
def is_int(s: str) -> bool:
   try:
       return s.isdigit() or float(s).is_integer()
   except ValueError:
       return False


я предлагаю так, но он все равно пропускает некоторые варианты
Это костыль
источник

E

Egor in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Даниил Кустов
Это костыль
где?
источник

E

Egor in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
тут уже остается регулярки писать, конечно.
но если не учитывать совсем странные варианты, то как ты еще будешь проверять, есть ли в строке лишние символы?
источник

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Учитывая возможности питона это конечно костыль, но другого варианта кроме регулярок толком и нету
источник

E

Egor in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Даниил Кустов
Учитывая возможности питона это конечно костыль, но другого варианта кроме регулярок толком и нету
что ты имеешь в виду под костылем?
источник

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Нежелательное решение
источник