Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 13

Как работает эта конструкция?

26.01.2023, 18:27. Показов 5548. Ответов 3

Студворк — интернет-сервис помощи студентам
#ВЕСЬ ОСНОВНОЙ КОД!

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from random import randint
 
DEFAULT_ATTACK = 5
DEFAULT_DEFENCE = 10
DEFAULT_STAMINA = 80
 
 
class Character:
 
    RANGE_VALUE_ATTACK = (1, 3)
    RANGE_VALUE_DEFENCE = (1, 5)
    SPECIAL_SKILL = 'Удача'
    SPECIAL_BUFF = 15
    BRIEF_DESC_CHAR_CLASS = 'отважный любитель приключений'
 
    def __init__(self, name):
        self.name = name
 
    def attack(self):
        value_attack = DEFAULT_ATTACK + randint(*self.RANGE_VALUE_ATTACK)
        return (f'{self.name} нанёс противнику урон, равный {value_attack}.')
 
    def defence(self):
        value_defence = DEFAULT_DEFENCE + randint(*self.RANGE_VALUE_DEFENCE)
        return f'{self.name} блокировал {value_defence} ед. урона.'
 
    def special(self):
        return (f'{self.name} применил специальное умение '
                '"{self.SPECIAL_SKILL} {self.SPECIAL_BUFF}".')
 
    def __str__(self):
        return f'{self.__class__.__name__} - {self.BRIEF_DESC_CHAR_CLASS}.'
 
 
class Warrior(Character):
    BRIEF_DESC_CHAR_CLASS = (' дерзкий воин ближнего боя. '
                             'Сильный, выносливый и отважный')
    RANGE_VALUE_ATTACK = (3, 5)
    RANGE_VALUE_DEFENCE = (5, 10)
    SPECIAL_BUFF = DEFAULT_STAMINA + 25
    SPECIAL_SKILL = 'Выносливость'
 
 
class Mage(Character):
    BRIEF_DESC_CHAR_CLASS = (' находчивый воин дальнего боя. '
                             'Обладает высоким интеллектом')
    RANGE_VALUE_ATTACK = (5, 10)
    RANGE_VALUE_DEFENCE = (-2, 2)
    SPECIAL_BUFF = DEFAULT_ATTACK + 40
    SPECIAL_SKILL = 'Атака'
 
 
class Healer(Character):
    BRIEF_DESC_CHAR_CLASS = (' могущественный заклинатель. '
                             'Черпает силы из природы, веры и духов')
    RANGE_VALUE_ATTACK = (-3, -1)
    RANGE_VALUE_DEFENCE = (2, 5)
    SPECIAL_BUFF = DEFAULT_DEFENCE + 30
    SPECIAL_SKILL = 'Защита'
 
 
def choice_char_class(char_name: str) -> Character:
    """
    Возвращает строку с выбранным
    классом персонажа.
    """
    game_classes = {'warrior': Warrior, 'mage': Mage, 'healer': Healer}
    approve_choice: str  = None
    while approve_choice != 'y':
        selected_class = input('Введи название персонажа, '
                               'за которого хочешь играть: Воитель — warrior, '
                               'Маг — mage, Лекарь — healer: ')
        char_class: Character = game_classes[selected_class](char_name) [B]<-----ВОТ ЭТА![/B]
        # Вывели в терминал описание персонажа.
        print(char_class)
        approve_choice = input('Нажми (Y), чтобы подтвердить выбор, '
                               'или любую другую кнопку, '
                               'чтобы выбрать другого персонажа ').lower()
    return char_class
 
def start_training(character):
    """
    Принимает на вход имя и класс персонажа.
    Возвращает сообщения о результатах цикла тренировки персонажа.
    """
    commands = {'attack': character.attack, 'defence': character.defence,
                'special': character.special}
    cmd = None
    while cmd != 'skip':
        cmd = input('Введи команду: ')
        if cmd in commands:
            print(commands[cmd])
    return 'Тренировка окончена.'
Не понятно как работает конструкция char_class: Character = game_classes[selected_class](char_name) и в принципе обе последние функции (def choice_char_class, def start_training).
Помогите пожалуйста!)))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2023, 18:27
Ответы с готовыми решениями:

Как работает эта функция?
Хотел попросить вашего совета. Не могу разобраться том как работает эта функция. Буду рад, если поможете:) def party_sort(a): ...

Как работает эта программа?
Очень нужно. Желательно поподробнее с каждым шагом. Жду от вас помощи, программисты)) list1 = for _ in range(int(input())): ...

Как работает эта строк в коде? for x in range(100):
Немножко не понимаю, почему например, команда print будет повторяться 100 раз? Допустим в этом коде: name = input('Как тебя зовут? ') ...

3
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
26.01.2023, 18:49
Это аннотации типов. Необязательно, но желательно.
Примерно как тут:
Python
1
price: int = 5
Подсказка, что price имеет тип int.
В 68 строке тоже есть.
1
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 13
26.01.2023, 19:11  [ТС]
Т.е. это
Python
1
char_class: Character = game_classes[selected_class](char_name)
аннотация типов? А какой в ней смысл в этом коде?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
26.01.2023, 19:47
Цитата Сообщение от SamuelLis Посмотреть сообщение
А какой в ней смысл в этом коде?
переводится так - вот ссылка на чар_класс, который является объектом класса Чарактер и получаем мы его способом, указанным после равно

Зачем автор внезапно внутри цикла использовал аннотацию - лучше спросить у него, но они улучшают (порой) понимание и упрощают работу в ИДЕ.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2023, 19:47
Помогаю со студенческими работами здесь

Не могли бы Вы мне объяснить как работает эта сортировка словаря по его значениям?
my_dict = {1: 2, 2: 10, &quot;Hello&quot;: 1234} print({key: value for key, value in sorted(my_dict.items(), key=lambda item: item)}) ...

Не работает конструкция
def poisk_zap_ryadov(spisok_zapolnenih): kol_v_ryade = 0 for el_spiska_zap in spisok_zapolnenih: ...

Не работает конструкция if/else
if a&gt;b: a=3 else: b=3 выдает на else ошибку синтаксиса. s= ...

Некорректно работает конструкция if/else
Здравствуйте! Помогите пожалуйста разобраться с некорректно работающей конструкцией if else: b = {} if &quot;orange&quot; and not...

Как это работает эта конструкция?
$res = mysql_query($query) or die(mysql_error()); $arr = array(); while($row = mysql_fetch_assoc($res)) { if ( ! isset($arr ])) $arr...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru