Какой то странный баг в коде с if

BruT|4rce

Пользователь
Пользователь
Апр 10, 2020
7
5
3
Интернет.
Суть проблемы такая: я пишу таймер, и в конце хочу сделать выбор с помощью if запустить ли таймер с начала. Если переменная ввода текста равна "да" то по сути он запускает цикл кода таймера сначала, а если что-то другое то закрывает файл.
И вот в чём проблема, если код вот такой:
Python:
# Импортируем модуль тайм для создания основы таймера.
import time
# Импортируем модуль ос для работы с файлами.
import os
# Импортируем модуль sys для конечного закрывания таймера.
import sys

print("Вы используете BruT's Таймер v 1.0.0 release.")

while True:
  tm = 1

  while tm == True: # Создаём цикл, выполняющий задачу задавания времени для таймера.
     try:
         tm = int(input("Введите время таймера (целое число в секундах).\n")) # Здесь задаём время.
         print("Хорошо, запускаю таймер.")
     except ValueError: # Если как время было задано не целое число, цикл идёт сначала.
         print("Это не целое число.")
         print("")

  time.sleep(tm)  # Запуск таймера.

  print("Таймер активировался!") # Сообщение о том что время таймера подошло к концу

  os.startfile(r'C:\Windows\winsxs\amd64_microsoft-windows-musicsamples_31bf3856ad364e35_6.1.7600.16385_none_06495209cbd8e93b\Kalimba.mp3') # Запуск мелодии для таймера
 
  l = input("Хотите запустить таймер снова?\n")
  if l.lower == "да":
     print("Запускаю таймер...")
     time.sleep(3)
     print(" ")
  else:
     sys.exit()
То в результате он не учитывает функцию lower и чтобы ты не вписал, он почему то всегда действует по сценарию else.
А если код сделать такой:
Python:
  l = input("Хотите запустить таймер снова?\n")
  if l.lower == "да" or "давай" or "конечно" or "запускай" or "го":
     print("Запускаю таймер...")
     time.sleep(3)
     print(" ")
  else:
     sys.exit()
То есть добавить разные варианты ответа для if, то он учитывает функцию lower, НО почему то всегда действует по сценарию if.
Я уже замучился с этой проблемой, в интернете ничего толкового не нашёл, надеюсь вы поможете.

OS - Windows 7
Версия Python - 3.8.2
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Суть проблемы такая: я пишу таймер, и в конце хочу сделать выбор с помощью if запустить ли таймер с начала. Если переменная ввода текста равна "да" то по сути он запускает цикл кода таймера сначала, а если что-то другое то закрывает файл.
И вот в чём проблема, если код вот такой:
Python:
# Импортируем модуль тайм для создания основы таймера.
import time
# Импортируем модуль ос для работы с файлами.
import os
# Импортируем модуль sys для конечного закрывания таймера.
import sys

print("Вы используете BruT's Таймер v 1.0.0 release.")

while True:
  tm = 1

  while tm == True: # Создаём цикл, выполняющий задачу задавания времени для таймера.
     try:
         tm = int(input("Введите время таймера (целое число в секундах).\n")) # Здесь задаём время.
         print("Хорошо, запускаю таймер.")
     except ValueError: # Если как время было задано не целое число, цикл идёт сначала.
         print("Это не целое число.")
         print("")

  time.sleep(tm)  # Запуск таймера.

  print("Таймер активировался!") # Сообщение о том что время таймера подошло к концу

  os.startfile(r'C:\Windows\winsxs\amd64_microsoft-windows-musicsamples_31bf3856ad364e35_6.1.7600.16385_none_06495209cbd8e93b\Kalimba.mp3') # Запуск мелодии для таймера

  l = input("Хотите запустить таймер снова?\n")
  if l.lower == "да":
     print("Запускаю таймер...")
     time.sleep(3)
     print(" ")
  else:
     sys.exit()
То в результате он не учитывает функцию lower и чтобы ты не вписал, он почему то всегда действует по сценарию else.
А если код сделать такой:
Python:
  l = input("Хотите запустить таймер снова?\n")
  if l.lower == "да" or "давай" or "конечно" or "запускай" or "го":
     print("Запускаю таймер...")
     time.sleep(3)
     print(" ")
  else:
     sys.exit()
То есть добавить разные варианты ответа для if, то он учитывает функцию lower, НО почему то всегда действует по сценарию if.
Я уже замучился с этой проблемой, в интернете ничего толкового не нашёл, надеюсь вы поможете.

OS - Windows 7
Версия Python - 3.8.2
Python:
import sys
import time


cmd = input("Хотите запустить таймер снова?\n")
if cmd.lower() == "да":
    print("Запускаю таймер...")
    time.sleep(3)
    print(" ")
else:
    sys.exit()
попробуйте так

 
  • Мне нравится
Реакции: Student и BruT|4rce

BruT|4rce

Пользователь
Пользователь
Апр 10, 2020
7
5
3
Интернет.
Python:
import sys
import time


cmd = input("Хотите запустить таймер снова?\n")
if cmd.lower() == "да":
    print("Запускаю таймер...")
    time.sleep(3)
    print(" ")
else:
    sys.exit()
попробуйте так

Я разобрался, ваш вариант делал правильные сценарии, но только по одному ответу в if.
Если написать вот так, то будет всё правильно:
Код:
  if cmd.lower() in ("да" , "давай" , "го" , "хочу" , "запускай" , "конечно" , "разумеется" , "естественно" , "йеп"):
 
  • Ха-ха!
Реакции: Roninon

Программист

Новичок
Пользователь
Апр 21, 2020
3
2
3
Привет человек ошибка помойму в .lower их там быть не должно
 

Форум IT Специалистов