EvgenyCherny
@EvgenyCherny
I'm don't want you say I love you...

Почему очищается база?

Если срабатывает len_players == 3, то очищается base.yml и ничего тупо не срабатывает
elif call.data == "start_game":
                with open('base.yml', 'r') as f:
                    text = f.read()
                text = text.split('\n')
                del text[-1]
                for string in text:
                    if str(call.message.chat.id) == string.split(':')[0]:
                        account = string.split(':')
                        game_number = account[3]
                        with open('games_hdice.yml', 'r') as f:
                            text = f.read()
                        text = text.split('\n')
                        players_list = []
                        dice_list = []
                        for string in text:
                            if str(game_number) == string.split(':')[0]:
                                account = string.split(':')
                                len_game = len(account)
                                game_number = account[0]
                                rate = account[1]
                                chatid = account[2]
                                print(game_number)
                                i = 3
                                while i < len_game:
                                    players_list.append(str(account[i]))
                                    i += 1
                                len_players = len(players_list)
                                if len_players == 1:
                                    bot.send_message(call.message.chat.id, "Игра не может быть запущена, требуется минимум 2 игрока")
                                elif len_players == 3:
                                    dice_p1 = random.randint(1,12)
                                    dice_p2 = random.randint(1,12)
                                    dice_p3 = random.randint(1,12)
                                    i = 0
                                    while i < len(players_list):
                                        userGamesAdd(players_list[i], 1)
                                        i + 1
                                    if dice_p1 > dice_p2 and dice_p1 > dice_p3:
                                        bot.send_message(players_list[0], "Поздравляем! Вы выиграли " + (int(rate) * 2) + "$", reply_markup=keyboard_menu)
                                        userBalanceAdd(players_list[0], int(rate) * 2)
                                        userBalanceTake(players_list[1], rate)
                                        userBalanceTake(players_list[2], rate)
                                        userRivalSet(players_list[0], "null")
                                        userRivalSet(players_list[1], "null")
                                        userRivalSet(players_list[2], "null")
                                        hdiceGameDelete(game_number)
                                        bot.send_message(players_list[1], "К сожалению, Вы проиграли", reply_markup=keyboard_menu)
                                        bot.send_message(players_list[2], "К сожалению, Вы проиграли", reply_markup=keyboard_menu)
                                        bot.send_message(chatid, "Результат игры «Хай-Дайс»\n\n@" + getNick(players_list[0]) + " выпало: " + str(dice_p1) + "\n@" + getNick(players_list[1]) + " выпало: " + str(dice_p2) + "\n@" + getNick(players_list[2]) + " выпало: " + str(dice_p3) + "\n\nДепозит: " + str(int(len_players) * int(rate)) + "$", reply_markup=None)
                                        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Игра завершена", reply_markup=None)
                                    if dice_p2 > dice_p1 and dice_p2 > dice_p3:
                                        bot.send_message(players_list[1], "Поздравляем! Вы выиграли " + (int(rate) * 2) + "$", reply_markup=keyboard_menu)
                                        userBalanceAdd(players_list[1], int(rate) * 2)
                                        userBalanceTake(players_list[0], rate)
                                        userBalanceTake(players_list[2], rate)
                                        userRivalSet(players_list[0], "null")
                                        userRivalSet(players_list[1], "null")
                                        userRivalSet(players_list[2], "null")
                                        hdiceGameDelete(game_number)
                                        bot.send_message(players_list[0], "К сожалению, Вы проиграли", reply_markup=keyboard_menu)
                                        bot.send_message(players_list[2], "К сожалению, Вы проиграли", reply_markup=keyboard_menu)
                                        bot.send_message(chatid, "Результат игры «Хай-Дайс»\n\n@" + getNick(players_list[0]) + " выпало: " + str(dice_p1) + "\n@" + getNick(players_list[1]) + " выпало: " + str(dice_p2) + "\n@" + getNick(players_list[2]) + " выпало: " + str(dice_p3) + "\n\nДепозит: " + str(int(len_players) * int(rate)) + "$", reply_markup=None)
                                        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Игра завершена", reply_markup=None)
                                    if dice_p1 == dice_p2 and dice_p1 == dice_p3 and dice_p2 == dice_p3:
                                        bot.send_message(players_list[0], "Игра закончилась в ничью", reply_markup=keyboard_menu)
                                        userRivalSet(players_list[0], "null")
                                        userRivalSet(players_list[1], "null")
                                        userRivalSet(players_list[2], "null")
                                        hdiceGameDelete(game_number)
                                        bot.send_message(players_list[1], "Игра закончилась в ничью", reply_markup=keyboard_menu)
                                        bot.send_message(players_list[2], "Игра закончилась в ничью", reply_markup=keyboard_menu)
                                        bot.send_message(chatid, "Результат игры «Хай-Дайс»\n\n@" + getNick(players_list[0]) + " выпало: " + str(dice_p1) + "\n@" + getNick(players_list[1]) + " выпало: " + str(dice_p2) + "\n@" + getNick(players_list[2]) + " выпало: " + str(dice_p3) + "\n\nДепозит: " + str(int(len_players) * int(rate)) + "$", reply_markup=None)
                                        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Игра завершена", reply_markup=None)
                                    else:
                                        bot.send_message(players_list[2], "Поздравляем! Вы выиграли " + (int(rate) * 2) + "$", reply_markup=keyboard_menu)
                                        userBalanceAdd(players_list[2], int(rate) * 2)
                                        userBalanceTake(players_list[0], rate)
                                        userBalanceTake(players_list[1], rate)
                                        userRivalSet(players_list[0], "null")
                                        userRivalSet(players_list[1], "null")
                                        userRivalSet(players_list[2], "null")
                                        hdiceGameDelete(game_number)
                                        bot.send_message(players_list[0], "К сожалению, Вы проиграли", reply_markup=keyboard_menu)
                                        bot.send_message(players_list[1], "К сожалению, Вы проиграли", reply_markup=keyboard_menu)
                                        bot.send_message(chatid, "Результат игры «Хай-Дайс»\n\n@" + getNick(players_list[0]) + " выпало: " + str(dice_p1) + "\n@" + getNick(players_list[1]) + " выпало: " + str(dice_p2) + "\n@" + getNick(players_list[2]) + " выпало: " + str(dice_p3) + "\n\nДепозит: " + str(int(len_players) * int(rate)) + "$", reply_markup=None)
                                        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Игра завершена", reply_markup=None)
                                break
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@zexer
while i < len(players_list):
    userGamesAdd(players_list[i], 1)
    i + 1

Странный участок кода, вы пишете i +1, но не обновляете прошлое значение i
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Тут цикл бесконечный, к i добавили единицу, но значение i не перезаписали
i = 0
while i < len(players_list):
    userGamesAdd(players_list[i], 1)
    i + 1


А вообще, зачем нужны такие конструкции, если можно сделать просто
for player in players_list:
    userGamesAdd(player, 1)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 21:55
200000 руб./за проект
24 нояб. 2024, в 21:41
1000 руб./за проект
24 нояб. 2024, в 21:19
35000 руб./за проект