Python: Làm thế nào để in dải ô az?


110

1. In một: abcdefghijklmn

2. Mỗi giây trong một: acegikm

3. Nối một chỉ mục vào chỉ mục của các url {hello.com/, hej.com/, ..., hallo.com/}: hello.com/a hej.com/b ... hallo.com/n


6
Kỳ lạ là đối với một câu hỏi "dành cho người mới bắt đầu", bạn vẫn có thể nhận được nhiều câu trả lời. Thực tế là tôi có thể gõ không có nghĩa là tôi có thể "bắt trăn", tôi thực sự thích câu trả lời của gnibbler về những thứ-lộn xộn. Cảm ơn mọi người vì câu trả lời của bạn và - hãy giữ mọi thứ đơn giản, đặc biệt cảm ơn gnibbler.
hhh

2
Nó không phải là một loạt các câu trả lời. Đó là hai giống. Một cách sử dụng rangechr()một cách khác là danh sách được tạo sẵn string, điều mà nhiều người sẽ không nghĩ đến.
Lennart Regebro

Câu trả lời:


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

Để thực hiện các url, bạn có thể sử dụng một cái gì đó như thế này

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

1
Tôi tin rằng string.ascii_lowercase đã hoạt động trong python 2.x, vì vậy để đảm bảo chỉ cần luôn sử dụng ascii_lowercase.
johk95

1
@ johk95, thực sự str.lowercaselà phụ thuộc vào ngôn ngữ nên không phải là lựa chọn tốt nhất ngay từ đầu. Tôi đã thay thế nó trong câu trả lời của mình
John La Rooy

Xin chào, có thể cho tôi biết liệu điều này chỉ có sẵn bằng tiếng Anh không? Tôi cũng không thể nhận được điều tương tự cho các ngôn ngữ khác? Cảm ơn & Trân trọng
Michael Schroter

48

Giả sử đây là bài tập về nhà ;-) - không cần triệu tập thư viện, v.v. - có thể bạn sẽ sử dụng range () với chr / ord, như sau:

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

Đối với phần còn lại, chỉ cần chơi thêm một chút với phạm vi ()


23

Gợi ý:

import string
print string.ascii_lowercase

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

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


12

Nhận danh sách với các giá trị mong muốn

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

hoặc là

import string
string.letters
string.uppercase
string.digits

Giải pháp này sử dụng bảng ASCII . ordnhận giá trị ascii từ một ký tự và chrngược lại.

Áp dụng những gì bạn biết về danh sách

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

Dường như string.letters đã được gỡ bỏ bằng Python 3 và chỉ string.ascii_letters, không giống hệt nhau , có sẵn
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
Để biến điều này thành một bộ tuple (không thể thay đổi) trong 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']

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)

Đầu ra

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

Chào mừng bạn đến với StackOverflow. Cố gắng giải thích rõ ràng hơn tại sao đây là một câu trả lời đầy đủ cho câu hỏi.
Jeroen Heier

Cảm ơn. Tôi thích cách bạn xây dựng cái này.
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

Câu trả lời cho câu hỏi này rất đơn giản, chỉ cần tạo một danh sách có tên ABC như sau:

ABC = ['abcdefghijklmnopqrstuvwxyz']

Và bất cứ khi nào bạn cần tham khảo nó, chỉ cần làm:

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)

Cũng thử cái này để phá thiết bị của bạn: 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

Đây là câu hỏi thứ 2 của bạn: string.lowercase[ord('a')-97:ord('n')-97:2]bởi vì 97==ord('a')- nếu bạn muốn tìm hiểu một chút, bạn nên tự tìm hiểu phần còn lại ;-)


1

Tôi hi vọng cái này giúp được:

import string

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

0

Về câu trả lời của gnibbler.

Zip-chức năng, giải thích đầy đủ , a list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. [...]cấu trúc trả về được gọi là hiểu danh sách , tính năng rất hay!


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

Một cách khác để làm điều đó

  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

Kết quả

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

Câu trả lời này khác với các câu trả lời khác như thế nào

  • lặp qua một số url cơ sở tùy ý
  • xoay vòng qua các url và không dừng lại cho đến khi chúng tôi hết chữ cái
  • sử dụng enumeratekết hợp với hiểu danh sách và str.format
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.