Python: จะพิมพ์ช่วง az ได้อย่างไร?


110

1. พิมพ์: abcdefghijklmn

2. ทุกวินาทีใน: acegikm

3. ต่อท้ายดัชนีของ URL {hello.com/, hej.com/, ... , hallo.com/}: hello.com/a hej.com/b ... hallo.com/n


6
แปลกสำหรับคำถาม "มือใหม่" คุณยังคงได้รับคำตอบที่หลากหลาย การที่ฉันพิมพ์ได้ไม่ได้หมายความว่าฉันสามารถ "python" ได้ฉันชอบคำตอบของ gnibbler มากกว่าเรื่องยุ่ง ๆ ขอบคุณทุกคนสำหรับคำตอบของคุณและ - ทำให้ทุกอย่างเรียบง่ายขอบคุณเป็นพิเศษสำหรับ gnibbler
hhh

2
ไม่ใช่คำตอบที่หลากหลาย มันเป็นสองพันธุ์ หนึ่งใช้rangeและchr()และอื่น ๆ ที่ทำรายการพร้อมในstringซึ่งหลาย ๆ คนจะไม่คิดว่า
Lennart Regebro

คำตอบ:


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ขึ้นอยู่กับสถานที่ตั้งดังนั้นจึงไม่ใช่ทางเลือกที่ดีที่สุดในตอนแรก ฉันแทนที่ในคำตอบของฉัน
John La Rooy

สวัสดีจะบอกได้ไหมว่ามีให้บริการเป็นภาษาอังกฤษเท่านั้น ฉันไม่สามารถใช้ภาษาอื่นเหมือนกันได้หรือไม่ ขอขอบคุณและขอแสดงความนับถือ
Michael Schroter

48

สมมติว่านี่คือการบ้าน ;-) - ไม่จำเป็นต้องเรียกไลบรารีและอื่น ๆ - อาจคาดหวังให้คุณใช้ range () กับ chr / ord เช่น:

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

สำหรับส่วนที่เหลือเพียงแค่เล่นอีกเล็กน้อยกับ range ()




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 ถูกลบออกในหลาม 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)
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)

เอาต์พุต

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

เกี่ยวกับคำตอบของ gnibbler

ฟังก์ชั่นซิปคำอธิบายแบบเต็มการa list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. [...]สร้างการส่งคืนเรียกว่ารายการความเข้าใจคุณสมบัติที่ยอดเยี่ยมมาก!



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.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.