Нужна помощь Python программистов

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
Страницы: (13) [1] 2 3 ... Последняя »  К последнему непрочитанному [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
Ежек
21.05.2022 - 12:25
Статус: Offline


Приколист

Регистрация: 23.09.21
Сообщений: 353
14
Доброго дня всем!
Недавно начал изучать основы ЯП Python, написал первую простенькую прогу алгоритма проверки пин-кода для банкомата. Затем решил ее усложнить, введя логику ограничения по выдаваемой суммы, поставив диапазон разрешенной суммы, но столкнулся с проблемой — не могу замкнуть в круг логику условий if/else, до тех пор, пока условие не выполнится.

Пример кода ниже.

pin = 123
user_pin = int(input("Введите пин-код: "))

"""Блок первой попытки"""
if pin == user_pin:
print ("Введите сумму для выдачи от 100 до 10000 руб.:")
сумма = int(input())
if (сумма >= 100) and not (сумма > 10000):
print ("Получите ваши деньги и чек")
else:
#начать ввод суммы сначала, пока пользователь не укажет
правильный диапазон суммы для выдачи

else:
print ("Ошибка. Введите корректный пин-код. У вас осталось 2 попытки")

"""Блок второй попытки"""
.............
..........
...и так далее, т.е. по аналогии идут однотипные первому блоки условий с двумя вариантами завершения программы: пользователь или снимает сумму из обозначенного диапазона чисел или банкомат выводит сообщение о блокировке карты после неудачной последней попытки ввода пин-кода.


Опытные разрабы, помогите советом кто шарит.
 
[^]
Yap
[x]



Продам слона

Регистрация: 10.12.04
Сообщений: 1488
 
[^]
малдаван4ик
21.05.2022 - 12:31
14
Статус: Online


Приколист

Регистрация: 19.03.18
Сообщений: 362
отступы в питоне главное , без них код не читается
 
[^]
hime
21.05.2022 - 12:37
8
Статус: Offline


Хохмяч

Регистрация: 6.03.06
Сообщений: 3034
Цитата
is_valid_sum = False

while not is_valid_sum:
    # в случае ввода суммы из диапазона
    # is_valid_sum = True, это вывалит тебя из цикла


Это сообщение отредактировал hime - 21.05.2022 - 12:38
 
[^]
Aberrant
21.05.2022 - 14:44
9
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (Ежек @ 21.05.2022 - 12:25)

if (сумма >= 100) and not (сумма > 10000):

не писал раньше на пайтоне,
но вот глаз задёргался от этого "not"
это зачем тут вообще, если можно тут же написать просто "сумма < 10000"
вторая часть условия всё равно проверяется только после первой,
так что меньше 100 уже не будет.
 
[^]
Ежек
21.05.2022 - 15:54
1
Статус: Offline


Приколист

Регистрация: 23.09.21
Сообщений: 353
Цитата (Aberrant @ 21.05.2022 - 14:44)
Цитата (Ежек @ 21.05.2022 - 12:25)

    if (сумма >= 100) and not (сумма > 10000):

не писал раньше на пайтоне,
но вот глаз задёргался от этого "not"
это зачем тут вообще, если можно тут же написать просто "сумма < 10000"
вторая часть условия всё равно проверяется только после первой,
так что меньше 100 уже не будет.

Если так сделать, то первое условие не будет выполняться.
Попробовал обыграть с помощью логических
операторов, но замкнуть конец на начало все равно не получается. Наверное нужен принципиально другой подход, возможно подключать какие-нибудь логические модули.
Мой кривой код:

if pin == user_pin:
int(input("Введите сумму от 100 до 10000: "))
sum = True if (sum >= 100) and not (sum > 10000) else False
if sum == True:
print ("Получите ваши деньги и чек")
else:
int(input("Введите корректную сумму: "))

Это сообщение отредактировал Ежек - 21.05.2022 - 16:09
 
[^]
Aberrant
21.05.2022 - 16:07
1
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (Ежек @ 21.05.2022 - 15:54)
Цитата (Aberrant @ 21.05.2022 - 14:44)
Цитата (Ежек @ 21.05.2022 - 12:25)

    if (сумма >= 100) and not (сумма > 10000):

не писал раньше на пайтоне,
но вот глаз задёргался от этого "not"
это зачем тут вообще, если можно тут же написать просто "сумма < 10000"
вторая часть условия всё равно проверяется только после первой,
так что меньше 100 уже не будет.

Если так сделать, то первое условие не будет выполняться

странно, когда на PHP ты пытаешься проверить диапазон,
то всегда делаешь:

if($i >= 100) && ($i <= 10000) {
return true;
} elese {
return false;
}

"AND" или "&&" вернёт TRUE если обе обе части возвращают TRUE
 
[^]
Ch1ck
21.05.2022 - 16:12
39
Статус: Offline


Хохмач

Регистрация: 6.10.14
Сообщений: 725
С точки зрения правоверного сишника тут творится какой то дьявольский шабаш...
 
[^]
Ежек
21.05.2022 - 16:15
1
Статус: Offline


Приколист

Регистрация: 23.09.21
Сообщений: 353
Интересный подход, попробую нечто подобное провернуть в питоне, когда доберусь до компа. Насчёт return не думал. Тут самое главное то, что неверное значение может вводиться безконечное кол-раз, пока юзер не введёт число из разрешённого диапазона.
 
[^]
Aberrant
21.05.2022 - 16:16
3
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (Ch1ck @ 21.05.2022 - 16:12)
С точки зрения правоверного сишника тут творится какой то дьявольский шабаш...

согласен
 
[^]
3uJI
21.05.2022 - 16:19
1
Статус: Offline


Хохмач

Регистрация: 10.03.18
Сообщений: 615
у меня аж глаз задергался gigi.gif
 
[^]
i13th
21.05.2022 - 16:21
0
Статус: Offline


бячивро авпм

Регистрация: 24.06.14
Сообщений: 261
Цитата (малдаван4ик @ 21.05.2022 - 12:31)
отступы в питоне главное , без них код не читается

отступы ВЕЗДЕ главное - код читается нормально
 
[^]
ipv4
21.05.2022 - 16:22
-7
Статус: Online


Ярила

Регистрация: 4.11.09
Сообщений: 6279
Цитата (3uJI @ 21.05.2022 - 16:19)
у меня аж глаз задергался  gigi.gif

У меня тоже.

ТС, программирование, походу, это не твоё. Займись лучше чем-нибудь ещё. Гайки покрути, что ли... Паяльником, возможно получится поработать. Рассаду, там, высади - может найдёшь себя. ))

Это сообщение отредактировал ipv4 - 21.05.2022 - 16:22
 
[^]
expense
21.05.2022 - 16:23
1
Статус: Offline


Балагур

Регистрация: 1.11.15
Сообщений: 889
Опять шифровки отправляют
 
[^]
Aberrant
21.05.2022 - 16:25
3
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (Ежек @ 21.05.2022 - 15:54)

Если так сделать, то первое условие не будет выполняться.

только что проверил на пайтоне.

sum1 = 9999
if (sum1 >= 100) and (sum1 <= 10000):
print ('TRUE')
else:
print ('FALSE')

этот код работает и при различных значениях правильно выдаёт результат.


ты где-то загнался.

про return, это только для вызова данного кода из другой функции.

попытка запихнуть всё в неразрывную последовательность вообще никогда не сработает.

например проверка пина у тебя будет вызываться и при других сценариях,
а потому этот код должен быть в отдельной функции на которую ты будешь ссылаться и получать от неё true или false

точно так же и с суммой - если true, то переход к выдаче денег,
если false то возврат с ошибкой и предложение ввести повторно
 
[^]
PorcelainMug
21.05.2022 - 16:25
1
Статус: Offline


Балагур

Регистрация: 9.09.14
Сообщений: 811
Фигурнова чтоль пойти почитать...
 
[^]
Paevskiy
21.05.2022 - 16:28
2
Статус: Offline


Шутник

Регистрация: 14.03.16
Сообщений: 67
Третье условие для if разве не нужно elseif писать?
 
[^]
Aberrant
21.05.2022 - 16:28
1
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (малдаван4ик @ 21.05.2022 - 12:31)
отступы в питоне главное , без них код не читается

ЯП сжирает отступы если писать без BB
 
[^]
Tyken
21.05.2022 - 16:28
4
Статус: Offline


Приколист

Регистрация: 5.02.17
Сообщений: 226
ТС, совет небольшой.
Если выкладываешь где код, выкладывай вот в таком формате как на картинке.
А делать это можешь через https://paste.ofcode.org/ к примеру.


Нужна помощь Python программистов
 
[^]
RollsRoyce
21.05.2022 - 16:29
15
Статус: Offline


Шутник

Регистрация: 19.10.16
Сообщений: 89
Цитата (малдаван4ик @ 21.05.2022 - 12:31)
отступы в питоне главное , без них код не читается

Бывает. gigi.gif

Нужна помощь Python программистов
 
[^]
Aberrant
21.05.2022 - 16:30
0
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (Paevskiy @ 21.05.2022 - 16:28)
Третье условие для if разве не нужно elseif писать?

в данном случае не нужно.
у нас условие по сути одно - число в диапазоне или нет.
так что забираем всё в скобки и используем AND - этот условный оператор для того и сделан, чтобы не городить синтаксический лес вокруг простейших задачек
 
[^]
ipv4
21.05.2022 - 16:31
1
Статус: Online


Ярила

Регистрация: 4.11.09
Сообщений: 6279
Цитата (Aberrant @ 21.05.2022 - 16:28)
Цитата (малдаван4ик @ 21.05.2022 - 12:31)
отступы в питоне главное , без них код не читается

ЯП сжирает отступы если писать без BB

Да, ладно! Сжирает, ога.
Код
template<typename _PinD = void, typename ... _Tail>
  struct PortPins : PortPins<_Tail...>
  {
     typedef PortPins<_Tail...> base_class;

     static constexpr uint8_t ddr (void)
     {
        return (base_class::ddr() & ~_PinD::mask()) | _PinD::ddr();
     }

     static constexpr uint8_t init (void)
     {
        return (base_class::init() & ~_PinD::mask()) | _PinD::init();
     }
  };

template<>
  struct PortPins<void>
  {
     static constexpr uint8_t ddr (void) { return 0; }
     static constexpr uint8_t init (void) { return 0xFF; }
  };


Это сообщение отредактировал ipv4 - 21.05.2022 - 16:32
 
[^]
John775963
21.05.2022 - 16:33
0
Статус: Offline


Ярила

Регистрация: 20.07.12
Сообщений: 1280


А return какую роль здесь играет?
Ведь вызова функции нет.

А почему, при условиях, elif не использовал?

 
[^]
Aberrant
21.05.2022 - 16:34
2
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (Tyken @ 21.05.2022 - 16:28)
ТС, совет небольшой.
Если выкладываешь где код, выкладывай вот в таком формате как на картинке.
А делать это можешь через https://paste.ofcode.org/ к примеру.

данунафиг,
тут и так все всё поняли.
ну поленился он (или не знает) о "вставке кода"

Нужна помощь Python программистов
 
[^]
Aberrant
21.05.2022 - 16:35
0
Статус: Offline


Хохмач

Регистрация: 3.10.20
Сообщений: 743
Цитата (John775963 @ 21.05.2022 - 16:33)
А return какую роль здесь играет?
Ведь вызова функции нет.

А почему, при условиях, elif не использовал?

не играет здесь никакой роли return
это я уже пишу на два шага вперёд,
ибо всё равно ему придётся на функции всё разбирать
 
[^]
ipv4
21.05.2022 - 16:36
0
Статус: Online


Ярила

Регистрация: 4.11.09
Сообщений: 6279
Цитата (Aberrant @ 21.05.2022 - 16:34)
Цитата (Tyken @ 21.05.2022 - 16:28)
ТС, совет небольшой.
Если выкладываешь где код, выкладывай вот в таком формате как на картинке.
А делать это можешь через https://paste.ofcode.org/ к примеру.

данунафиг,
тут и так все всё поняли.
ну поленился он (или не знает) о "вставке кода"

agree.gif lol.gif
 
[^]
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 5228
0 Пользователей:
Страницы: (13) [1] 2 3 ... Последняя » [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх