Программирование на Python, 35б даю ТЕМА: Работа со списками
Задание
У вас есть персонаж, обладающий рядом
и статов.
Напишите программу по заданным условиям:
1. Персонаж имеет набор статов: strength, dexterity, intelligence, wisdom, charisma. Каждая стата имеет свой запас.
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)
3
3. Персонаж обладает набором скилов: fireball, lightning,
silence, fire ward.
Использование каждого из них отнимает разное количество единиц статов, а именно:
Атрибуты /
Wisdom Charisma
Fireball 12 15 28 10 5
Lightning 7 13 15 30 10
Silence 23 10 12 7 18
Fire Ward 20 23 14 6 17
Занесите эти данные в список, чтобы в дальнейшем
воспользоваться ими в игре:
fireball = [12, 15, 28, 10, 5]
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 = []
не стали отрицательными.
{данная программа переводит любое сочетание символов ascii в систему счисления заданную пользователем.}
//pascal abc.net v3.0 сборка 1111
var
a,i,b,r,n,j,bug: integer;
s,se,slo,slof: string;
procedure preob(var a,b,n: integer; var se: string);
begin
repeat
b: =a mod n;
a: =a div n;
str(b,se);
s+=se;
until (a< =n-1);
end;
beginreadln(slo);
readln(n);
for j: =1 to length(slo) do
begin;
a: =ord(slo[j]);
preob(a,b,n,se);
str(a,se);
s+=se;
for i: =1 to length(s) div 2 do
begin;
se: =s[i];
s[i]: =s[length(s)-i+1];
s[length(s)-i+1]: =se[1];
end;
write(s,'-');
slof: =slof+s;
delete(s,1,length(s));
end;
end.
пример ввода:
работа на завтра.
2
пример вывода:
11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-
{таким образом, фразу " работа на завтра." можно закодировать как "11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-".}