Форум сайта python.su
0
Спасибо Chern.
Блин, никак не могу составить блок схему, чтобы строку вида - Z5x3A2 ->>>> ZZZZZxxxAA.
Отредактировано (Окт. 5, 2010 18:01:13)
Офлайн
13
breidosА что именно не получается? Давайте помогу.
Блин, никак не могу составить блок схему, чтобы строку вида - Z5x3A2 ->>>> ZZZZZxxxAA.
Офлайн
0
x="Z15x33A2"
i=0
k=''
while i<len(x):
try:
if int(x[i]):
k+=x[i]
print k
except:
print x[i]
k=''
i+=1
>>>
Z
1
15
x
3
33
A
2
>>>
while i<len(x):
try:
if int(x[i]):
Отредактировано (Окт. 5, 2010 21:03:05)
Офлайн
0
А есть же метод у строк isdigit Он как раз проверяет не является ли строка цифрой
Отредактировано (Окт. 5, 2010 21:07:22)
Офлайн
13
breidosВы все правильно делаете. Осталось только в том месте, где у вас появилась буква проверить есть ли у вас предыдущая буква(ее нужно запомнить в переменной, а не выводить) и число. Если есть, то добавить буква*число к результату(еще одна переменная). Результат вывести после цикла.
никак не могу подсчитать число.
Офлайн
13
Вот вам маленькая подсказка:
x="Z15x33A2"
i=0
k=''
l=''
while i<len(x):
try:
if int(x[i]):
k+=x[i]
except:
print l, k
k=''
l=x[i]
i+=1
Офлайн
0
Спасибо Ed, хотябы чуть чуть заработал код. Вчера вообще ступор какойта был, ниче не получалось.
Отредактировано (Окт. 6, 2010 08:12:28)
Офлайн
13
Ну показывайте чего получилось. Сделаем из вашего кода конфетку :)
Офлайн
0
Вот добавил в одном месте = и ответ вывел
x="Z15x33A2"
i=0
k=''
l=''
while i<=len(x):
try:
if int(x[i]):
k+=x[i]
except:
print l, k
k=''
l=x[i]
i+=1
Отредактировано (Окт. 6, 2010 22:42:28)
Офлайн
857
Isemа для чего там r ?
Оба выражения можно объединить в одно:sb = ''.join(c * int(n) for c, n in re.findall( r'([^\d]+)(\d+)', sa))
Офлайн