Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: if-else python 3.4  (Прочитано 2527 раз)

0 Пользователей и 1 Гость просматривают эту тему.

delovoy

  • Автор темы
  • Гость
if-else python 3.4
« : 18 Сентября 2014, 19:10:16 »
привет всем, в программирования я практически не понимаю. Есть вопрос, ответ на который не нахожу. Пример:

nomer=input()
start250=2500000
end250=2509999

if nomer >= start250 and nomer <= end250 :
   print ('True')
else :
   print ('False')

Вроде все правильно? Но не работает. Если номер попадает в этот диапазон то выдаст True, если нет то False. Но почему то не работает.


Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: if-else python 3.4
« Ответ #1 : 18 Сентября 2014, 19:13:39 »
Я в вашем коде заменил на меньшие числа (для простоты) и все рабоатет.

Да и с вашими значениями - тоже. :idiot2:


Или я просто не правильно понял - что именно (как) оно у вас не работает? :idiot2:
« Последнее редактирование: 18 Сентября 2014, 19:16:13 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

delovoy

  • Автор темы
  • Гость
Re: if-else python 3.4
« Ответ #2 : 18 Сентября 2014, 19:26:11 »
Я в вашем коде заменил на меньшие числа (для простоты) и все рабоатет.
Да и с вашими значениями - тоже. :idiot2:
Или я просто не правильно понял - что именно (как) оно у вас не работает? :idiot2:

В вин хп. Запустил скрипт, увидел Введите номер: (ввел номер и нажал enter) и окно закрылось. Результат не отобразился

(Нажмите, чтобы показать/скрыть)

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: if-else python 3.4
« Ответ #3 : 18 Сентября 2014, 20:00:44 »
1) Функция input всегда возвращает строку.
2) В питоне отсутствует неявное приведение типов.

Код: (Python) [Выделить]
nomer = int(input())
start250 = 2500000
end250 = 2509999

if nomer >= start250 and nomer <= end250:
   print ('True')
else:
   print ('False')

Цитировать
Я в вашем коде заменил на меньшие числа (для простоты) и все рабоатет

Интересно каким образом? У меня сразу эксепшен выбрасывает:

Traceback (most recent call last):
  File "./azaza.py", line 5, in <module>
    if nomer >= start250 and nomer <= end250 :
TypeError: unorderable types: str() >= int()

Оффлайн chrome_cat

  • Активист
  • *
  • Сообщений: 923
    • Просмотр профиля
Re: if-else python 3.4
« Ответ #4 : 18 Сентября 2014, 20:10:04 »
Sly_tom_cat,
~$ ~/qw.py
2500001         
Traceback (most recent call last):
  File "/home/ubuntu/qw.py", line 6, in <module>
    if nomer >= start250 and nomer <= end250 :
TypeError: unorderable types: str() >= int()
~$
~$ cat ~/qw.py
#!/usr/bin/env python3
nomer=input()
start250=2500000
end250=2509999

if nomer >= start250 and nomer <= end250 :
   print ('True')
else :
   print ('False')
asd=input()
~$

delovoy

  • Автор темы
  • Гость
Re: if-else python 3.4
« Ответ #5 : 18 Сентября 2014, 20:46:06 »
1) Функция input всегда возвращает строку.
2) В питоне отсутствует неявное приведение типов.

То что надо. Благодарю, но у меня все равно не работает скрипт. Закрывается окно после ввода номера. В консоли проще, хоть указывает в чем проблема. Ладно, буду дома с линукса колдовать, а потом на вин перетаскивать (если получиться то что хотел)
« Последнее редактирование: 18 Сентября 2014, 20:48:00 от Delovoy »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: if-else python 3.4
« Ответ #6 : 18 Сентября 2014, 21:32:25 »
Delovoy, в конце добавь строку(Если угадал - проблема решится)
Код: (python) [Выделить]
nomer=input()
start250=2500000
end250=2509999

if nomer >= start250 and nomer <= end250 :
   print ('True')
else :
   print ('False')
nomer=input()
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

delovoy

  • Автор темы
  • Гость
Re: if-else python 3.4
« Ответ #7 : 18 Сентября 2014, 22:01:41 »
Спасибо, но уже винды нет под рукой, а на линуксе работает, и действительно необходимо явно указывать, что это int. послезавтра с работы буду колдовать. Отпишусь потом.

to alsoijw
asd=input()Так указывал, было тоже самое.

Пользователь решил продолжить мысль [time]18 Сентябрь 2014, 22:12:19[/time]:
И последний, решающий вопрос:

Код: (python) [Выделить]
nomer=int(input())
start1=1
end100=100
start300=300
end499=499
if nomer >= start1 and nomer <= end100 or nomer >= start300 and nomer <= end499 :
        print ('True')
else:
        print ('False')

А если диапазонов start и end штук 40. if-else разумно ли использовать как в примере? есть ли ограничения по количеству? Думаю пока через or все 40 штук вбить, если альтернативу не найду.
« Последнее редактирование: 18 Сентября 2014, 22:14:33 от Delovoy »

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: if-else python 3.4
« Ответ #8 : 18 Сентября 2014, 22:23:01 »
Цитировать
А если диапазонов start и end штук 40. if-else разумно ли использовать как в примере? есть ли ограничения по количеству? Думаю пока через or все 40 штук вбить, если альтернативу не найду.

Лол, ну ты учебник то хоть полистай. Циклы для таких случаев придумали.

Код: (Python) [Выделить]
ranges = [
    (1, 100),
    (200, 300),
    (600, 800)
]

def check_num(num):
   for x in ranges:
       if num >= x[0] and num <= x[1]:
           return True
   return False

num = int(input())
print('True' if check_num(num) else 'False')

« Последнее редактирование: 18 Сентября 2014, 22:47:28 от .ubuntufan »

delovoy

  • Автор темы
  • Гость
Re: if-else python 3.4
« Ответ #9 : 18 Сентября 2014, 22:29:49 »
Цитировать
А если диапазонов start и end штук 40. if-else разумно ли использовать как в примере? есть ли ограничения по количеству? Думаю пока через or все 40 штук вбить, если альтернативу не найду.

Лол, ну ты учебник то хоть полистай. Циклы для таких случаев придумали.



В том то и дело что полистал и нашел if-else, подумал что годиться)))
Вроде то что нужно. Пойду полистаю книгу для озарения.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: if-else python 3.4
« Ответ #10 : 18 Сентября 2014, 22:43:49 »
Так, вот оно - не проверил детали - код этот в 2.7 у меня работает. Там просто беда с неявными преобразованиями.
« Последнее редактирование: 18 Сентября 2014, 22:56:50 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: if-else python 3.4
« Ответ #11 : 19 Сентября 2014, 20:56:36 »
Так, вот оно - не проверил детали - код этот в 2.7 у меня работает. Там просто беда с неявными преобразованиями.

В питоне нет неявных перобразований. В 2.7 просто эта функция немного другое делает.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: if-else python 3.4
« Ответ #12 : 20 Сентября 2014, 00:30:53 »
.ubuntufan,

Цитировать
input([prompt])¶
Equivalent to eval(raw_input(prompt))

eval - как раз и сделает неявное преобразование.

Я больше наелся неявного конвертирования со строками и байтовыми последовательностями (когда там русский юникодом вылезает).

По мне так лучше интерпретатор ругнется на несоответствие типов чем изощренно выругается (уже в рантайме) на невозможность преобразования байта (поди еще пойми зачем нужно было что-то преобразовывать :idiot2:).
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7212
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: if-else python 3.4
« Ответ #13 : 20 Сентября 2014, 01:06:15 »
С питоном не работал, но смею предположить, что проблема в том, что в винде надо повесить ожидание нажатия клавиши в конце скрипта или пускать его из командной строки.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: if-else python 3.4
« Ответ #14 : 20 Сентября 2014, 01:18:05 »
peregrine, да нет, не надо там никаких ожиданий.

Кроме того Python очень слабо отличается на разных платформах, и уж не в таких вещах. Он изначально мультиплатформенный. Различия (платформенные) там обычно где то в глубине функций, но не в процессе исполнения скрипта.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.02 секунд. Запросов: 21.