Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การใช้ Set() ใน Python ตรวจสอบ Pangram


ในบทความนี้ เราจะเรียนรู้วิธีกำหนดว่าสตริงเป็น "pangram" หรือไม่ใน Python 3.x (หรือเวอร์ชันก่อนหน้า) สตริง pangram ประกอบด้วยตัวอักษรทุกตัวในรายการอักษรภาษาอังกฤษ มาดูภาพประกอบด้านล่าง -

Provided Input: str = 'This is the python blog on Tutorial point'
Desired Output: No

Provided Input: str = 'I want to contribute to a 'dxyzwuvghlkfmq' open source project'
Desired Output: Yes

ตามนิยาม Pangram ที่สมบูรณ์ (perfect pangram) รวมทุกตัวอักษรของ '26 อักษรภาษาอังกฤษ' ทุกตัวเพียงครั้งเดียว บทช่วยสอนนี้ไม่รวมแนวคิด 'perfect pangram'

มาดูโจทย์และเงื่อนไข

โจทย์ - กำหนดสตริง ตรวจสอบว่ามันเป็น Pangram หรือไม่

เงื่อนไข

  1. ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ถือว่าเหมือนกัน
  2. ไม่บังคับเรื่อง perfect Pangram ตามที่อภิปรายข้างต้น
Input: บรรทัดแรกของอินพุตมีสตริงทดสอบ 'str_input'
Output: พิมพ์ 'String is a Pangram' หากเงื่อนไขเป็นจริง มิฉะนั้นแสดง 'String is not a Pangram'

โครงสร้างข้อมูลที่เกี่ยวข้อง

Set() และ List() Comprehension

ข้อกำหนดเบื้องต้น

String และ String Operations

มาดูอัลกอริทึมที่เราจะนำไปปฏิบัติในโจทย์นี้อย่างรวดเร็ว -

  1. งานแรกคือแปลงสตริงอินพุตทั้งหมดเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ ที่นี่ฉันใช้การแปลงเป็นตัวพิมพ์ใหญ่ด้วยเมธอด upper() ของชนิดข้อมูล "string" ใน Python 3.x (หรือเวอร์ชันก่อนหน้า)

  2. ตอนนี้ด้วยความช่วยเหลือของฟังก์ชัน set(str_input) เราสามารถสร้าง List ขององค์ประกอบที่แตกต่างกันทั้งหมดที่อยู่ในสตริงอินพุตได้

  3. ตอนนี้เราจะสร้าง List ใหม่ "dist_list" ซึ่งประกอบด้วยอักษรที่แตกต่างกันทั้งหมดโดยไม่มีตัวเลขหรืออักขระพิเศษ

  4. ตอนนี้ตรวจสอบว่าความยาวของ dist_list เท่ากับ 26 หรือไม่ หากเงื่อนไขเป็นจริง อินพุตคือ Pangram มิฉะนั้นไม่ใช่

ตัวอย่างโค้ด

# ฟังก์ชันผู้ใช้สำหรับตรวจสอบ Pangram
def check_pangram(input):
    # แปลงสตริงอินพุตเป็นตัวพิมพ์ใหญ่
    str_input = str_input.upper()
    
    # แปลงสตริงอินพุตเป็น Set()
    # จะได้ List ขององค์ประกอบที่แตกต่างกัน
    str_input = set(str_input)
    
    # แยกอักษรออกจากตัวเลขและอักขระพิเศษ
    # ord(ch) คืนค่า ASCII ของตัวอักษร
    dist_list = [char for char in str_input if ord(char) in range(ord('a'), ord('z')+1)]
    
    if len(dist_list) == 26:
        return 'String is a Pangram'
    else:
        return 'String is not a Pangram'

# ฟังก์ชันหลักที่รันได้
if __name__ == "__main__":
    str_input = input()
    print(check_pangram(str_input))

สรุป

ในบทความนี้ เราได้เรียนรู้วิธีการหาว่าสตริงเป็น Pangram หรือไม่โดยใช้ Python 3.x (หรือเวอร์ชันก่อนหน้า) คุณสามารถนำอัลกอริทึมเดียวกันไปสร้างโปรแกรมตรวจจับ pangram ในภาษาโปรแกรมอื่นได้