Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 1, 2019 00:40:05

Yanus
От:
Зарегистрирован: 2011-08-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно ли написал программу ?

Здравствуйте, только начал изучать Python по книге Майкла Доусона. В ней есть следующее задание:
Написать программу “Генератор персонажей” в которой пользователю предоставляется 30 пунктов, которые он должен распределить по характеристикам героя. Значения характеристик можно увеличивать и уменьшать. Вот мой код:

 hero={"Сила":0,"Выносливость":0,"Мудрость":0}
pull=30
choice=None
points=None
while choice!="0":
    print(
        """
    Создадим вашего героя
     0-прекращаем создание героя
     1-увеличим/уменьшим силу
     2-увеличим/уменьшим выносливость
     3-увеличим/уменьшим мудрость
     4-показать все характеристики героя
     """
        )
    choice=input("Ваш выбор: ")
    print()
    if choice=="0":
        print("Пока....")
    elif choice=="1":
        points=int(input("На сколько увеличим/уменьшим силу:  "))
        if points>=0:
            pull=pull-points
            if pull>=0:
                hero["Сила"]=hero["Сила"]+points
                print("Теперь ваша сила равна: ",hero["Сила"],"Свободных очков осталось: ",pull)
        elif points>pull:
            print("У Вас нет такого количества свободных очков попробуйте еще раз")
        if points<0:
            if hero["Сила"]>0:
               zero=hero["Сила"]
               zero=zero+points
               if zero>0:
                   hero["Сила"]=zero
                   pull=pull-points
               elif zero<0:
                     print("Сила не может быть меньше нуля")
               elif zero==0:
                    hero["Сила"]=zero
                    pull=pull-points
            if hero["Сила"]<=0:
                print("Сила героя не может быть меньше нуля")
            elif hero["Сила"]>=0:
                print("Теперь ваша сила равна: ",hero["Сила"],"Свободных очков осталось: ",pull)
    if choice=="2":
        points=int(input("На сколько увеличим/уменьшим выносливость:  "))
        if points>=0:
            pull=pull-points
            if pull>=0:
                hero["Выносливость"]=hero["Выносливость"]+points
                print("Теперь ваша выносливость равна: ",hero["Выносливость"],"Свободных очков осталось: ",pull)
        elif points>pull:
            print("У Вас нет такого количества свободных очков попробуйте еще раз")
        if points<0:
            if hero["Выносливость"]>0:
               zero=hero["Выносливость"]
               zero=zero+points
               if zero>0:
                   hero["Выносливость"]=zero
                   pull=pull-points
               elif zero<0:
                     print("Выносливость не может быть меньше нуля")
               elif zero==0:
                    hero["Выносливость"]=zero
                    pull=pull-points
            if hero["Выносливость"]<=0:
                print("Выносливость героя не может быть меньше нуля")
            elif hero["Выносливость"]>=0:
                print("Теперь ваша выносливость равна: ",hero["Сила"],"Свободных очков осталось: ",pull) 
    if choice=="3":
        points=int(input("На сколько увеличим/уменьшим мудрость:  "))
        if points>=0:
            pull=pull-points
            if pull>=0:
                hero["Мудрость"]=hero["Мудрость"]+points
                print("Теперь ваша мудрость равна: ",hero["Мудрость"],"Свободных очков осталось: ",pull)
        elif points>pull:
            print("У Вас нет такого количества свободных очков попробуйте еще раз")
        if points<0:
            if hero["Мудрость"]>0:
               zero=hero["Мудрость"]
               zero=zero+points
               if zero>0:
                   hero["Мудрость"]=zero
                   pull=pull-points
               elif zero<0:
                     print("Мудрость не может быть меньше нуля")
               elif zero==0:
                    hero["Мудрость"]=zero
                    pull=pull-points
            if hero["Мудрость"]<=0:
                print("Мудрость героя не может быть меньше нуля")
            elif hero["Мудрость"]>=0:
                print("Теперь ваша мудрость равна: ",hero["Мудрость"],"Свободных очков осталось: ",pull)
    if choice=="4":
        print("\nХарактеристики вашего героя выглядят так:")
        print("\n","Сила",hero["Сила"],"\n","Выносливость",hero["Выносливость"],"\n","Мудрость",hero["Мудрость"],"\n","Свободных очков: ",pull)
              
        
Программа работает, но может ее можно как то упростить. И если есть ошибки пожалуйста укажите на них. Заранее благодарен.



Офлайн

#2 Июнь 1, 2019 09:16:00

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Правильно ли написал программу ?

Программирование предполагает умение использовать существующие наработки
я бы сделал так:

 import yaml
import subprocess as sp
import os
def get_props(props={"сила":0,"мудрость":0,...}):
    nm = "tmp.yaml"
    with open(nm,"w",encoding="utf-8") as f:
         yaml.dump(props,f,allow_unicode=True)
    sp.run(f"subl {nm}")
    with open(nm,"r",encoding="utf-8") as f:
         new_props = yaml.load(f)
    os.remove(nm)
    # тут если надо можно проверить и поправить то что введено
    return new_props
            
Вместо subl подставьте любимый текстовый редактор.
Зачем городить неудобный консольный интерфейс если можно воспользоваться удобным редактором?



Отредактировано doza_and (Июнь 1, 2019 09:29:42)

Офлайн

#3 Июнь 4, 2019 15:27:47

Yanus
От:
Зарегистрирован: 2011-08-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно ли написал программу ?

doza_and
Программирование предполагает умение использовать существующие наработкия бы сделал так:
Здравствуйте, спасибо за ответ, но хотел бы обратить Ваше внимание на то что я еще только начал изучать Python. К сожалению многое из того, что Вы написали мне пока не понятно.



Офлайн

#4 Июнь 4, 2019 22:01:23

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Правильно ли написал программу ?

Yanus
Написать программу “Генератор персонажей” в которой пользователю предоставляется 30 пунктов, которые он должен распределить по характеристикам героя
млин, у меня очень четкое дежавь, гдето на этом форуме ктото ровно с тем же вопросом обращался.но вот не могу найти, толи с поиском на форуме чтото толи у меня с головой…
а вот нашел , посмотрите тут:
http://python.su/forum/topic/26652/?page=1
там ного ответов на еще не заданые вами вопросы..



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 4, 2019 22:02:28)

Офлайн

#5 Июнь 4, 2019 23:50:48

Yanus
От:
Зарегистрирован: 2011-08-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно ли написал программу ?

PEHDOM
Огромное Вам спасибо. Посмотрел.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version