powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Задача по Python для начинающих с циклами и списками
15 сообщений из 15, страница 1 из 1
Задача по Python для начинающих с циклами и списками
    #38511493
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Условие:
(Повышенная сложность) Написать программу декодирования телефонного номера для АОН.
По запросу АОНа АТС посылает телефонный номер, используя следующие правила:
— Если цифра повторяется менее 2 раз, то это помеха и она должна быть отброшена
— Каждая значащая цифра повторяется минимум 2 раза
— Если в номере идут несколько цифр подряд, то для обозначения «такая же цифра как предыдущая» используется идущий 2 или более подряд раз знак #

Например, входящая строка 4434###552222311333661 соответствует номеру 4452136
Кстати, регулярные выражения использовать в этих заданиях — нельзя :)

вот собственно что я наваял прошу не судить строго,
пишет Value error tel.remove(n) n not in list range
был на хабре вопрос его закрыли уже нельзя спросить , не дает покоя уже 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.
aon = raw_input('enter code: ')
tel =[]
range1 = len(aon)

range1 = range1-1
n=0
for int in aon:
    if n < range1:
        n=n+1
        if aon[n-1] == aon[n]:

            tel.append(aon[n-1])
        elif aon[n]== '#':
            #aon[n-1] = aon[n-1]+'#'
            tel.append(aon[n-1])
            tel.append(aon[n])
range2 = len(tel)
range2 = range2-1

print tel
n=0
for int2 in tel:
    if n<range2:
        n=n+1
        if tel[n-1]==tel[n] and tel[n+1]!='#':
            tel.remove(n)
        elif tel[n]!='#':
            tel.remove(n)
print tel            
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511526
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то много телодвижений )) Не такая уж сложная задача... я ведь тоже не профи (новичёк, учил может с недельку питон... не срослось, появилась идея интереснее)...
Итак:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#!/usr/local/bin/python2.7
    
aon = raw_input('enter code: ')
res = ''
tel = ''
last_sym = ''
#убираю повторы и отсеиваю помехи
for sym in aon:
  if (last_sym==sym and (len(res)==0 or res[-1]!=sym)):
    res += sym
  last_sym=sym
  
#заменяю решётки на предшествующие им символы
for sym in res:
  if (sym!='#'):
    tel += sym
  else:
    tel += last_sym
  last_sym = sym
  
print tel
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511612
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограмёрИтак:
Код: python
1.
2.
3.
4.
5.
#убираю повторы и отсеиваю помехи
for sym in aon:
  if (last_sym==sym and (len(res)==0 or res[-1]!=sym)):
    res += sym
  last_sym=sym


спасибо за ответ
не совсем понял этот момент и еще ваш вариант не выводит символы после которых #
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511622
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а можно и извратиться

Код: python
1.
2.
3.
4.
5.
6.
7.
#!/usr/local/bin/python2.7
    
aon = raw_input('enter code: ')
tel = [aon[num] for num in range(len(aon)-1) if (num==0 or aon[num-1]!=aon[num]) and aon[num]==aon[num+1]]
res = ''.join([(tel[num] if tel[num]!='#' else tel[num-1]) for num in range(len(tel))])

print res
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511628
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ekПрограмёрИтак:
Код: python
1.
2.
3.
4.
5.
#убираю повторы и отсеиваю помехи
for sym in aon:
  if (last_sym==sym and (len(res)==0 or res[-1]!=sym)):
    res += sym
  last_sym=sym


спасибо за ответ
не совсем понял этот момент и еще ваш вариант не выводит символы после которых #

а что не поняли?

логика такая:
если два одинаковых символа идут подряд - значит не помеха. А всё, что не помехи (last_sym==sym) и не повторы (res[-1]!=sym) - пишем в результат. а len(res)==0 там написано для того, что бы при нулевой длине результата не получать ошибку обращения к несуществующему элементу.
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511640
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вобщем извращался и до извращался до такого
есть два ссписка

Код: python
1.
2.
3.
# пример
tel=[2,2,2,2,3,#]  # тут отсеились все которые безпары сиволов или без # такого вида к примеру в 22223#
te_l=[2,2,2,#] # а тут те что нужно удалить из верхнего чтоб получить чистый к примеру 222#



отнять от верхнего списка нижний чтобы получилось
[2,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.
aon = raw_input('enter code: ')
tel =[]
tel_l =[]
number = ''
range1 = len(aon)
range1 = range1-1
n=0
for int in aon:
    if n < range1:
        n=n+1
        if aon[n-1] == aon[n]:
            tel.append(aon[n-1])
        elif aon[n]== '#':
            #aon[n-1] = aon[n-1]+'#'
            tel.append(aon[n-1])
            tel.append(aon[n])
range2 = len(tel)
range2 = range2-1
print tel
n=0
for int2 in tel:
    if n<range2:
        n=n+1
        if tel[n-1]==tel[n] and tel[n+1]!='#':
            
            tel_l.append(tel[n])
        elif tel[n]=='#':
           
            tel_l.append(tel[n])
           
print tel_l            
 
 
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511641
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LamerO4ekвобщем извращался и до извращался до такого
есть два ссписка

Код: python
1.
2.
3.
# пример
tel=[2,2,2,2,3,#]  # тут отсеились все которые безпары сиволов или без # такого вида к примеру в 22223#
te_l=[2,2,2,#] # а тут те что нужно удалить из верхнего чтоб получить чистый к примеру 222#



отнять от верхнего списка нижний чтобы получилось
[2,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.
aon = raw_input('enter code: ')
tel =[]
tel_l =[]
number = ''
range1 = len(aon)
range1 = range1-1
n=0
for int in aon:
    if n < range1:
        n=n+1
        if aon[n-1] == aon[n]:
            tel.append(aon[n-1])
        elif aon[n]== '#':
            #aon[n-1] = aon[n-1]+'#'
            tel.append(aon[n-1])
            tel.append(aon[n])
range2 = len(tel)
range2 = range2-1
print tel
n=0
for int2 in tel:
    if n<range2:
        n=n+1
        if tel[n-1]==tel[n] and tel[n+1]!='#':
            
            tel_l.append(tel[n])
        elif tel[n]=='#':
           
            tel_l.append(tel[n])
           
print tel_l            
 
 



хотел бы узнать как это отнимание провернуть со списками =)
спасибо за ответы
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511647
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ek,

Зачем так сложно? я же показал варианты полегче (вон даже в 3 строки есть, на любителя... мне это в питоне нравится, кодинг в разы ускоряет) :)

Кстати, в своём варианте указанной ошибки не нашёл, напишите пожалуйста что вводили, и что ожидали получить в ответ :)
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511665
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограмёрLamerO4ek,

Зачем так сложно? я же показал варианты полегче (вон даже в 3 строки есть, на любителя... мне это в питоне нравится, кодинг в разы ускоряет) :)

Кстати, в своём варианте указанной ошибки не нашёл, напишите пожалуйста что вводили, и что ожидали получить в ответ :)

пробывал любой Ваш вариант, цифры после которых # не запоминает, запоминает только цифры с повторами
к примеру 1#4#55667
выводит 56
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511668
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ekПрограмёрLamerO4ek,

Зачем так сложно? я же показал варианты полегче (вон даже в 3 строки есть, на любителя... мне это в питоне нравится, кодинг в разы ускоряет) :)

Кстати, в своём варианте указанной ошибки не нашёл, напишите пожалуйста что вводили, и что ожидали получить в ответ :)

пробывал любой Ваш вариант, цифры после которых # не запоминает, запоминает только цифры с повторами
к примеру 1#4#55667
выводит 56

Но ведь всё правильно )) По условию задачи так и должно быть... То есть посимвольно:
1 - помеха (не повторяется)
# - помеха (не повторяется)
4 - помеха (не повторяется)
# - помеха (не повторяется)
55 - цифра 5
66 - цифра 6
7 - помеха (не повторяется)
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511676
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

прошу прощения это я не правильно вьехал в условие
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38511683
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ekПрограмёр,

прошу прощения это я не правильно вьехал в условие

Бывает. Главное разобрались :)
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38512527
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#!/usr/local/bin/python2.7
    
aon = raw_input('enter code: ')
res = ''
tel = ''
last_sym = ''
#убираю повторы и отсеиваю помехи
for sym in aon:
  if (last_sym==sym and (len(res)==0 or res[-1]!=sym)):
    res += sym
  last_sym=sym
  
#заменяю решётки на предшествующие им символы
for sym in res:
  if (sym!='#'):
    tel += sym
  else:
    tel += last_sym
  last_sym = sym
  
print tel

[/quot]


Вы не могли бы пожалуйста, пошагово расписать логику в коде, все равно до конца не разобрался.
Спасибо
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38512546
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ek,

а что именно вызывает затруднения?
...
Рейтинг: 0 / 0
Задача по Python для начинающих с циклами и списками
    #38514862
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался) спасибо за помощь.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Задача по Python для начинающих с циклами и списками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]