Size: a a a

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

2020 December 23

E

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

ДК

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

E

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

V

Vlad 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)
я тут не особо костыль вижу.
может я что-то не понял, укажите мне на костыль. только не забудьте сказать, что вы имеете в виду под костылем
источник

А

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


Source:
print("2²".isdigit())


Result:
True
источник

А

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


Source:
print("2²".isdigit())


Result:
True
Да прекрасно, кто же спорит?)
источник

А

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

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
try-except дорого. если задача избавиться от ложного срабатывания isdigit на юникодные суперскрипты,  то можно код символа смотреть
источник

БГ

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

OM

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


Source:
print(all(map(lambda x: ord('0') <= ord(x) <= ord('9'), "⁰123456") ))


Result:
False
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
Language:
python3


Source:
print(all(map(lambda x: ord('0') <= ord(x) <= ord('9'), "⁰123456") ))


Result:
False
Функционально, однако)
Но что насчёт отрицательных чисел?
источник

А

Айван in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
try-except дорого. если задача избавиться от ложного срабатывания isdigit на юникодные суперскрипты,  то можно код символа смотреть
Есть isdecimal же…
источник

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Айван
Есть isdecimal же…
-123 все еще не работает
источник

БГ

Бензофуран Гетероцик... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Даниил Кустов
-123 все еще не работает
def is_int(string:str):
   try:
       return float(string).is_integer()
   except ValueError:
       return False
источник

E

Egor in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Бензофуран Гетероцикл
def is_int(string:str):
   try:
       return float(string).is_integer()
   except ValueError:
       return False
sting
ну хотя бы не взял зарезервированное
источник

ДК

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

ДК

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

БГ

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

БГ

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