• Как можно сократить решение задачи?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    sch_2 = 0
    sch_3 = 0
    sch_4 = 0
    sch_5 = 0
    sch_6 = 0
    sch_7 = 0
    sch_8 = 0
    sch_9 = 0
    sch_10 = 0
    sch_11 = 0
    sch_12 = 0


    Вот эту хрень сделай массивом
    Ответ написан
    Комментировать
  • Не могу решить задачу на подбрасывание монетки, что делать?

    Maksim_64
    @Maksim_64
    Data Analyst
    import random
    
    result = {}
    for n in range(10):
        experiment = []
        while True:
            experiment.append('О' if random.random() < 0.5 else 'Р')
            for i in range(len(experiment) - 2):
                if (experiment[i] == experiment[i+1]) and (experiment[i+1] == (experiment[i+2])):
                    break
            else: 
                continue
            break
                
        result[f'Попытка Номер {n+1}'] = experiment
    print(result)


    среднее количество попыток допишите сами. Эксперимент сгенерирован результаты в словаре result, так что это не составит труда. Обратите внимание на else, continue и последний break. Первый break принадлежит циклу for, затем else принадлежит тоже циклу for (именно так) он запускается если первый break не состоялся внутри цикла for, затем мы имеем continuous который возвращает нас на начало цикла while и код запускается снова, когда наконец то условие выполнено внутри цикла for срабатывает первый break (мы вышли из цикла for) затем else и continuous игнорируются ( потому что else принадлежит к for не к if обращаю ваше внимание еще раз ) и наконец последний break прекращает вечный цикл while. Поработайте с кодом, что бы почувствовать механику.
    Ответ написан
    Комментировать
  • Не могу решить задачу на подбрасывание монетки, что делать?

    @Wispik
    from random import randint
    
    
    attempts = []
    
    for i in range(10):
        res = []
        while True:
            res.append(randint(0, 1))
            if len(res) >= 3 and (res[-1]==res[-2]==res[-3]):
                break
        s = ''.join(['О' if s else 'Р' for s in res])
        print(f'{s} (попыток: {len(s)})')
        attempts.append(len(s))
    
    print(f'Среднее количество попыток: {sum(attempts) / len(attempts)}.')
    Ответ написан
    1 комментарий
  • Не могу решить задачу на подбрасывание монетки, что делать?

    @twistfire92
    Python backend developer
    Раз уж свой вариант какой-то приложили, то можно сделать так:

    import random as rd
    
    total_attempts = 0
    
    for _ in range(10):
    	attempts = 0
    	last_result = None
    	counter = 0
    	results = []
    	while True:
    		current_result = rd.choice(["О", "P"])
    		results.append(current_result)
    		if current_result == last_result:
    			counter += 1
    		else:
    			counter = 1
    		last_result = current_result
    		attempts += 1
    		if counter == 3:
    			break
    	print(f"{' '.join(results)} (Попыток: {attempts})")
    	total_attempts +=attempts
    
    print(f"Среднее количество попыток: {total_attempts / 10:.1f}")
    Ответ написан
    1 комментарий
  • Не могу сделать вывод сообщения в телеграм боте, как исправить?

    @liiimiiit
    так сработало

    import telebot
    from telebot import types
    
    bot = telebot.TeleBot('токен')
    
    
    @bot.message_handler(commands=['start'])
    def start(message):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton('Начать')
        btn2 = types.KeyboardButton('Помощь')
        markup.add(btn1, btn2)
        bot.send_message(message.chat.id, f'Привет, я тестовый бот, пока что, я ничего не умею', reply_markup=markup)
    
    
    @bot.message_handler(content_types=['text'])
    def com(message):
        if message.text == 'Начать':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn3 = types.KeyboardButton('Узнать свой ID')
            btn4 = types.KeyboardButton('Поздороваться')
            btn5 = types.KeyboardButton('Смешная фотография')
            markup.add(btn3, btn4, btn5)
            bot.send_message(message.chat.id, 'вот команды, доступные для ботика', reply_markup=markup)
    
    
        elif message.text == 'Поздороваться':
            bot.send_message(message.chat.id, 'Здарова лох')
    
    
    bot.polling(none_stop=True)
    Ответ написан
    3 комментария