Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Завершается программа питон, хотя должна не завершатся

Смотрите, у меня такой проект на питоне "PythonOS" (звучит странно, но я что то создаю)
Если я после запуска введу 2 (это калькулятор) то всё идёт.
Если же ввиду 1(просмотр время) то программа завершается
Код таков:
while vopros == 1:
print("Сейчас по времени: ", hour, ":", min)
vopros = int(input("Что вы хотите сделать?: "))
while vopros == 0:
print("Команды PythonOS")
print("Команда 1: 1 - Показывает время")
print("Команда 2: 2 - Калькулятор")
vopros = int(input("Что вы хотите сделать?: "))
while vopros == 2:
print("Добро пожаловать в калькулятор на PythonOS!")
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
print("Результат сложения:", num1 + num2)
print("Результат вычитания:", num1 - num2)
print("Результат умножения:", num1 * num2)
print("Результат деления:", num1 / num2)
print("Результат округления деления:", num1 // num2)
print("Результат степени:", num1 ** num2)
vopros = int(input("Что вы хотите сделать?: "))
Мне смахивает на While, но прикол в том что if я использовать не смогу, потому что надо чтобы можно было писать 2 к примеру и всегда будет запускаться калькулятор, а с if таковы дела не пойдут ибо всего лишь один раз можно запустить калькулятор

По дате
По рейтингу
Аватар пользователя
Просветленный
6мес

Так а что у тебя возвращает программу в исходную точку для проверки введённого числа? У тебя код последовательный.

Аватар пользователя
Мыслитель
6мес

Проблема в вашем коде заключается в том, что после выполнения одного из `while` циклов программа не переходит к другим. Когда условие для одного из циклов становится истинным, выполняется только этот цикл, и программа завершится, если больше не выполняется ни один `while`.

### Причина проблемы
Ваш код зацикливается в одном конкретном `while`, и из-за того, что структура программы линейная, она не возвращается к начальному выбору.

### Решение проблемы
Чтобы программа работала бесконечно и позволяла переходить между опциями, лучше использовать один общий `while` цикл, который управляет всем. Пример исправленного кода:

123456789101112131415161718192021222324252627282930313233
 import time

# Инициализация переменной выбора
vopros = 0

while True:  # Бесконечный цикл
    if vopros == 0:
        print("Команды PythonOS")
        print("Команда 1: 1 - Показывает время")
        print("Команда 2: 2 - Калькулятор")
        vopros = int(input("Что вы хотите сделать?: "))
    elif vopros == 1:
        # Показ времени
        hour = time.localtime().tm_hour
        min = time.localtime().tm_min
        print("Сейчас по времени: ", hour, ":", min)
        vopros = int(input("Что вы хотите сделать?: "))
    elif vopros == 2:
        # Калькулятор
        print("Добро пожаловать в калькулятор на PythonOS!")
        num1 = int(input("Введите первое число: "))
        num2 = int(input("Введите второе число: "))
        print("Результат сложения:", num1 + num2)
        print("Результат вычитания:", num1 - num2)
        print("Результат умножения:", num1 * num2)
        print("Результат деления:", num1 / num2)
        print("Результат округления деления:", num1 // num2)
        print("Результат степени:", num1 ** num2)
        vopros = int(input("Что вы хотите сделать?: "))
    else:
        # Обработка некорректного ввода
        print("Неизвестная команда. Попробуйте снова.")
        vopros = 0 


### Пояснения
1. **Один главный цикл (`while True`)**:
- Обеспечивает, что программа будет работать бесконечно, пока пользователь явно не завершит её.

2. **Переключение между функциями через `if`/`elif`**:
- `if vopros == 0`: Главное меню.
- `elif vopros == 1`: Показ времени.
- `elif vopros == 2`: Калькулятор.
- Если пользователь вводит некорректный номер команды, программа возвращается в главное меню.

3. **Универсальность ввода**:
- Вы можете ввести любое число, и программа будет правильно реагировать.

Теперь ваш "PythonOS" будет работать так, как вы задумывали! 😊