


Завершается программа питон, хотя должна не завершатся
Смотрите, у меня такой проект на питоне "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 таковы дела не пойдут ибо всего лишь один раз можно запустить калькулятор
Так а что у тебя возвращает программу в исходную точку для проверки введённого числа? У тебя код последовательный.
Проблема в вашем коде заключается в том, что после выполнения одного из `while` циклов программа не переходит к другим. Когда условие для одного из циклов становится истинным, выполняется только этот цикл, и программа завершится, если больше не выполняется ни один `while`.
### Причина проблемы
Ваш код зацикливается в одном конкретном `while`, и из-за того, что структура программы линейная, она не возвращается к начальному выбору.
### Решение проблемы
Чтобы программа работала бесконечно и позволяла переходить между опциями, лучше использовать один общий `while` цикл, который управляет всем. Пример исправленного кода:
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" будет работать так, как вы задумывали! 😊