Найти - Пользователи
Полная версия: Буквы и/или числа в строке
Начало » Python для новичков » Буквы и/или числа в строке
1 2 3 4 5 6
breidos
Спасибо Chern.
Блин, никак не могу составить блок схему, чтобы строку вида - Z5x3A2 ->>>> ZZZZZxxxAA.
Ed
breidos
Блин, никак не могу составить блок схему, чтобы строку вида - Z5x3A2 ->>>> ZZZZZxxxAA.
А что именно не получается? Давайте помогу.
breidos
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]):
никак не могу подсчитать число.
guranvir
А есть же метод у строк isdigit Он как раз проверяет не является ли строка цифрой
Ed
breidos
никак не могу подсчитать число.
Вы все правильно делаете. Осталось только в том месте, где у вас появилась буква проверить есть ли у вас предыдущая буква(ее нужно запомнить в переменной, а не выводить) и число. Если есть, то добавить буква*число к результату(еще одна переменная). Результат вывести после цикла.
Ed
Вот вам маленькая подсказка:
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
Есть еще мысли как ваш код улучшить, но для начала давайте сделаем, чтобы он заработал :)
breidos
Спасибо Ed, хотябы чуть чуть заработал код. Вчера вообще ступор какойта был, ниче не получалось.
Ed
Ну показывайте чего получилось. Сделаем из вашего кода конфетку :)
breidos
Вот добавил в одном месте = и ответ вывел
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

и ошибку в добавок вывел.
py.user.next
Isem
Оба выражения можно объединить в одно:
sb = ''.join(c * int(n) for c, n in re.findall( r'([^\d]+)(\d+)', sa))
а для чего там r ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB