Python: como imprimir intervalo az?

109

1. Imprima um: abcdefghijklmn

2. Cada segundo em um: acegikm

3. Anexe um ao índice de urls {hello.com/, hej.com/, ..., hallo.com/}: hello.com/a hej.com/b ... hallo.com/n

hhh
fonte
6
Estranho que, para uma pergunta de "iniciante", você ainda possa obter uma variedade de respostas. O fato de eu poder digitar não significa que eu possa "python", eu realmente gosto da resposta do gnibbler sobre coisas-bagunçadas. Obrigado a todos por suas respostas e - mantenha as coisas simples, um agradecimento especial ao gnibbler.
hhh
2
Não é uma variedade selvagem de respostas. São duas variedades. Um usa rangee chr()e outro as listas prontas string, nas quais muitas pessoas nem pensariam.
Lennart Regebro

Respostas:

189
>>> import string
>>> string.ascii_lowercase[:14]
'abcdefghijklmn'
>>> string.ascii_lowercase[:14:2]
'acegikm'

Para fazer os urls, você poderia usar algo assim

[i + j for i, j in zip(list_of_urls, string.ascii_lowercase[:14])]
John La Rooy
fonte
1
Acredito que string.ascii_lowercase já funcione no python 2.x, então, para ter certeza, use sempre ascii_lowercase.
johk95
1
@ johk95, na verdade str.lowercasedepende da localidade, então não foi a melhor escolha em primeiro lugar. Substituí-o na minha resposta
John La Rooy
Olá, poderia me dizer se isso está disponível apenas em inglês? não posso obter o mesmo para outras línguas também? Obrigado e cumprimentos
Michael Schroter
47

Presumindo que seja um dever de casa ;-) - não há necessidade de invocar bibliotecas etc - provavelmente espera que você use range () com chr / ord, assim:

for i in range(ord('a'), ord('n')+1):
    print chr(i),

De resto, basta brincar um pouco mais com o intervalo ()

Nas Banov
fonte
23

Dicas:

import string
print string.ascii_lowercase

e

for i in xrange(0, 10, 2):
    print i

e

"hello{0}, world!".format('z')
Wayne Werner
fonte
18
for one in range(97,110):
    print chr(one)
yedpodtrzitko
fonte
12

Obtenha uma lista com os valores desejados

small_letters = map(chr, range(ord('a'), ord('z')+1))
big_letters = map(chr, range(ord('A'), ord('Z')+1))
digits = map(chr, range(ord('0'), ord('9')+1))

ou

import string
string.letters
string.uppercase
string.digits

Esta solução usa a tabela ASCII . ordobtém o valor ascii de um personagem e chrvice-versa.

Aplique o que você sabe sobre listas

>>> small_letters = map(chr, range(ord('a'), ord('z')+1))

>>> an = small_letters[0:(ord('n')-ord('a')+1)]
>>> print(" ".join(an))
a b c d e f g h i j k l m n

>>> print(" ".join(small_letters[0::2]))
a c e g i k m o q s u w y

>>> s = small_letters[0:(ord('n')-ord('a')+1):2]
>>> print(" ".join(s))
a c e g i k m

>>> urls = ["hello.com/", "hej.com/", "hallo.com/"]
>>> print([x + y for x, y in zip(urls, an)])
['hello.com/a', 'hej.com/b', 'hallo.com/c']
Martin Thoma
fonte
Parece que string.letters foi removido do Python 3 e apenas string.ascii_letters, não exatamente igual , está disponível
jonespm
8
import string
print list(string.ascii_lowercase)
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
Mikhail Makeev
fonte
1
Para tornar isso uma tupla (que é imutável) em Python 3:tuple(string.ascii_lowercase)
Alex Willison
6
import string
print list(string.ascii_lowercase)
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

e

for c in list(string.ascii_lowercase)[:5]:
    ...operation with the first 5 characters
Miguel Silva
fonte
4
myList = [chr(chNum) for chNum in list(range(ord('a'),ord('z')+1))]
print(myList)

Resultado

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
Rakesh More
fonte
Bem-vindo ao StackOverflow. Tente explicar mais claramente por que essa é uma resposta completa à pergunta.
Jeroen Heier
Obrigado. Eu gosto de como você constrói isso.
hmacias
2
#1)
print " ".join(map(chr, range(ord('a'),ord('n')+1)))

#2)
print " ".join(map(chr, range(ord('a'),ord('n')+1,2)))

#3)
urls = ["hello.com/", "hej.com/", "hallo.com/"]
an = map(chr, range(ord('a'),ord('n')+1))
print [ x + y for x,y in zip(urls, an)]
carlos_lm
fonte
2

A resposta a esta pergunta é simples, basta fazer uma lista chamada ABC assim:

ABC = ['abcdefghijklmnopqrstuvwxyz']

E sempre que precisar se referir a ele, basta fazer:

print ABC[0:9] #prints abcdefghij
print ABC       #prints abcdefghijklmnopqrstuvwxyz
for x in range(0,25):
    if x % 2 == 0:
        print ABC[x] #prints acegikmoqsuwy (all odd numbered letters)

Também tente isso para quebrar seu dispositivo: D

##Try this and call it AlphabetSoup.py:

ABC = ['abcdefghijklmnopqrstuvwxyz']


try:
    while True:
        for a in ABC:
            for b in ABC:
                for c in ABC:
                    for d in ABC:
                        for e in ABC:
                            for f in ABC:
                                print a, b, c, d, e, f, '    ',
except KeyboardInterrupt:
    pass
SnootierBaBoon
fonte
2

Experimentar:

strng = ""
for i in range(97,123):
    strng = strng + chr(i)
print(strng)
Cetin Kaya Koc
fonte
1

Esta é sua segunda pergunta: string.lowercase[ord('a')-97:ord('n')-97:2]porque 97==ord('a')- se você quer aprender um pouco, você deve descobrir o resto sozinho ;-)

Jochen Ritzel
fonte
1
list(string.ascii_lowercase)

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
morador da cidade
fonte
1

Eu espero que isso ajude:

import string

alphas = list(string.ascii_letters[:26])
for chr in alphas:
 print(chr)
Fasih Zafar
fonte
0

Sobre a resposta do gnibbler.

Função Zip, explicação completa , a list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. [...]construção de retornos é chamada de compreensão de lista , recurso muito legal!

hhh
fonte
0

Outra maneira de fazer isso

  import string
  pass

  aalist = list(string.ascii_lowercase)
  aaurls = ['alpha.com','bravo.com','chrly.com','delta.com',]
  iilen  =  aaurls.__len__()
  pass

  ans01 = "".join( (aalist[0:14]) )
  ans02 = "".join( (aalist[0:14:2]) )
  ans03 = "".join( "{vurl}/{vl}\n".format(vl=vjj[1],vurl=aaurls[vjj[0] % iilen]) for vjj in enumerate(aalist[0:14]) )
  pass

  print(ans01)
  print(ans02)
  print(ans03)
  pass

Resultado

abcdefghijklmn
acegikm
alpha.com/a
bravo.com/b
chrly.com/c
delta.com/d
alpha.com/e
bravo.com/f
chrly.com/g
delta.com/h
alpha.com/i
bravo.com/j
chrly.com/k
delta.com/l
alpha.com/m
bravo.com/n

Como isso difere das outras respostas

  • iterar sobre um número arbitrário de urls base
  • percorra os urls e não pare até que as letras acabem
  • usar enumerateem conjunto com compreensão de lista e str.format
dreftymac
fonte