Python: як друкувати діапазон az?


110

1. Роздрукуйте: abcdefghijklmn

2. Щосекунди в: ацегікм

3. Додайте до індексу URL-адрес {hello.com/, hej.com/, ..., hallo.com/}: hello.com/a hej.com/b ... hallo.com/n


6
Як не дивно, що на питання для початківців ви все ще можете отримати різноманітні відповіді. Те, що я можу вводити, не означає, що я можу "пітон", мені дуже подобається відповідь гніблера на "безладні речі". Дякую всім за відповіді та - будьте простими, особлива подяка гніблеру.
hhh

2
Це не дика різноманітність відповідей. Це два різновиди. Одне використання, rangeа chr()інше вже готові списки string, про які багато людей не подумають.
Леннарт Регебро

Відповіді:


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

Для виконання URL-адрес ви можете використовувати щось подібне

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

1
Я вважаю, що string.ascii_lowercase вже працював у python 2.x, тому обов'язково завжди використовуйте ascii_lowercase.
johk95

1
@ johk95, насправді str.lowercaseзалежить від місцевості, тому не був найкращим вибором в першу чергу. Я замінив це у своїй відповіді
Джон Ла Руй

Привіт, міг би сказати мені, чи доступна вона лише англійською мовою? Не можу я те ж саме отримати і для інших мов? З повагою
Майкл Шротер

48

Припустимо, що це домашнє завдання ;-) - не потрібно викликати бібліотеки тощо - можливо, очікується, що ви будете використовувати range () з chr / ord, наприклад:

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

В іншому просто пограйте трохи більше з діапазоном ()




12

Отримайте список із потрібними значеннями

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

або

import string
string.letters
string.uppercase
string.digits

Для цього рішення використовується таблиця ASCII . ordотримує значення символу ascii від персонажа і chrнавпаки.

Застосовуйте те, що ви знаєте про списки

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

Схоже, string.letters було видалено в Python 3, і доступний лише string.ascii_letters, не зовсім такий самий ,
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
Щоб зробити цей кортеж (який незмінний) в Python 3:tuple(string.ascii_lowercase)
Алекс Віллісон

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

і

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)

Вихід

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

Ласкаво просимо до StackOverflow. Спробуйте пояснити більш чітко, чому це повна відповідь на питання.
Jeroen Heier

Дякую. Мені подобається, як ти це будуєш.
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

Відповідь на це питання проста, просто складіть список під назвою ABC так:

ABC = ['abcdefghijklmnopqrstuvwxyz']

І щоразу, коли вам потрібно посилатися на це, просто робіть:

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)

Спробуйте також зламати пристрій ур: 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

Це ваше 2-е питання: string.lowercase[ord('a')-97:ord('n')-97:2]адже 97==ord('a')- якщо ви хочете трохи навчитися, ви повинні самі з'ясувати все ;-)




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

Ще один спосіб зробити це

  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

Результат

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

Чим це відрізняється від інших відповідей

  • ітерація над довільною кількістю базових URL-адрес
  • кружляйте через URL-адреси і не зупиняйтеся, поки у нас не закінчуються букви
  • використання enumerateспільно з розумінням списку та str.format
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.