Python: come stampare range az?


110

1. Stampa un: abcdefghijklmn

2. Ogni secondo in un: acegikm

3. Aggiungi un all'indice degli URL {hello.com/, hej.com/, ..., hallo.com/}: hello.com/a hej.com/b ... hallo.com/n


6
Strano che a una domanda "principiante" si possano ancora ottenere svariate risposte. Il fatto che io sappia scrivere non significa che io sappia fare il "pitone", mi piace molto la risposta di gnibbler per le cose disordinate. Grazie a tutti per le vostre risposte e - mantenete le cose semplici, grazie speciali a gnibbler.
hhh

2
Non è una varietà selvaggia di risposte. Sono due varietà. Un uso rangee chr()un altro gli elenchi già pronti string, a cui molte persone non penserebbero.
Lennart Regebro

Risposte:


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

Per fare gli URL, potresti usare qualcosa di simile

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

1
Credo che string.ascii_lowercase abbia già funzionato in python 2.x, quindi per essere sicuro usa sempre ascii_lowercase.
johk95

1
@ johk95, in realtà str.lowercasedipende dalla località, quindi non è stata la scelta migliore in primo luogo. L'ho sostituito nella mia risposta
John La Rooy

Ciao, potresti dirmi se è disponibile solo in inglese? non posso ottenere lo stesso anche per altre lingue? Grazie e cordiali saluti
Michael Schroter

48

Supponendo che questo sia un compito a casa ;-) - non c'è bisogno di convocare biblioteche ecc - probabilmente si aspetta che tu usi range () con chr / ord, in questo modo:

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

Per il resto, gioca un po 'di più con la gamma ()


23

suggerimenti:

import string
print string.ascii_lowercase

e

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

e

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


12

Ottieni un elenco con i valori desiderati

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

Questa soluzione utilizza la tabella ASCII . ordottiene il valore ascii da un carattere echr viceversa.

Applica ciò che sai sugli elenchi

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

Sembra che string.letters sia stato rimosso in Python 3 e solo string.ascii_letters, non esattamente la stessa , sia disponibile
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
Per rendere questa una tupla (che è immutabile) in 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

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

Produzione

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

Benvenuto in StackOverflow. Prova a spiegare più chiaramente perché questa è una risposta completa alla domanda.
Jeroen Heier

Grazie. Mi piace come lo costruisci.
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)]

2

La risposta a questa domanda è semplice, basta creare una lista chiamata ABC in questo modo:

ABC = ['abcdefghijklmnopqrstuvwxyz']

E ogni volta che devi fare riferimento ad esso, fai semplicemente:

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)

Prova anche questo per rompere il tuo 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

2

Provare:

strng = ""
for i in range(97,123):
    strng = strng + chr(i)
print(strng)

1

Questa è la tua seconda domanda: string.lowercase[ord('a')-97:ord('n')-97:2]perché 97==ord('a')- se vuoi imparare un po 'dovresti capire il resto da solo ;-)


1

Spero che aiuti:

import string

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

0

Sulla risposta di Gnibbler.

La funzione zip, la spiegazione completa , il a list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. [...]costrutto di restituzione si chiama comprensione della lista , caratteristica molto interessante!


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

Un altro modo per farlo

  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

Risultato

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

Come questo differisce dalle altre risposte

  • iterare su un numero arbitrario di URL di base
  • scorrere gli URL e non fermarsi finché non si esauriscono le lettere
  • utilizzare enumeratein combinazione con la comprensione della lista e str.format
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.