Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
F_VV
0 / 0 / 1
Регистрация: 15.02.2017
Сообщений: 2
#1

"or" в Telegram API - Python

15.02.2017, 17:16. Просмотров 499. Ответов 2
Метки нет (Все метки)

Добрый день! Пишу для своих нужд телеграм-бота на Python 3, язык еще не очень хорошо знаю и столкнулся со следующей проблемой не работает "or" в цикле. Код ниже, подскажите что не так? Мучаюсь уже несколько дней и не могу справиться с этой проблемой. Попробовал решить данную проблему с помощью списка, но код все равно не работает так как должен

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import telebot
from telebot import types
 
nicotine = types.ReplyKeyboardMarkup ()
nicotine.row('0', '1.5','3', '6')
 
balance = types.ReplyKeyboardMarkup()
balance.row('80/20', '70/30', '60/40')
 
Balance = ['80/20', '70/30', '60/40']
 
MMIX = ['Моно', "Микс"]
 
mmix = types.ReplyKeyboardMarkup()
mmix.row('Моно', 'Микс')
 
hider = types.ReplyKeyboardRemove()
 
token = '..........'
 
bot = telebot.TeleBot (token)
 
@bot.message_handler(commands=["start"])
 
def send_start(message):
    sent = bot.send_message(message.chat.id, "Введите емкость тары")
    bot.register_next_step_handler(sent, step1_1)
 
def step1_1(message):
    while True:
        if message.text <= "0":
            sent = bot.send_message(message.chat.id, "Введите число больше нуля")
            bot.register_next_step_handler(sent, step1_1)
        else:
            sent = bot.send_message(message.chat.id, "Введите емкость еще раз")
            bot.register_next_step_handler(sent, step1)
        break
 
def step1(message):    
    while True:
        if message.text == '0':
            sent = bot.send_message(message.chat.id, "Введите число больше нуля")
            bot.register_next_step_handler(sent, step1)
        else:
            sent = bot.send_message(message.chat.id, "Выберете крепость основы", reply_markup=nicotine)
            bot.register_next_step_handler(sent, step2)
        break
    
def step2(message): 
    while True:
        if message.text < '0':
            sent = bot.send_message(message.chat.id, "Выберете один из предложенных вариантов или введите положительное число")
            bot.register_next_step_handler(sent, step2)
        else:
            sent = bot.send_message(message.chat.id, "Выберете соотношение PG/VG", reply_markup=balance)
            bot.register_next_step_handler(sent, step3)
        break
 
def step3(message): 
    while True:
        if message.text != Balance: '''здесь был также такой вариант !='80/20' or '70/30' or '60/40', 
                                                собственно из-за него и создал тему'''
            sent = bot.send_message(message.chat.id, "Выберете один из предложенных вариантов")
            bot.register_next_step_handler(sent, step3)
        else:
            sent = bot.send_message(message.chat.id, "Моно или микс?", reply_markup=mmix)
            bot.register_next_step_handler(sent, step4)
        break
P.S. наверняка код не очень изящный, но это от незнания
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2017, 17:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос "or" в Telegram API (Python):

Ошибка ""module" has no attribute "pack""
Здравствуйте! Пишу приложение на python 3.2 Есть главный файл, в нём...

Вычислить выражение, состоящее из трех чисел и двух знаков (допускаются только знаки "+" или "-")
Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух...

Написать код, по которому можно выполнять такие функции, как "Открыть файл", "Заменить" и т.д
Всем привет! помогите пожалуйста с решением этого задания. Очень срочное...

Клиентская часть архитектуры "Клиент-Сервер" и ошибка "ClientsDatabase is not defined"
Всем Доброго Времени суток. В универе дали лб по работе с Python(см.вложение в...

Слово "мама" заменить словом "бабушка"
Привет друзья помогите решить пару задачек...) плизз 3) Запросить текст и во...

Что значит "r" в open(filename, "r")
f = open(r'my_file', 'r') что значит первая буква r не могу найти где про нее...

2
keepermag
24 / 24 / 25
Регистрация: 28.09.2016
Сообщений: 90
16.02.2017, 14:00 #2
Честно говоря не вникал в код, но сходу сделаю предположение, что возможно ошибка в такого вида записи:
if message.text != '80/20' or '70/30' or '60/40'
Должно быть так:
if message.text != '80/20' or message.text != '70/30' or message.text != '60/40'
или так:
if message.text not in ['80/20', '70/30', '60/40']
1
F_VV
0 / 0 / 1
Регистрация: 15.02.2017
Сообщений: 2
16.02.2017, 16:26  [ТС] #3
Спасибо, помогло!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2017, 16:26
Привет! Вот еще темы с решениями:

Подсчет "орлов" и "решек"
Программа не работает, объясните, пожалуйста, где ошибка: import random...

Ввести число n, если число n является точной степенью двойки, вывести "YES”, в противном случае "NO"
2) Ввести число n с клавиатуры. Если число n является точной степенью двойки,...

Посчитать, сколько букв "О" содержится в имени и фамилии пользователя
Здравствуйте, пару часов назад начал изучать python и возникли сразу же вопросы...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru