Category: Python

It’s Python skills for me.

  • PROJECT Data Analysis

    สำหรับส่วนนี้ จะเป็นส่วนที่ผมได้ลองหยิบ dataset จาก Kaggle มาลองใช้ทักษะทั้งหมดที่ได้เรียนมาเพื่อ ตอบคำถามจาก User ในที่นี้ User คือ Gemini

    ผมได้ทำการจ้างผู้เชี่ยวชาญโดยการให้สร้างให้ Gemini เป็นจำลองเป็น Manager ขององค์กรแห่งหนึ่งและทำการวิเคราะห์และตั้งโจทย์คำถามจาก dataset ที่เลือกมา แล้วผมจะเป็นผู้ตอบคำถามเหล่านั้น

    ซึ่งก่อนจะไปดู Project เหล่านั้นกัน เดี๋ยวผมจะขอลองยกตัวอย่าง Project สัก 1 ชิ้นที่ได้ใช้ทักษะของ Python และ library pandas และ numpy ที่ศึกษาจาก DataRockie Bootcamp มาให้ดูเป็นตัวอย่าง เพื่อให้ทุกท่านได้เห็นแนวคิด และเทคนิคพื้นฐานที่ผมนำมาใช้ในการวิเคราะห์ข้อมูล และทำ Project ต่างๆกันดูนะครับ

    เริ่มต้นจากที่เรามี Dataset อยู่ 1 ไฟล์ เป็นไฟล์ .CSV เราจะใช้ทักษะของ python มาวิเคราะห์ข้อมูล แล้วตอบคำถามทั้งหมด 10+1 คำถามต่อไปนี้

    TODO 01 – how many columns, rows in this dataset
    TODO 02 – is there any missing values?, if there is, which colunm? how many nan values?
    TODO 03 – your friend ask for California data, filter it and export csv for him
    TODO 04 – your friend ask for all order data in California and Texas in 2017 (look at Order Date), send him csv file
    TODO 05 – how much total sales, average sales, and standard deviation of sales your company make in 2017
    TODO 06 – which Segment has the highest profit in 2018
    TODO 07 – which top 5 States have the least total sales between 15 April 2019 – 31 December 2019
    TODO 08 – what is the proportion of total sales (%) in West + Central in 2019 e.g. 25%
    TODO 09 – find top 10 popular products in terms of number of orders vs. total sales during 2019-2020
    TODO 10 – plot at least 2 plots, any plot you think interesting 🙂

    เราเริ่มจากการเพิ่ม library pandas และ numpy เข้าไปก่อน ** พยายามทำให้เป็นนิสัย **

    ขั้นตอนถัดไป ก่อนที่จะทำการวิเคราะห์ข้อมูล เราจะทำการ Check data ก่อนทุกครั้ง โดยการใช้คำสั่งต่อไปนี้ ** พยายามทำให้เป็นนิสัย **

    df.head() , df.tail()

    เพื่อเช็คข้อมูล 5 แถวบนสุด และ 5 แถวล่างสุดของ dataset

    จะเห็นได้ว่า column Postal Code จะมี missing values อยู่ 11 cell เราจะลองตรวจสอบว่าถูกต้องหรือไม่ โดยการใช้คำสัั่ง

    จากนั้น จะทำการดึงข้อมูล data จากไฟล์ต้นฉบับ ที่เอาเฉพาะ rows ที่มีค่า Postal Code เป็นค่าว่างออกมาสร้างเป็น dataframe ก้อนใหม่โดยเขียนเพิ่มเติมดังนี้

    df_missing = df[df[‘Postal Code’].isnull()]

    เท่านี้เราก็ได้ dataframe ก้อนใหม่ที่มี Postal Code เป็นค่าว่างออกมาเรียบร้อย



    คำถามข้อที่ 3 นี้ เป็นการ Filter โดย User อยากได้ข้อมูลเฉพาะ State ที่เป็น California เท่านั้น เราจึงต้อง Filter โดยใช้คำสั่งดังนี้

    df_cali = df[df[“State”] == “California”]

    เป็นการ Filter column “State” โดยเอาเฉพาะที่มีคำว่า “California” เท่านั้น และให้แสดงข้อมูลออกมาทั้งแถว และแทนค่าผลลัพธ์ในให้อยู่ใน dataframe ที่ชื่อว่า df_cali

    เมื่อได้ข้อมูลแล้วเราจะส่งไฟล์นี้กลับให้เพื่อเรา ซึ่งต้องการไฟล์ .CSV เราจะต้องเขียนคำสั่งดังนี้

    file_name = ‘california.csv’

    df_cali.to_csv(file_name, index=False)

    คำสั่งนี่เริ่มต้นจากกำหนดชื่อไฟล์ที่เราจะ export ออกมา ในที่นี้ไฟล์จะชื่อว่า california.csv

    จากนั้นใช้คำสั่งจากในการ create ไฟล์

    df_cali.to_csv(‘california.csv’, index=False)

    'california.csv': จะเป็นชื่อไฟล์ที่ต้องการสร้าง ส่วน index=False: เราจพใส่เพื่อป้องกันไม่ให้ index ของ Dataframe ถูก save ลงในไฟล์


    คำถามข้อที่ 4 นี้ เราต้องการหาผลลัพธ์ของ State ที่เป็น California และ Texas ในปี 2017 อิงจาก Column Order date เท่านั้น

    เริ่มจากการสร้างคำสั่ง Filter ตามโจทย์ความต้องการของ User ก่อน

    ผมเริ่มจากวันที่ก่อน เพราะต้องการเปลี่ยนรูปแบบวันที่ให้เป็น datetime เพื่อให้สามารถทำการเปรียบเทียบวันที่ได้ เพราะจากที่เราตรวจสอบในตอนต้นก่อนเริ่มทำการตอบคำถาม จะเห็นได้ว่า column Order date เป็น type Object ผมจึงใช้คำสั่งต่อไปนี้

    pd.to_datetime(df["Order Date"])

    จากนั้นเราเอาเฉพาะค่าที่เป็นปี 2017 โดยเพิ่มคำสั่งต่อท้ายดังนี้

    pd.to_datetime(df[“Order Date”]).dt.year == 2017

    คำสั่ง .dt.year หมายความว่า เอารูปแบบ Year ที่มีค่าเท่ากับ 2017 เท่านั้น

    หลังจากนั้นก็ filter อีกส่วนหนึ่งคือ State ที่เป็น California และ Texas

    จากนั้นก็นำทั้ง 2 ส่วนมารวมกัน โดยการ Filter มากกว่า 1 เงื่อนไข เราจะใส่เครื่องหมาย & เข้าไป เราสร้าง dataframe ใหม่ขึ้มาชื่อว่า df_cali_texas_in_2017

    พอเสร็จเรียบร้อยเราก็ Export ข้อมูลส่งให้เพื่อนเราใหม่อีกครั้ง


    คำถามถัดมาเราต้องการหาค่าของยอดขายในปี 2017 เพราะฉะนั้นก่อนอื่นเราใช้เทคนิคเดียวกับข้อเมื่อสักครู่ โดยการแปลง Column Order date ให้เป็นรูปแบบวันที่ก่อน

    pd.to_datetime(df[“Order Date”]).dt.year == 2017

    จากนั้นเราต้องการหาผลลัพธ์ของ Column Sales เราก็เลือกเฉพาะ Column นี้มา แล้วใช้ library numpy ในการใช้ function คำนวณยอดขาย และ Print ข้อมูลออกมาแสดง

    • ใช้เพื่อคำนวณ ยอดขายรวม
    • ใช้เพื่อคำนวณ ยอดขายเฉลี่ย
    • ใช้เพื่อคำนวณ ส่วนเบี่ยงเบนมาตรฐาน ของยอดขาย

    คำถามนี้ไม่ยุ่งยาก User ต้องการให้ดูว่าผลกำไรของปี 2018 เราได้ผลกำไรจากสินค้าในกลุ่ม Segment อะไรมากที่สุด

    ผมจึงเลือกที่จะใช้ Groupby ในการจัดหมวดหมู่ของสินค้าแยกตาม Segment และให้แสดงผล Profit หรือกำไรออกมาในทั้งหมดทุกกลุ่มที่มีการขายสินค้าในปีนั้น


    คำถามข้อนี้เราจะไม่ได้ทำการแปลงค่าเป็น datetime แบบข้อก่อนๆ และเนื่องจากเหตุผลนี้ ทำให้ตอนที่ผลเขียนคำสั่ง Filter ข้อมูล column Order Date จึงใส่ ทำการใส่เครื่องหมาย “” ลงไปเพื่อให้สามารถเปรียบเทียบข้อมูลได้อย่างถูกต้อง

    จากนั้นเมื่อได้ข้อมูลเปรียบเทียบมาแล้ว ผมได้ทำการ Group by รวมข้อมูลออกมาโดยแบ่งตาม State และเอาข้อมูลยอดขายน้อยที่สุดออกมา โดยใช้คำสั่งดังนี้

    df_least_top_5.groupby(“State”)[“Sales”].sum().sort_values(ascending=True).head(5)


    ผมทำการเรียงลำดับค่า (Sort) ยอดขาย [“Sales”] จากน้อยสุดไปมากสุด โดยเอาเฉพาะ 5 ค่าแรกมาแสดง .head(5)


    คำถามข้อนี้ ต้องการให้คิด % ยอดขายสินค้าแยกตาม Region ในปี 2019 เราเริ่มจากการ Filter ค่าวันที่เหมือนข้อก่อนๆ

    pd.to_datetime(df[“Order Date”]).dt.year == 2019

    จากนั้นก็ทำการ Group by แยกตาม Region และให้แสดงค่า column Sales ออกมา

    พอได้ผลลัพธ์เรียบร้อย คำถามคือให้คิดเป็น % ดังนั้นผมจึงนำผลลัพธ์ที่ได้ เอามาหารด้วยค่ายอดค่ารวมทั้งปี 2019 แล้ว คูณด้วย 100 จะได้เป็นค่า % ยอดขายแต่ละภูมิภาค (Region) แล้วนำผลลัพธ์ไปสร้างเป็น Data frame ก้อนใหม่ ใช้ชื่อว่า df_2019_Region

    จากนั้นขั้นตอนสุดท้าย คำถามถามว่า สัดส่วนยอดขายรวม (%) ของภาคตะวันตก West รวมกับ ภาคกลาง Central คิดเป็นเท่าไหร่ในปี 2019 ผมจึงใช้วิธีพื้นฐานคือเอาค่าทั้ง 2 Region มาบวกกัน จะได้เท่ากับ 55%


    คำถามข้อนี้ต้องการให้หาว่า ช่วงระหว่างปี 2019 – 2020 สินค้าที่ขายดีในแง่ของคำสั่งซื้อ เทียบกับยอดขายรวมมีอะไรน่าสนใจบ้าง 10 ลำดับแรก

    ในคำถามนี้ สิ่งที่เราอยากได้คือค่า Quantity หรือจำนวนคำสั่งซื้อ Filter ในปี 2019 – 2020 เพราะฉะนั้นเราเริ่มจากการ Filter ในส่วนนี้ก่อน พร้อมแทนค่าเป็น Data frame ก้อนใหม่ที่ชื่อว่า df_2019_2020

    และสุดท้ายแสดงค่าผลลัพธ์ 10 ลำดับแรก


    คำถามสุดท้าย ผมได้ทำการนำ dataframe จากข้อก้อนๆมาหาความสัมพันธ์ในรูปแบบกราฟแสดงผลลัพธ์ โดยสร้างออกมา 2 กราฟ ดังนี้

    ความสัมพันธ์นี้ แสดงถึงผลกำไรของสินค้า เทียบกับส่วนลด จะเห็นได้ว่าสินค้าที่มีผลกำไรเยอะ ส่วนใหญ่จะเป็นสินค้าที่ไม่มีส่วนลด หรือลดไม่เยอะมาก ไม่เกิน 20% ในทางตรงกันข้ามสินค้าที่มีส่วนลดเยอะ จะไม่สร้างผลกำไรให้กับบริษัท 80%

    ส่วนกราฟที่ 2 นี้แสดงถึงค่ายอดขายรวมของ State California ที่เราส่งให้เพื่อนไปในตอนต้น โดยการเทียบเป็น Bar Chart ให้ดูว่า สินค้าหมวดหมู่ใดมียอดขายเป็นเท่าไหร่กลุ่มสินค้าตัวไหนยอดขายสูงหรือกลุ่มไหนยอดไหนต่ำ


    ก็จบไปเป็นที่เรียบร้อย ต้องบอกว่า Project ตัวอย่างนี้ เป็นการใช้ทักษะที่ได้เรียนจาก Data Science Bootcamp ใน Part ของ Python เพื่อนำมาใช้ตอบคำถามที่ทางอาจารย์ตั้งโจทย์ไว้ หวังว่าทุกท่านจะได้เห็นแนวคิด แล้วก็วิธีการวิเคราะห์ข้อมูล และการจัดการข้อมูลในแนวทางของผมไปกันเรียบร้อยแล้ว หลังจากนี้จะเป็น Project ที่ทำนอกเหนือจากเนื้อหาที่เรียน โดยการหยิบ dataset จาก kaggle มาวิเคราะห์และตอบคำถาม จากโจทย์ที่ผู้เชี่ยวชาญด้านวิเคราะห์ข้อมูลหรือในที่นี้คือ Gemini เป็นผู้คิดโจทย์ให้

    หวังว่าจะมีประโยชน์กับทุกท่านไม่มากก็น้อยนะครับ


  • ATM Function [Class]

    ส่วนนี้จะเป็นการนำเอาความรู้เรื่องการสร้าง Class เพื่อทดลองการใช้งานระบบ ATM และ Function หลักๆเกี่ยวกับเครื่อง ATM เช่นการ โอนเงิน ถอนเงิน หรือแม่แต่การตรวจสอบยอดเงินในบัญชีของตนเอง ใน Class ต่อไปนี้ทางผู้เขียนจะมีการ ยกตัวอย่างแสดง Function หลักๆของการทำธุรกรรมผ่านตู้ ATM ทั้งหมดด้วยกัน 4 Function นะครับ


    Work hard 💼
    Play harder 😉
    Learn hardest 📝

    Stay Focus 🎧


    class ATM:
        def __init__ (self , name , bank , acnumber , balance , amount1 , amount2):
            self.name = name
            self.bank = bank
            self.acnumber = acnumber
            self.balance = balance
            self.amount1 = amount1
            self.amount2 = amount2

    ก่อนอื่นเราทำการสร้าง Class เพื่อเตรียมสำหรับการสร้าง Function สำหรับบัญชี ATM ของคนๆหนึ่งขึ้นมาก่อน ใน Class หรือบัญชีนี้จะมีอะไรบ้าง หลักๆมี 3 + 3 อย่างด้วยกันได้แก่ 1. ชื่อบัญชี / 2. ชื่อธนาคารของเจ้าของบัญชี / 3. หมายเลขบัญชี รวมถึง 4. ยอดเงินในบัญชี [optional] / 5. จำนวนเงิน1 [optional] และ / 6. จำนวนเงิน2 [optional] เข้าไปใน Class


    def check_balance(self):
            print(f"Current Balance: {self.balance}")
            print("Would you like to make another transaction?")
            user_input = input("[YES / NO]")
            if user_input == "YES" :
                print("Please choose your select")
            else :
                print("Thank you")

    ถัดมาจะคือการเขียนเพื่อระบุ Function นะครับ

    Function ที่ 1 : เป็นเรื่องของการตรวจสอบยอดเงินในบัญชี เมื่อเรียกฟังก์ชั่นนี้ขึ้นมาจะไปทำการดึงข้อมูลจาก Class ที่เราระบุยอดเงินในบัญชีของคนๆนั้นลงไป และเมื่อแสดงยอดเงินแล้วจะมีการสอบถามว่าต้องการทำธุรกรรมอย่างอื่นหรือไม่ หากต้องการทำระบบจะให้เลือกธุรกรรมอื่น แต่หากไม่ระบบจะขอบคุณ และจบการทำงาน



    def withdraw(self):
            print(f"How much you want to withdraw? {self.amount1} / {self.amount2}")
            input(f"Please specify : [{self.amount1} / {self.amount2}]")
            print("Completed, please check the evidence in the mobile application.")
            print("Would you like to make another transaction?")
            user_input = input("[YES / NO]")
            if user_input == "YES" :
                print("Please choose your select")
            else :
                print("Thank you")

    Function ที่ 2 : เป็นเรื่องการถอนเงิน โดยที่ Function นี้จะเป็นการแสดงคำถามของระบบก่อนว่า User ต้องการจะถอนเงินเท่าไหร่ มีให้เลือก 2 ยอดเงิน (ในที่นี้คือ amount1 และ amount2) เท่านั้น เมื่อเราทำการระบุจำนวนเงินเรียบร้อย ระบบก็จะทำรายการให้ และเมื่อจบ Transaction แล้วจะมีการสอบถามว่าต้องการทำรายการอื่นๆเพิ่มเติมหรือไม่ หากต้องการทำระบบจะให้เลือกธุรกรรมอื่น แต่หากไม่ระบบจะขอบคุณ และจบการทำงาน



    def tranfer(self):
            print(f"You want to transfer money from your {self.bank} account.")
            input(print("Plese specify the destination account : [SCB , KBANK , KTC , TMB , PromptPay]"))
            input(print(f"Please choose your money for transfer : [100, 200 , 500 , 1000 , 1500 , 1900 , total : {self.balance}]"))
            input(print("Confirm transaction : [YES , NO] "))
            print("Completed, please check the evidence in the mobile application.")
            print("Would you like to make another transaction?")
            user_input = input("[YES / NO]")
            if user_input == "YES" :
                print("Please choose your select")
            else :
                print("Thank you")

    Function ที่ 3 : เป็น Function การโอนเงิน เมื่อทำการเลือก Function นี้ทางระบบจะมีการตรวจสอบเลขที่บัญชีของเจ้าของบัญชีจากที่เราเพิ่มข้อมูลตั้งแต่แรก จากนั้นให้ทำการเลือกธนาคารที่ต้องการโอนเงิน แล้วระบุจำนวนเงินที่ต้องการโอน เมื่อเลือกจำนวนเงินได้เรียบร้อย ระบบจะให้เรายืนยันการทำรายการ แล้วจะมีการสอบถามว่าต้องการทำรายการอื่นๆเพิ่มเติมหรือไม่ หากต้องการทำระบบจะให้เลือกธุรกรรมอื่น แต่หากไม่ระบบจะขอบคุณ และจบการทำงาน



    def deposit(self):
            print(f"Please choose your account : [{self.bank}]" )
            print(f"Please check your account number : {self.acnumber}")
            input("Comfirm transaction : [YES , NO] ")
            print(f"Completed, your account have a {self.balance}")
            print("Would you like to make another transaction?")
            user_input = input("[YES / NO]")
            if user_input == "YES" :
                print("Please choose your select")
            else :
                print("Thank you")

    Function ที่ 4 : เป็นเรื่องของการฝากเงิน ระบบจะให้ผู้ใช้งานระบุบัญชีที่ต้องการฝากเงินของตัวเอง หลังจากนั้นจะให้เราทำการตรวจสอบเลขที่บัญชี ว่าถูกต้องหรือไม่ แล้วจะทำการ Confirm การทำรายการ และแสดงยอดเงินคงเหลือในบัญชีของผู้ฝากเงิน แล้วจะมีการสอบถามว่าต้องการทำรายการอื่นๆเพิ่มเติมหรือไม่ หากต้องการทำระบบจะให้เลือกธุรกรรมอื่น แต่หากไม่ระบบจะขอบคุณ และจบการทำงาน

  • Introduction for python skills

    หลังจากที่ได้เรียน Boot camp กับพี่ทอยไปเรียบร้อย ได้รับโจทย์การบ้านจากพี่ทอย 555+ ให้ลองเขียน Programing โดยใช้ภาษา Python เกี่ยวกับการเล่นเป่ายิ้งฉุบ ซึ่งจะคล้ายๆกับตอนที่เราเขียน R-Programing เพียงแต่ใช้ Function และความรู้ที่เรียนมา เขียนออกมาตามความเข้าใจของเรา เดี๋ยวลองมาดูกัน จะพยายามเขียนอธิบายให้ออกมาให้ดีที่สุดค้าบบ


    ♥♥♥ เริ่มต้นจากการทำความเข้าใจเกี่ยวกับภาษา Python สำหรับผมเนื่องจากก่อนหน้านี้เราเขียนภาษา R ก่อน เลยจะนำเอาพื้นฐานจากที่ได้เรียนมาขยายความให้เข้าใจมากขึ้น

    “รู้จักลองอะไรใหม่ๆ ทำให้ได้อะไรเจ๋งๆ กลับมาเสมอ” กล่าวโดย เจฟฟ์ เบโซส


    ก่อนจะเริ่มกัน อยากให้ทุกท่านเข้าไปเล่นเกมส์นี้กันก่อนนะครับ

    เข้าผ่าน link นี้ แล้ว กด Code มุมบนซ้าย จากนั้นก็ พิมพ์ข้อความนี้นะครับ


    pao_ying_chub()

    ขอให้สนุกกับเกมส์นะครับ Enjoy the game ! ☺



    . . หลังจากได้ลองเล่นไปแล้ว เดี๋ยวเรามาดูคำอธิบาย Code แต่ละ function กันนะครับ . .


    เริ่มจากการ import random เพื่อเตรียมการสุ่มค่าที่เราตั้งค่าไว้

    import random

    จากนั้นจะทำการเขียน หน้า welcome สำหรับการเล่นเกมส์เป้ายิ้งฉุบ โดยเป็นการเล่นระหว่าง User กับ Bot จึงทำการระบุตัวนับคะแนนลงไปด้วย

    def pao_ying_chub():
        print("Hello welcome to International fun G-A-M-E")
        print("This is PAO YING CHUB!!")
        print("Let's Start it!!!")
    ## ด้านล่างระบุไว้เพื่อนับคะแนน เริ่มต้นจาก 0 ทั้ง User และ Bot
        user_score = 0
        bot_score = 0

    ต่อมาจะเป็นการเริ่มเล่นเกมส์โดยการระบุจำนวนรอบที่เราจะเล่นกัน โดยเริ่มเล่นจากรอบที่ 1 และจะเล่นกันทั้งหมด 10 รอบ เพื่อหาผู้ชนะ (ที่เขียน range 1 , 11 เนื่องจาก Python จะนับค่าก่อนถึงค่าที่กำหนด จึงเป็น รอบที่ 1 – 10)

    count = 1
        for round in range(1, 11):
            print(f"In round: {round}")

    ถัดมาคือการสร้างตัวแปรของ ผู้เล่น หรือ User เพื่อให้ผู้เล่นทำการเลือก choice [ค้อน , กรรไกร , กระดาษ] จากที่กำหนดออกเป็นผลลัพธ์ที่ต้องการเลือก ใน 3 ค่านี้เท่านั้น

    user_hand = input(print("Please choose your hand : [hammer, paper , scissor]"))

    จากนั้นเมื่อผู้เล่นเลือก choice ของตัวเองได้แล้ว ก็จะถึงตาของ Bot ที่จะทำการสุ่มค่า 3 ค่าเช่นเดียวกับของผู้เล่น คือ [ค้อน , กรรไกร , กระดาษ] เพื่อวัดผลลัพธ์ในรอบนั้นๆ

    b_hand = ["hammer" , "scissor" , "paper"]
    bot_hand = random.choice(b_hand)
    print(f"And bot choose!! : {bot_hand}")

    ถัดมาเป็นเงื่อนไขการให้คะแนน จากผลลัพธ์ที่ออกมาระหว่าง ผู้เล่น และ Bot นั้นเอง โดยเงื่อนไขตั้งตามผู้เล่น

    เงื่อนไขที่ 1 : ถ้าผลลัพธ์ออกมาเป็น Choice เดียวกัน ให้ประกาศว่ารอบนั้นๆ เสมอกัน

    “This round is DRAW!!”

    เงื่อนไขที่ 2 : ถ้าผลลัพธ์ผู้เล่นออกค้อน Bot ออกกรรไกร หรือ

    ถ้าผลลัพธ์ผู้เล่นออกกระดาษ Bot ออกค้อน หรือ

    ถ้าผลลัพธ์ผู้เล่นออกกรรไกร Bot ออกกระดาษ

    ให้ประกาศว่ารอบนั้นๆผู้เล่นชนะ “This round YOU WIN!! Yeahhh :D” แล้วบวกคะแนนให้ผู้เล่น 1 คะแนน

    เงื่อนไขที่ 3 : ถ้าไม่เข้าเงื่อนไขที่ 1 และ 2 ให้ประกาศว่ารอบนั้นๆ Bot ชนะ แล้วบวกคะแนนให้ Bot 1 คะแนน “This round YOU LOSE!! so sad :(“

    จากนั้นก็จะดำเนินการเล่นรอบถัดไป เพื่อให้ครบ 10 รอบการเล่น

    if user_hand == bot_hand:
    print("This round is DRAW!!")
     elif (user_hand == "hammer" and bot_hand == "scissor") or \
          (user_hand == "paper" and bot_hand == "hammer") or \
          (user_hand == "scissor" and bot_hand == "paper"):
           print("This round YOU WIN!! Yeahhh :D")
                user_score += 1
           else:
                print("This round YOU LOSE!! so sad :(" )
                bot_score += 1

    ถัดมาจะเป็นส่วนรองสุดท้าย คือการประกาศคะแนนรวม เมื่อเล่นครบ 10 รอบ

    print("Now !! End the game , This is a score: ")
    print(f"Your score {user_score} ")
    print(f"Bot Score {bot_score} ")

    ส่วนสุดท้ายคือการประกาศผลผู้ชนะ โดยการเอาคะแนนมารวมกัน

    ถ้าผู้เล่นคะแนนรวมมากกว่า ให้ประกาศว่าผู้เล่นเป็นผู้ชนะในเกมส์นี้

    ถ้า Bot คะแนนรวมมากกว่า ให้ประกาศว่า Bot เป็นผู้ชนะในเกมส์นี้

    ถ้าคะแนนเท่ากัน เป็นเสมอกันในเกมส์นี้

    if user_score > bot_score:
       print("You a Winner!")
    elif user_score < bot_score:
       print("Bot a Winner!")
    else:
       print("This game is DRAW!")

    จบไปเป็นที่เรียบร้อยแล้ว หวังว่าผู้อ่านทุกท่านจะพอเข้าใจใน Concept ของแต่ละ Function ในแต่ละส่วนนะครับ

    สามารถติชมได้ จะนำไปพัฒนา Skill ของตัวเองต่อไปเรื่อยๆครับ ขอบพระคุณครับ ♥