Поделитесь своими знаниями, ответьте на вопрос:
Тема: работа со списками у вас есть персонаж, рядом и статов. напишите программу по заданным условиям: 1. персонаж имеет набор статов: strength, dexterity, intelligence, wisdom, charisma. каждая стата имеет свой запас. №9 2 значения запасов каждой статы должны быть случайны – в пределах от 60 до 80 и быть представлены в списке stats = []: stats = [] attributes = 5 for i in range(attributes): r = random.randint(60, 80) stats.append(r) 2. в начале игры пользователю предоставляется возможность однократно повысить одну стату на случайное количество единиц – от 5 до 15: select = int(input('select: ')) select -= 1 stats[select] = stats[select] + random.randint(5, 15) обратите внимание, что повышая одну стату на сгенерированное число, все остальные должны уменьшиться на случайное значение в пределах от 5 до 15: for i in range(len(stats)): if i == select: continue stats[i] = stats[i] - random.randint(5, 15) №9 3 3. персонаж обладает набором скилов: fireball, lightning, silence, fire ward. использование каждого из них отнимает разное количество единиц статов, а именно: атрибуты занесите эти данные в список, чтобы в дальнейшем воспользоваться ими в игре: fireball = [12, 15, 28, 10, 5] №9 4 4. предоставьте пользователю возможность использовать скилы, например, по нажатию f применяется fireball, l – lightning и т. д. после применения какой-либо из запас статов будет уменьшаться, согласно выше таблице. рассмотрим следующий пример: 1. было stats: 70 64 63 80 65. 2. применили fireball: 12 15 28 10 5. 3. стало stats: 58 49 35 70 60. следите за тем, чтобы элементы в списке stats = [] не стали отрицательными.
= - 127, максимальное число = + 127
2) Число 1607, ячейка двухбайтовая, один бит под знак, следовательно, под число отводится 15 бит, в двоичном представлении 1607(10) = 11001000111(2), дополняем до 16 бит, старший бит - знаковый - нулевой, так как число положительное
= 0000011001000111(2) - это двоичное представление в двухбайтовой ячейке, чтобы получить шестнадцатиричное представление, разбиваем число справа - налево по 4 бита
0000 0110 0100 0111 и записываем в шестнадцатиричном виде
0111(2) = 7(16) 0100(2) = 4(16) 0110(2) =6(16) 0000(2) = 0(16)
1607(16) = 0647(16) или без старшего не значащего нуля = 647(16)
3) для получения дополнительного кода числа, находят обратное число, или инверсию числа,
для этого каждый бит числа изменяют на противоположный, 1 на 0, 0 на 1
105(10) = 1101001(2) - это и есть дополнительный код числа - 105, т.е. дополнительным кодом
числа (- а) будет число а.
Найдем дополнительный код в однобайтовой ячейке числа 105(10) = 01101001(2),
а) находим обратное 01101001(2) ->(обратное) ->10010110(2)
б) дополнительный код-> обратный код + 1 ->(дополнительный)->10010111(2), а это число - 105
потому, что отрицательные числа представляются в дополнительном коде.
Если для числа - 105 найти дополнительный код, то получим число 105
10010111(2)->(дополнительный)->01101000+1->01101001 = 69(16) = 16*6+9 = 96+9 = 105