Доброго времени суток! Изучаю Питон, сейчас на этапе строк и списков. Есть задача, но я никак не могу додуматься, как ее решить... Помогите, пожалуйста, кому не трудно это сделать.
На решение первой части есть набросок:
s=str(input('Введите строку'))
l=list()
while ...
a= #вот тут какое-то действие в цикле для выдергивания символов по очереди из строки и последующего изменения через ord, но я не знаю какое
ord(?)
l.append(a)
Конец цикла
print(l)
3) Дана строка, сформируйте список, содержащий ASCII коды символов этой строки.
а) Вычислите среднее арифметическое (с точностью до целого) полученных кодов и допишите его в начало списка.
б) Спросите у пользователя ещё 3 символа (если пользователь ввел больше символов, используйте только первые 3). Получите их ASCII коды. Проверьте наличие каждого из этих кодов в списке, и если его нет – допишите в конец списка.
в) Определите, есть ли в списке элементы, равные последнему, и если да, то определите сколько их. Отсортируйте список по убыванию.
После выполнения каждого раздела задачи выведите список на экран.
mystr="Test string for me"
arr = [ord(x) for x in mystr]
print(arr)
arr = [int(sum(arr)/len(arr))]+arr
print(arr)
arr += [x for x in [ord(x) for x in (input()+" ")[:3]] if x not in arr]
print(arr)
if arr[-1] in arr[:-1]: print("count Last:",arr.count(arr[-1])-1)
arr.sort(reverse=True)
print(arr)
ASCII не содержит русских букв, так что это будет нарушение условия.
>>> mystr = "Тестовая строка"
>>> [ord(x) for x in mystr]
[1058, 1077, 1089, 1090, 1086, 1074, 1072, 1103, 32, 1089, 1090, 1088, 1086, 1082, 1072]
но мне стало интересно и я добавил...
код отработал как и ожидалось, но я хз какая кодировка в консоли - должна быть UTF-8
естественно питон 3.х на 2.х он наверно выругнется как-нибудь.
Александр
@Andy_U
Уже сам справился (но все равно спасибо за отклик), получилось больше по емкости, но, соблюдены условия использования только тех инструментов, которые были у меня по программе:
s=str(input('Введите строку '))
l=list()
t=len(s)
x=0
y=1
w=0
for i in range(t):
z=s[x:y]
l.append(ord(z))
w=w+(int(ord(z)))
x=x+1
y=y+1
ux=ord(z)
print(l)
g=list()
g.append(w//t)
print('А)', g+l)
s=str(input('Введите три символа '))
x=0
y=1
r=list()
for i in range(3):
z=s[x:y]
p=ord(z)
r.append(p)
x=x+1
y=y+1
v=l.count(p)
if v<1 :
l.append(p)
ux=ord(z)
b=g+l
print('Б)', b)
v=b.count(p)
if v>1 :
print('В списке', v-1,'элементов, которые повторяются с последним')
else :
print('В списке нет элементов, которые повторяются с последним')
b.sort(reverse=True)
print('В)',b)