Python: comment imprimer la plage az?


110

1. Imprimez un: abcdefghijklmn

2. Chaque seconde dans un: acegikm

3. Ajoutez un à l'index des URL {hello.com/, hej.com/, ..., hallo.com/}: hello.com/a hej.com/b ... hallo.com/n


6
Curieusement, à une question «débutante», vous pouvez toujours obtenir une variété de réponses. Le fait que je puisse taper ne signifie pas que je peux "python", j'aime vraiment la réponse de gnibbler sur les choses en désordre. Merci à tous pour vos réponses et - gardez les choses simples, un merci spécial à gnibbler.
hhh

2
Ce n'est pas une grande variété de réponses. C'est deux variétés. Une utilisation rangeet chr()une autre les listes toutes faites string, auxquelles beaucoup de gens ne penseraient pas.
Lennart Regebro

Réponses:


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

Pour faire les URL, vous pouvez utiliser quelque chose comme ça

[i + j for i, j in zip(list_of_urls, string.ascii_lowercase[:14])]

1
Je crois que string.ascii_lowercase fonctionnait déjà en python 2.x, donc pour être sûr, utilisez toujours ascii_lowercase.
johk95

1
@ johk95, dépend en str.lowercasefait des paramètres régionaux, ce n'était donc pas le meilleur choix en premier lieu. Je l'ai remplacé dans ma réponse
John La Rooy

Salut, seriez-vous en mesure de me dire si cela est uniquement disponible en anglais? ne puis-je pas obtenir la même chose pour les autres langues? Merci et meilleures salutations
Michael Schroter

48

En supposant que ce soit un devoir ;-) - pas besoin d'invoquer des bibliothèques, etc. - il s'attend probablement à ce que vous utilisiez range () avec chr / ord, comme ceci:

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

Pour le reste, il suffit de jouer un peu plus avec la plage ()


23

Conseils:

import string
print string.ascii_lowercase

et

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

et

"hello{0}, world!".format('z')


12

Obtenez une liste avec les valeurs souhaitées

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

Cette solution utilise la table ASCII . ordobtient la valeur ascii d'un caractère et chrvice versa.

Appliquez ce que vous savez sur les listes

>>> 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']

Il semble que string.letters a été supprimé dans Python 3 et que seule string.ascii_letters, pas exactement la même , 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']

1
Pour en faire un tuple (qui est immuable) 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']

et

for c in list(string.ascii_lowercase)[:5]:
    ...operation with the first 5 characters

4
myList = [chr(chNum) for chNum in list(range(ord('a'),ord('z')+1))]
print(myList)

Production

['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']

Bienvenue dans StackOverflow. Essayez d'expliquer plus clairement pourquoi il s'agit d'une réponse complète à la question.
Jeroen Heier

Merci. J'aime la façon dont vous construisez cela.
hmacias le

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

2

La réponse à cette question est simple, faites simplement une liste appelée ABC comme ceci:

ABC = ['abcdefghijklmnopqrstuvwxyz']

Et chaque fois que vous avez besoin de vous y référer, faites simplement:

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)

Essayez également ceci pour casser votre appareil: 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


1

Ceci est votre deuxième question: string.lowercase[ord('a')-97:ord('n')-97:2]parce que 97==ord('a')- si vous voulez apprendre un peu, vous devriez trouver le reste vous-même ;-)


1

J'espère que ça aide:

import string

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

0

À propos de la réponse de gnibbler.

Zip -fonction, explication complète , retourne la a list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. [...]construction s'appelle la compréhension de liste , fonctionnalité très cool!


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']

0

Une autre façon de le faire

  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

Résultat

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 quoi cela diffère des autres réponses

  • itérer sur un nombre arbitraire d'URL de base
  • parcourez les URL et ne vous arrêtez pas tant que nous n'avons plus de lettres
  • utiliser enumerateen conjonction avec la compréhension de liste et str.format
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.