Python: ¿cómo imprimir el rango az?

110

1. Imprime un: abcdefghijklmn

2. Cada segundo en un: acegikm

3. Agregue un al índice de URL {hello.com/, hej.com/, ..., hallo.com/}: hello.com/a hej.com/b ... hallo.com/n

hhh
fuente
6
Es extraño que para una pregunta de "principiante" todavía pueda obtener una variedad de respuestas. El hecho de que pueda escribir no significa que pueda "python", realmente me gusta la respuesta de gnibbler sobre las cosas desordenadas. Gracias a todos por sus respuestas y, mantengan las cosas simples, gracias especiales a gnibbler.
hhh
2
No es una variedad salvaje de respuestas. Son dos variedades. Un uso rangey chr()otro las listas ya hechas, en las stringque mucha gente no pensaría.
Lennart Regebro

Respuestas:

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

Para hacer las URL, podría usar algo como esto

[i + j for i, j in zip(list_of_urls, string.ascii_lowercase[:14])]
John La Rooy
fuente
1
Creo que string.ascii_lowercase ya funcionó en python 2.x, así que para estar seguro, use siempre ascii_lowercase.
johk95
1
@ johk95, en realidad str.lowercasedepende de la configuración regional, por lo que no fue la mejor opción en primer lugar. Lo reemplacé en mi respuesta
John La Rooy
Hola, ¿podrías decirme si esto solo está disponible en inglés? ¿No puedo obtener lo mismo para otros idiomas? Gracias y saludos
cordiales
48

Suponiendo que esto es una tarea ;-) - no es necesario convocar bibliotecas, etc. - probablemente espere que use range () con chr / ord, así:

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

Por lo demás, juega un poco más con el rango ()

Nas Banov
fuente
23

Sugerencias:

import string
print string.ascii_lowercase

y

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

y

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

Obtenga una lista con los valores deseados

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))

o

import string
string.letters
string.uppercase
string.digits

Esta solución utiliza la tabla ASCII . ordobtiene el valor ascii de un carácter y chrviceversa.

Aplicar lo que 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']
Martín Thoma
fuente
Parece que string.letters se eliminó en Python 3 y solo string.ascii_letters, no exactamente lo mismo , está disponible
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
fuente
1
Para hacer de esto una tupla (que es inmutable) en 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']

y

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

Salida

['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 Más
fuente
Bienvenido a StackOverflow. Intente explicar más claramente por qué esta es una respuesta completa a la pregunta.
Jeroen Heier
Gracias. Me gusta cómo construyes esto.
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
fuente
2

La respuesta a esta pregunta es simple, solo haga una lista llamada ABC así:

ABC = ['abcdefghijklmnopqrstuvwxyz']

Y siempre que necesite consultarlo, simplemente haga:

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)

También intente esto para romper su 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
fuente
2

Tratar:

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

Esta es tu segunda pregunta: string.lowercase[ord('a')-97:ord('n')-97:2]porque 97==ord('a'), si quieres aprender un poco, deberías averiguar el resto tú mismo ;-)

Jochen Ritzel
fuente
1

Espero que esto ayude:

import string

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

Sobre la respuesta de gnibbler.

Función zip, explicación completa , la a list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. [...]construcción de devoluciones se llama comprensión de lista , ¡característica muy interesante!

hhh
fuente
0
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']
townie
fuente
0

Otra forma de hacerlo

  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

En qué se diferencia esto de las otras respuestas

  • iterar sobre un número arbitrario de URL base
  • recorre las URL y no te detengas hasta que se acaben las letras
  • usar enumeratejunto con la comprensión de listas y str.format
dreftymac
fuente