Хитрая сортировка
Пусть у нас есть следующий список, в котором элементы -- tuple из строк:
items = [('one', 'two'), ('three', 'four'), ('five', 'six'), ('string', 'a')]
Мы хотим отсортировать этот список по последней букве второго элемента каждого tuple, т.е. получить такой список:
sorted_items = [ ('string', 'a'), ('one', 'two'), ('three', 'four'), ('five', 'six'),]
Что нужно вставить вместо "###" в следующем выражении, чтобы получить сортировку?
sorted_items = sorted(items, key=lambda x: ###)
P.S. в ответе не должно фигурировать слово 'len'
Как можно использовать команду for в lambda функции?
Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу.
Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
var s:string; m1,m2,m3:integer;
begin
writeln('- Привет! Я компьютер, а как тебя зовут?');
write('- '); readln(s);
writeln('- ',s,', введи свои оценки по 3 предметам');
write('- '); readln(m1,m2,m3);
writeln('- ',s,', твой средний ', (m1+m2+m3)/3);
end.
Пример:
- Привет! Я компьютер, а как тебя зовут?
- Алёна
- Алёна, введи свои оценки по 3 предметам
- 4 4 4
- Алёна, твой средний 4
2.
var a,b:integer;
begin
write('a = '); readln(a);
b:=(a div 100)*100 + (a mod 10)*10 + (a div 10 mod 10);
writeln('b = ',b);
end.
Пример:
a = 123
b = 132