Уведомления

Группа в Telegram: @pythonsu

#1 Май 31, 2012 14:50:02

johniek_comp
Зарегистрирован: 2012-05-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Не очень красивое решение

Нужно сделать цикл с n итерациями, где n это кол-во символов в строке, я сделал но может можно по красивее?

for i in range(1,len(s)+1):
    print i

Офлайн

#2 Май 31, 2012 14:55:19

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Не очень красивое решение

Если не нужен индекс:

for c in s:
    print c
если нужен индекс:
for i, c in enumerate(s):
    print i, c
если индекс должен начинаться с 1:
for i, c in enumerate(s, 1):
    print i, c

Офлайн

#3 Май 31, 2012 14:57:09

johniek_comp
Зарегистрирован: 2012-05-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Не очень красивое решение

Ещё вопрос, а как проверить что строка состоит с одних и тех же символов?

str = "aaaaaaa"

Офлайн

#4 Май 31, 2012 15:04:05

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Не очень красивое решение

johniek_comp
Ещё вопрос, а как проверить что строка состоит из одних и тех же символов?
Можно так:
In [1]: s1 = 'aaaaaaaa'
 
In [2]: s2 = 'aaaaaab'
 
In [3]: len(set(s1)) == 1
Out[3]: True
 
In [4]: len(set(s2)) == 1
Out[4]: False
или так:
In [5]: all(s1[0] == c for c in s1)
Out[5]: True
 
In [6]: all(s2[0] == c for c in s2)
Out[6]: False

Отредактировано reclosedev (Май 31, 2012 15:06:08)

Офлайн

#5 Май 31, 2012 20:19:21

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Не очень красивое решение


>>> a="aaaaaaaaaa"
>>> import re
>>> re.match(a[0]+"+$",a)
<_sre.SRE_Match object at 0x01219E20>
>>> re.match(b[0]+"+$",b)
>>> 

p.s.
постарайтесь не называть переменную str - при этом вы не сможете использовать встроенную функцию str преобразующую любой объект в строку



Отредактировано doza_and (Май 31, 2012 20:28:06)

Офлайн

#6 Май 31, 2012 22:46:29

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Не очень красивое решение

doza_and
p.s.
постарайтесь не называть переменную str - при этом вы не сможете использовать встроенную функцию str преобразующую любой объект в строку
Питон такой питон - все логичные имена заняты, на перезапись ничто не матерится.

doza_and, ты имхо ^ забыл.
Вот еще вариант.
a="aaaaaaaaaa"
a.count(a[0]) == len(a)



Офлайн

#7 Май 31, 2012 23:42:28

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Не очень красивое решение

doza_and
постарайтесь не называть переменную str - при этом вы не сможете использовать встроенную функцию str преобразующую любой объект в строку
Отчего же, можно использовать:
>>> str = 1
>>> del str
>>> str(5)
'5'

P.S. Гораздо веселее так:
>>> __builtins__.str = 123
>>> str
123

P.S. Это так, 5 копеек чисто…



Офлайн

#8 Июнь 1, 2012 22:58:47

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Не очень красивое решение

asilyator
doza_and, ты имхо ^ забыл.
Для match “^” не нужен, он всегда с начала строки проверяет.

Офлайн

#9 Июнь 1, 2012 23:35:56

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Не очень красивое решение

А ну да, еще один питонокостыль, добавили лишнюю фунцию - и запоминай, какая из них что делает. В перле регекспы были поприятнее, зато в питоне есть сырые строки и re.escape.



Офлайн

#10 Июнь 2, 2012 10:12:00

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

Не очень красивое решение

asilyator
А ну да, еще один питонокостыль, добавили лишнюю фунцию - и запоминай, какая из них что делает.

они различаются
>>> re.search(r'^....$', 'abc\ndefg\nhijk', re.M).group()
'defg'
>>> re.match(r'^....$', 'abc\ndefg\nhijk', re.M).group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>>

там ещё есть re.compile(), которая компилирует regex-объект, у которого тоже оба этих метода есть



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version