Python: Wie drucke ich den Bereich az?


109

1. Drucken Sie ein: abcdefghijklmn

2. Jede Sekunde in einem: acegikm

3. Fügen Sie einen URL-Index hinzu {hello.com/, hej.com/, ..., hallo.com/}: hello.com/a hej.com/b ... hallo.com/n


6
Seltsam, dass Sie auf eine "Anfänger" -Frage immer noch eine Vielzahl von Antworten erhalten können. Die Tatsache, dass ich tippen kann, bedeutet nicht, dass ich "Python" kann. Ich mag Gnibblers Antwort über unordentliche Dinge wirklich. Vielen Dank an alle für Ihre Antworten und - halten Sie die Dinge einfach, besonders danke an gnibbler.
hhh

2
Es ist keine wilde Vielfalt von Antworten. Es sind zwei Sorten. Eine Verwendung rangeund eine chr()andere die fertigen Listen string, an die viele Leute nicht denken würden.
Lennart Regebro

Antworten:


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

Um die URLs zu erstellen, können Sie so etwas verwenden

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

1
Ich glaube, string.ascii_lowercase hat bereits in Python 2.x funktioniert, verwenden Sie also immer ascii_lowercase.
johk95

1
@ johk95, ist tatsächlich vom str.lowercaseGebietsschema abhängig, war also überhaupt nicht die beste Wahl. Ich habe es in meiner Antwort ersetzt
John La Rooy

Hallo, könnte ich sagen, ob dies nur auf Englisch verfügbar ist? Kann ich das nicht auch für andere Sprachen bekommen? Danke und beste Grüße
Michael Schroter

47

Angenommen, dies ist eine Hausaufgabe ;-) - keine Notwendigkeit, Bibliotheken usw. zu beschwören - es wird wahrscheinlich erwartet, dass Sie range () mit chr / ord verwenden, wie folgt:

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

Spielen Sie im Übrigen etwas mehr mit der Reichweite ()


23

Hinweise:

import string
print string.ascii_lowercase

und

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

und

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


12

Holen Sie sich eine Liste mit den gewünschten Werten

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

oder

import string
string.letters
string.uppercase
string.digits

Diese Lösung verwendet die ASCII-Tabelle . ordRuft den ASCII-Wert von einem Zeichen ab und chrumgekehrt.

Wenden Sie an, was Sie über Listen wissen

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

Es sieht so aus, als ob string.letters in Python 3 entfernt wurde und nur string.ascii_letters, nicht genau das gleiche , verfügbar ist
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
Um dies zu einem Tupel (das unveränderlich ist) in Python 3 zu machen: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']

und

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)

Ausgabe

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

Willkommen bei StackOverflow. Versuchen Sie klarer zu erklären, warum dies eine vollständige Antwort auf die Frage ist.
Jeroen Heier

Vielen Dank. Ich mag es, wie du das baust.
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

Die Antwort auf diese Frage ist einfach. Erstellen Sie einfach eine Liste mit dem Namen ABC wie folgt:

ABC = ['abcdefghijklmnopqrstuvwxyz']

Und wann immer Sie sich darauf beziehen müssen, tun Sie einfach:

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)

Versuchen Sie auch dies, um Ihr Gerät zu beschädigen: 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

Versuchen:

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

1

Dies ist deine 2. Frage: string.lowercase[ord('a')-97:ord('n')-97:2]denn 97==ord('a')- wenn du etwas lernen willst, solltest du den Rest selbst herausfinden ;-)


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

1

Ich hoffe das hilft:

import string

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

0

Über die Antwort von Gnibbler.

Zip-Funktion, vollständige Erklärung , Rückgabekonstrukt a list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. [...]heißt Listenverständnis , sehr coole Funktion!


0

Ein anderer Weg, es zu tun

  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

Ergebnis

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

Wie unterscheidet sich dies von den anderen Antworten?

  • Iterieren Sie über eine beliebige Anzahl von Basis-URLs
  • Blättern Sie durch die URLs und hören Sie nicht auf, bis uns die Buchstaben ausgehen
  • Verwendung enumeratein Verbindung mit Listenverständnis und str.format
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.