Не останавливается цикл. Telebot

why)

Новичок
Пользователь
Мар 25, 2021
5
0
1
Делаю бота в тг. Отслеживает доллар. Не останавливается цикл. Код:
Python:
rate = 'True'
@bot.message_handler(content_types = ['text'])

def currency(message):

#parsing goolge
full_page = requests.get(url, headers = headers)
soup = BeautifulSoup(full_page.content, 'html.parser')
convert = soup.findAll('span', {'class': 'DFlfde', 'class': 'SwHCTb', 'data-precision': 2})
currency = convert[0].text
#send_message

if message.chat.type == 'private':

  if message.text == '❗ Track off ?❗':

   global rate
   rate = 'False'


  elif message.text == '? Rate dollar ?':
   
   bot.send_message(message.chat.id,'? Dollar now: ' + str(currency) + ' ₽ ?')
 
  #elif message.text == '❗ Track off ?❗':
   #bot.send_message(message.chat.id, 'ok')
 
  if message.text == '❗ Track off ?❗':
   global rate
   rate = 'False'
 

  elif message.text == ' ? Track dollar ?':
   
   if rate == 'True':

    while True:
     
     
     
     

   
   
   
   
   
     price = str(73.4)
     differnce = str(0.1)
 
     full_page = requests.get(url, headers = headers)
     soup = BeautifulSoup(full_page.content, 'html.parser')
     convert = soup.findAll('span', {'class': 'DFlfde', 'class': 'SwHCTb', 'data-precision': 2})
     currency = convert[0].text
 
   
     if currency >= price + differnce:
      bot.send_message(message.chat.id, '? Course increased: ' + str(currency)+' ?')
     
     elif currency <= price - differnce:
      bot.send_message(message.chat.id, '〽 Course lowered: ' + str(currency)+' ?')
     time.sleep(2)
что не так?
 
Последнее редактирование:

Dominus

Новичок
Пользователь
Май 23, 2020
20
1
3

Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.

Синтаксис цикла while в простейшем случае выглядит так:

while условие:
блок инструкций

При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается и управление передается на следующую инструкцию после тела цикла while. Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.

Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10.

i = 1
while i <= 10:
print(i ** 2)
i += 1


В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется счетчиком. Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11, поскольку именно при i == 11 условие i <= 10 впервые перестанет выполняться.

В вашем же случае условие никак не поменяется при прохождении по телу цикла. Да и само условие у вас гласит "пока истина" , но не указано
что именно должно быть истиной
 

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