Author Topic: Не менее глупые вопросы по Питону  (Read 5495 times)

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #30 on: 02 June 2023, 22:02:55 »
  • 0
  • 0
А чё это он мне рекомендует то, что мне не подходит?
Система рекомендаций сломалась от вашей древности.
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29403
  • Карма: +4070/-342
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #31 on: 10 June 2023, 14:25:58 »
  • 0
  • 0
Остановился на Тhonny, самое то, как раз как представлял, спасибо за наводку!  :up:

Начал играться с конвертацией переменных и вот такой вопрос:
Quote
# Assignment
pi = 3.14159
# checking the type
print(type(pi))
# conversion& printing
pi_int = bool(pi)
print(pi_int)

почему ответ True? ??? :-\ Что именно питон делает при конвертации не 0/1 в булевые переменные?

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29403
  • Карма: +4070/-342
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #32 on: 10 June 2023, 14:32:40 »
  • 0
  • 0
А это?
Quote
>>> bool("Путин мудак")
True
Я конечно не против, но хотелось бы сочные детали  ;D

Offline Квас

  • Ветеран
  • *****
  • Posts: 1288
  • Карма: +370/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #33 on: 10 June 2023, 16:00:12 »
  • 0
  • 0
"Ложные" значения превращаются в False, остальные - в True. "Ложных" значений много: 0, None, пустые строка/список/словарь/тупл, а также, оказывается, можно определять кастомные (я не знал): https://docs.python.org/3/library/stdtypes.html#truth-value-testing Имхо, сомнительный дизайн, но что есть, то есть.

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29403
  • Карма: +4070/-342
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #34 on: 10 June 2023, 16:42:11 »
  • 0
  • 0
спасибо! т.е. упрощая False для чисел это нули, а для стрингов - пустые? разумно, уже представляю как с помощью bool() можно экономить некоторые логические тесты

Offline Квас

  • Ветеран
  • *****
  • Posts: 1288
  • Карма: +370/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #35 on: 10 June 2023, 17:14:03 »
  • 0
  • 0
спасибо! т.е. упрощая False для чисел это нули, а для стрингов - пустые? разумно, уже представляю как с помощью bool() можно экономить некоторые логические тесты

Ага. Экономить можно и без применения bool, потому что в тест может идти любое значение, не только True/False. Например, если s - строка:
Code: [Select]
if s:
    print('Первая литера:', s[0])
else:
    print('Пустая строка')

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5667
  • Карма: +2053/-156
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #36 on: 10 June 2023, 17:14:37 »
  • 0
  • 0
Квасе, опередили :).

Автоматическое приведение типов — сила. Силы которой си/плюсы не знают :lol:.
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #37 on: 10 June 2023, 17:30:43 »
  • 0
  • 0
Силы которой си/плюсы не знают :lol:.
Что за бред? В сях тоже можно в if числа совать. А в C++ можно вообще как угодно переопределять конверсию типов, не хуже, чем в Питоне. А вот такая конверсия как в JS типа "1" + 2 -- зло.
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5667
  • Карма: +2053/-156
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #38 on: 10 June 2023, 17:48:59 »
  • 0
  • 0
Переопределять и в Питоне можно. А мы про ситуацию из коробочки.
В случае со строками в JS всё более-менее логично: со строкой может конкатенировать только строка, потому следующие после строки операнды и приводятся к строке.
А что там до — это уже порядок исполнения.
Каковой порядок и для приведения есть.
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29403
  • Карма: +4070/-342
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #39 on: 10 June 2023, 18:01:21 »
  • 0
  • 0

Ага. Экономить можно и без применения bool, потому что в тест может идти любое значение, не только True/False. Например, если s - строка:
Code: [Select]
if s:
    print('Первая литера:', s[0])
else:
    print('Пустая строка')
а если s случайно флоутом окажется, то что сделает s[0]? вернет первую цифру?

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29403
  • Карма: +4070/-342
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #40 on: 10 June 2023, 18:03:32 »
  • 0
  • 0
. А вот такая конверсия как в JS типа "1" + 2 -- зло.
я сегодня долго смотрел на print(“hey “ * 2), и не мог поверить, что такое работает

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #41 on: 10 June 2023, 18:07:34 »
  • 0
  • 0
Переопределять и в Питоне можно. А мы про ситуацию из коробочки.
В Питоне сначала привыкаешь что угодно совать в if, а потом суёшь numpy.ndarray и получаешь по рукам в рантайме, а потом выискиваешь по всему проекту, где ещё могло быть такое. И не помню, ловит ли pylint такие ошибки, ну и понятно, что он в принципе может такое словить только если есть аннотации типов.
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #42 on: 10 June 2023, 18:43:39 »
  • 0
  • 0
а если s случайно флоутом окажется, то что сделает s[0]? вернет первую цифру?
Ошибку выдаст
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5667
  • Карма: +2053/-156
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #43 on: 10 June 2023, 19:00:28 »
  • 0
  • 0
В Питоне сначала привыкаешь что угодно совать в if, а потом суёшь numpy.ndarray и получаешь по рукам в рантайме
Ну вот за такое точно надо бить по рукам писателей numpy, а не писателей Python.
А зачем, интересно, массив в if совать? Такое и в JS может интересным боком вылезти.
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5667
  • Карма: +2053/-156
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #44 on: 10 June 2023, 19:02:26 »
  • 0
  • 0
я сегодня долго смотрел на print(“hey “ * 2), и не мог поверить, что такое работает
Это не баг, это фича.
Тот, кто только BASIC знает, может, тоже на лямбды круглыми глазами смотрит и не может поверить.
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный