Задать вопрос
@longset4

Можете покритиковать мой код прототипа инвентаря и крафта на Python(терминал\консоль)?

Занимаюсь изучением программирования совсем недавно
Прототип инвентаря для "выживалки" в терминале\консоли на Python.
Покритикуйте, пожалуйста, архитектуру и логику. Буду рад любым советам по улучшению.
import random

items = ["Дерево","Камень","Кремень","Палка","Волокно","Ягоды","Грибы","Уголь","Железная руда","Тряпка"]
inventory = []

print("1 - Подобрать ресурс\n2 - Скрафтить железный меч\n"
      "3 - Очистить инвентарь(выбростить все)\n 4- Посмотреть инвентарь\n"
      "5 - Да\n6 - Нет\n7 - выход из инвентаря")

while True:
    answer = int(input())

    if answer < 1 or answer > 7:
        print('Вводите корректное число!')
        print("Попробуйте еще раз")
        continue
        
    elif answer == 1:
        random_index = random.randint(0, len(items) - 1)
        print("Вы подобрали:", items[random_index])
        inventory.append(items[random_index])

    elif answer == 4:
        print("\n\n\nВ вашем инвентаре:")
        print(inventory)

    elif answer == 2:
        print("*** СОЗДАНИЕ ПРЕДМЕТОВ ***")
        print("Для крафта требуется:\n Палка, Железная руда, Тряпка")
        answer_1 = int(input("Хотите продолжить?\n"))

        if answer_1 == 5:

            if 'Палка' in inventory and 'Железная руда'in inventory and 'Тряпка' in inventory:
                inventory.remove('Палка')
                inventory.remove('Железная руда')
                inventory.remove('Тряпка')
                inventory.append('Железный меч')
                print("Предмет успешно создан!")

            else:
                print("Недостаточно предметов для крафта!")

        elif answer_1 == 6:
            print("Приходите как будете уверены!")

    elif answer == 3:
        inventory.clear()
        print("Ваш инвентарь успешно очищен!")
        print(f"В вашем инвентаре сейчас: {inventory}")

    else:
        print("Вы успешно вышли из инвентаря!")
        exit()
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
int(input()) без try/except уронит всю программу на любом нечисловом вводе или на пустой строке — а не только через ответы 5/6, как уже разобрали в комментах. Заодно инвентарь копит дубликаты строк без счётчика, рано или поздно захочется Counter или словарь {предмет: количество} вместо списка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы