Python: цикл по последовательным символам?

вам нужно написать скрытое или видимое свойство вместо отображения none или block.

10
задан Bill the Lizard 18 September 2012 в 17:02
поделиться

4 ответа

У Вас есть константа в строковом названном модуле ascii_lowercase, испытайте это:

>>> from string import ascii_lowercase

Затем можно выполнить итерации по символам в той строке.

>>> for i in ascii_lowercase :
...     f(i)

Для Вашего вопроса о панграмме существует очень простой способ узнать, содержит ли строка все буквы алфавита. Используя ascii_lowercase как прежде,

>>> def pangram(str) :
...     return set(ascii_lowercase).issubset(set(str))
38
ответ дан 3 December 2019 в 13:18
поделиться

Итерацией константы со всеми символами, в которых Вы нуждаетесь, является очень Pythonic. Однако, если Вы не хотите импортировать что-нибудь и только работаете в Unicode, используйте созданный-ins порядок () и его инверсия chr ().

for code in range(ord('a'), ord('z') + 1):
     print chr(code)
12
ответ дан 3 December 2019 в 13:18
поделиться

Необходимо оставить измы Паскаля и изучить Python со свежей перспективой.

>>> ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> def pangram( source ):
    return all(c in source for c in ascii_lowercase)

>>> pangram('hi mom')
False
>>> pangram(ascii_lowercase)
True

Путем ограничения себя тем, что предлагаемый Паскаль, Вы пропускаете вещи предложения Python.

И... старайтесь избегать reduce. Это часто приводит к ужасным проблемам производительности.


Править. Вот другая формулировка; эти реализации устанавливают пересечение.

>>> def pangram( source ):
>>>     notused= [ c for c in ascii_lowercase if c not in source ]
>>>     return len(notused) == 0

Этот дает Вам часть диагностической информации для определения, что буквы пропускают от панграммы кандидата.

6
ответ дан 3 December 2019 в 13:18
поделиться

Я записал бы функцию, подобную Python range

def alpha_range(*args):
  if len(args) == 1:
    start, end, step = ord('a'), ord(args[0]), 1
  elif len(args) == 2:
    start, end, step = ord(args[0]), ord(args[1]), 1
  else:
    start, end, step = ord(args[0]), ord(args[1]), args[2]
  return (chr(i) for i in xrange(start, end, step))
0
ответ дан 3 December 2019 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: