Задать вопрос
  • Что делать, если установщик Kali Linux не видит том?

    Radjah
    @Radjah
    12 августа сегодня. Как-то поздно начинать постигать линуксы.
    Попробуй использовать Debian или Ubuntu. Там в репозиториях точно такие же программы лежат.

    https://lorwiki.org.ru/wiki/Стоит_ли_мне_использов...

    Там нет кнопки "Проверить мою сеть всеми хаками и кряками". Я проверял.
    Ответ написан
    Комментировать
  • Проблема с циклами на Python?

    shabelski89
    @shabelski89
    engineer
    То что вы описываете должна делать функция.
    Вы делаете например цикл while, из которого вызывается определенная функция, одна или каждая на свой вариант. Функция вернет значение и вы снова вернетесь в цикл.
    Вот пример как это было на geekbrains. Тут кстати есть проверки на тип вводимых значений.
    И да полистай учебник.
    spoiler
    # Задание:
    # Эта программа являет собой упрощенный симулятор банкомата, пользователь вводит номер карты и пин код,
    # в случае успеха программа предлагает меню для выбора действий, где он может проверить счет, или снять деньги.
    #
    # Эта задача не так похожа на другие, но она, как никогда прежде приближена к реалиям разработки общего проекта.
    #
    # Ваша задача исправить ошибки логики, и выполнить проверки данных, которые вводит пользователь.
    # Обязательно убедитесь, что вы выполнили все проверки, попробуйте сами сломать свою программу вводя неверные данные!
    import re
    
    person1 = {'card': 4276123465440000, 'pin': 9090, 'money': 100.90}
    person2 = {'card': 4276123465440001, 'pin': 9091, 'money': 200.90}
    person3 = {'card': 4276123465440002, 'pin': 9092, 'money': 300.90}  # номер карты = 16, пин код = 4
    
    bank = [person1, person2, person3]
    
    
    def get_person_by_card(card_number):
        for person in bank:
            if person['card'] == card_number:
                return person
    
    
    def is_pin_valid(person, pin_code):
        if person['pin'] == pin_code:
            return True
        return False
    
    
    def check_account(person):
        return round(person['money'], 2)
    
    
    def withdraw_money(person, money):
        if person['money'] - money >= 0:  # исправил условие возможности снятия денег
            person['money'] -= money
            return 'Вы сняли {} рублей.'.format(money)
        else:
            return 'На вашем счету недостаточно средств!'
    
    
    def process_user_choice(choice, person):
        if choice == 1:
            print(check_account(person))
        elif choice == 2:
            count = input('Сумма к снятию: ')
            if check_input_money(count):
                count = float(count)
                if count > 0:   # можно снять только сумму > 0!
                    print(withdraw_money(person, count))
                else:
                    print('Вводите только допустимую сумму!')
                    return False
        else:
            print('Вводите только допустимую сумму!')
            return False
    
    
    def check_input_money(money):  # добавил функцию проверки снимаемых денег
        try:
            float(money)
            return True
        except ValueError:
            print('Вводите только допустимую сумму!')
            return False
    
    
    def is_valid_choice(number):  # добавил функцию проверки на число выбора действия
        try:
            int(number)
            return True
        except ValueError:
            print('Вводите только числа!')
            return False
    
    
    def check_card_pin(string):  # добавил функцию проверки регулярным выражением на правильность ввода
        if len(string) == 21:  # длина строки = номер карты 16 + пробел 1 + пин код 4
            pattern = '(\\d{16}\\s\\d{4})'
            result = re.search(pattern, string)
            if result:
                return True
        else:
            return False
    
    
    def start():
        input_str = input('Введите номер карты и пин код через пробел: ')
        if check_card_pin(input_str):  # проверка на длину и число корректного ввода номера карты и пин кода
            card_number, pin_code = input_str.split()
            card_number = int(card_number)
            pin_code = int(pin_code)
            person = get_person_by_card(card_number)
            if person and is_pin_valid(person, pin_code):
                while True:
                    choice = input('Выберите пункт:\n'
                                    '1. Проверить баланс\n'
                                    '2. Снять деньги\n'
                                    '3. Выход\n'
                                    '---------------------\n'
                                    'Ваш выбор:')
                    if is_valid_choice(choice):  # проверка на число
                        choice = int(choice)
                        if choice == 3:
                            break
                        elif choice == 1 or choice == 2:  # добавил блок вызова функции при выборе 1 или 2
                            process_user_choice(choice, person)
        else:
            print('Номер карты или пин код введены не верно!')
    
    
    start()

    Ответ написан
    1 комментарий
  • Ошибка в коде Python?

    shabelski89
    @shabelski89
    engineer
    import time
     
    what = input ("Начать? [Y/N/]:")
    while True:
        
        if what == "Y":
            print(time.asctime())
            print("Отсчитываю 1 час...")
            time.sleep(5)
            print("время вышло")
            #тут место для аудиосигнала
            break
        elif what == "N":
            kdks = input ("Хотите завести другой таймер? [Y/N]:")
            if kdks == "Y":
                clockers = input ("На сколько секунд поставить таймер?:")
                print("Таймер заведён на " + str(clockers) + " секунд ")
                time.sleep(int(clockers))
                print("Время вышло!")
                #место для аудиосигнала
                break
            elif kdks == "N":
                print ("Вы будете возвращены в начальное меню")
            else:
                print ("Ошибка! Вы будете возвращены в начальное меню")
        else:
            print("Ошибка! Вы будете возвращены в начальное меню")
    Ответ написан
    6 комментариев
  • Ошибка в коде Python?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    pip install playsound

    import time
    from playsound import playsound
    
    
    while True:
        start = input("Начать? [Y/N/]:")
        clockers = 3600
        timer = None
        if start.lower() == "y":
            print(time.asctime())
            print("Отсчитываю 1 час...")
        elif start.lower() == "n":
            timer = input("Хотите завести другой таймер? [Y/N]:")
            if timer.lower() == "y":
                while True:
                    clockers = input("На сколько секунд поставить таймер?:")
                    try:
                        isinstance(int(clockers), int)
                        break
                    except ValueError:
                        print("Повторите ввод. Необходимо ввести число.")
                print("Таймер заведён на " + str(clockers) + " секунд ")
        if start.lower() not in ["y", "n"] and timer != "y":
            print("Ошибка! Вы будете возвращены в начальное меню")
            continue
        time.sleep(int(clockers))
        print("время вышло")
        playsound("D:/test.mp3")
        break
    Ответ написан
    3 комментария