Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 5, 2010 18:00:01

breidos
От:
Зарегистрирован: 2010-09-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

Спасибо Chern.
Блин, никак не могу составить блок схему, чтобы строку вида - Z5x3A2 ->>>> ZZZZZxxxAA.



Отредактировано (Окт. 5, 2010 18:01:13)

Офлайн

#2 Окт. 5, 2010 20:48:52

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

breidos
Блин, никак не могу составить блок схему, чтобы строку вида - Z5x3A2 ->>>> ZZZZZxxxAA.
А что именно не получается? Давайте помогу.



Офлайн

#3 Окт. 5, 2010 21:00:21

breidos
От:
Зарегистрирован: 2010-09-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

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)

Офлайн

#4 Окт. 5, 2010 21:06:45

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

А есть же метод у строк isdigit Он как раз проверяет не является ли строка цифрой



Отредактировано (Окт. 5, 2010 21:07:22)

Офлайн

#5 Окт. 5, 2010 21:24:57

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

breidos
никак не могу подсчитать число.
Вы все правильно делаете. Осталось только в том месте, где у вас появилась буква проверить есть ли у вас предыдущая буква(ее нужно запомнить в переменной, а не выводить) и число. Если есть, то добавить буква*число к результату(еще одна переменная). Результат вывести после цикла.



Офлайн

#6 Окт. 5, 2010 21:39:33

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

Вот вам маленькая подсказка:

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
Есть еще мысли как ваш код улучшить, но для начала давайте сделаем, чтобы он заработал :)



Офлайн

#7 Окт. 6, 2010 08:12:11

breidos
От:
Зарегистрирован: 2010-09-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

Спасибо Ed, хотябы чуть чуть заработал код. Вчера вообще ступор какойта был, ниче не получалось.



Отредактировано (Окт. 6, 2010 08:12:28)

Офлайн

#8 Окт. 6, 2010 12:21:14

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

Ну показывайте чего получилось. Сделаем из вашего кода конфетку :)



Офлайн

#9 Окт. 6, 2010 22:40:07

breidos
От:
Зарегистрирован: 2010-09-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

Вот добавил в одном месте = и ответ вывел

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
Z 15
x 33
A 2

и ошибку в добавок вывел.



Отредактировано (Окт. 6, 2010 22:42:28)

Офлайн

#10 Окт. 7, 2010 03:48:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10005
Репутация: +  857  -
Профиль   Отправить e-mail  

Буквы и/или числа в строке

Isem
Оба выражения можно объединить в одно:
sb = ''.join(c * int(n) for c, n in re.findall( r'([^\d]+)(\d+)', sa))
а для чего там r ?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version