หากคุณต้องการเรียนรู้ Python คุณควรเริ่มด้วยเกมแบบข้อความธรรมดาๆ บทความนี้จะแสดงวิธีสร้างเกมตอบคำถาม
ขั้นตอน
ขั้นตอนที่ 1 ติดตั้ง Python หากคุณยังไม่ได้ติดตั้ง
Python มีสองเวอร์ชันหลัก: Python 2 และ Python 3 ใช้แทนกันได้ และการรองรับ Python 2 จะสิ้นสุดในปี 2020 ดังนั้นบทความนี้จะถือว่าคุณติดตั้ง Python 3
ขั้นตอนที่ 2 เปิดไฟล์ใหม่ในโปรแกรมแก้ไขข้อความหรือ Python IDE ของคุณ
ตั้งชื่อที่สื่อความหมายซึ่งลงท้ายด้วย.py
ขั้นตอนที่ 3 นำเข้าไลบรารีแบบสุ่ม
คุณจะต้องใช้มันเพื่อสุ่มจัดเรียงคำตอบที่เป็นไปได้
ขั้นตอนที่ 4 กำหนดคลาส "QA"
"QA" จะประกอบด้วยคำถามและคำตอบที่ถูกต้อง และรายการคำตอบอื่นๆ ที่เป็นไปได้ ฟังก์ชัน _init_() จะถูกเรียกเมื่อใดก็ตามที่คุณสร้างวัตถุ QA ใหม่ด้วยฟังก์ชัน QA() โดยอาร์กิวเมนต์จะถูกส่งต่อไปยังแอตทริบิวต์ที่เกี่ยวข้อง พิมพ์:
คลาส QA: def _init_(ตัวเอง, คำถาม, แก้ไขคำตอบ, คำตอบอื่นๆ): self.question = คำถาม self.corrAnsw = แก้ไขคำตอบ self.otherAnsw = otherAnswers
ขั้นตอนที่ 5. สร้างรายการ QAs
ลองนึกถึงคำถามบางคำถามที่มีคำตอบที่ถูกต้องและคำตอบที่ผิด สร้างวัตถุ QA จากแต่ละรายการและใส่ไว้ในรายการ เนื่องจากรายการจะค่อนข้างยาว คุณสามารถแยกเป็นหลายบรรทัดเพื่อให้อ่านง่ายขึ้น ทั้งหมดนี้ทำได้ด้วยรหัสต่อไปนี้ (ข้อความของคุณอาจแตกต่างกัน):
qaList = [QA("มินสค์อยู่ที่ไหน", "ในเบลารุส", ["ในรัสเซีย", "ไม่มีเมืองแบบนี้"]), QA("เมืองหลวงของออสเตรเลียคืออะไร", "แคนเบอร์รา", ["ซิดนีย์", "นิวยอร์ก", "ไม่มีออสเตรเลีย"]), QA("ข้อใดต่อไปนี้ไม่อยู่บนโลก", "ทะเลแห่งความเงียบสงบ", ["ทะเลเมดิเตอร์เรเนียน", "ทะเลบอลติก" ", "ทะเลเหนือ"]), QA("ข้อใดต่อไปนี้ไม่ใช่ทวีป", "อาร์กติก", ["แอนตาร์กติกา", "อเมริกา"]), QA("ข้อใดต่อไปนี้ไม่ใช่ประเทศในแอฟริกา ?", "มาเลเซีย", ["มาดากัสการ์", "จิบูตี", "แอฟริกาใต้", "ซิมบับเว"])]
ขั้นตอนที่ 6 เพิ่มตัวแปรที่นับจำนวนคำตอบที่ถูก
ตั้งเป็นศูนย์ในตอนเริ่มต้น เพิ่มบรรทัด:
corrCount = 0
ขั้นตอนที่ 7 สับเปลี่ยนรายการ QA
สิ่งนี้จะทำให้คำถามของคุณปรากฏขึ้นแบบสุ่ม ทำได้ด้วยฟังก์ชันต่อไปนี้:
random.shuffle(qaList)
ขั้นตอนที่ 8 สร้างลูป
โปรแกรมควรตรวจสอบแต่ละรายการและทำบางสิ่งกับมัน สร้างลูปด้วยนิพจน์นี้:
สำหรับ qaItem ใน qaList:
ขั้นตอนที่ 9 ส่งออกแต่ละคำถาม
หลังจากนิพจน์ลูปเขียนบรรทัด:
พิมพ์ (qaItem.question)
ขั้นตอนที่ 10. ส่งออกคำตอบที่เป็นไปได้ทั้งหมด
คำตอบควรปรากฏขึ้นแบบสุ่มเพื่อไม่ให้คำตอบที่ถูกต้องอยู่ในตำแหน่งเดียวกันเสมอไป นอกจากนี้ ควรนำหน้าด้วยตัวเลขเพื่อไม่ให้ผู้ใช้ต้องป้อนคำตอบทั้งหมดอีกครั้ง รหัสต่อไปนี้ทำสิ่งนี้:
พิมพ์ ("คำตอบที่เป็นไปได้คือ:") เป็นไปได้ = qaItem.otherAnsw + [qaItem.corrAnsw] # วงเล็บเหลี่ยมเปลี่ยนคำตอบที่ถูกต้องลงในรายการสำหรับการต่อกับรายการ random.shuffle (ที่เป็นไปได้) อื่น ๆ จำนวน = 0 # รายการดัชนีเริ่มต้นที่ 0 ในหลาม ขณะนับ < len(เป็นไปได้): พิมพ์(str(นับ+1) + ": " + เป็นไปได้[นับ]) นับ += 1
ขั้นตอนที่ 11 รับข้อมูลของผู้ใช้
ขั้นแรก บอกผู้ใช้ว่าพวกเขาต้องป้อนหมายเลขของพวกเขา จากนั้นตรวจสอบว่าสิ่งที่ผู้ใช้ป้อนเป็นตัวเลขที่ตรงกับคำตอบหรือไม่ หากไม่ใช่ ให้แจ้งผู้ใช้อีกครั้ง ใช้รหัสนี้ (นอกลูป while ที่คุณสร้างสำหรับเอาต์พุต):
print("Please enter the number of your answer:") userAnsw = input() while not userAnsw.isdigit(): print("That was not a number. Please enter the number of your answer:") userAnsw = input() userAnsw = int(userAnsw) ในขณะที่ไม่ใช่ (userAnsw > 0 และ userAnsw <= len(possible)): print("ตัวเลขนั้นไม่ตรงกับคำตอบใด ๆ โปรดป้อนจำนวนคำตอบของคุณ:") userAnsw = input()
ขั้นตอนที่ 12 ตรวจสอบว่าคำตอบของผู้ใช้ถูกต้องหรือไม่
ในการทำเช่นนี้ ให้รับข้อความของคำตอบที่ผู้ใช้ป้อนตัวเลขและเปรียบเทียบกับข้อความของคำตอบที่ถูกต้อง หากเหมือนกัน คำตอบของผู้ใช้นั้นถูกต้อง และตัวแปร corrCount ควรเพิ่มขึ้น 1 มิฉะนั้น ผิดและผู้ใช้ควรได้รับคำตอบที่ถูกต้อง สุดท้าย ให้พิมพ์บรรทัดว่างเพื่อเพิ่มช่องว่างให้กับคำถามถัดไป ป้อนรหัสต่อไปนี้:
ถ้าเป็นไปได้[userAnsw-1] == qaItem.corrAnsw: print("คำตอบของคุณถูกต้อง") corrCount += 1 อื่น ๆ: print("คำตอบของคุณไม่ถูกต้อง") print("คำตอบที่ถูกต้องคือ: " + qaItem. corrAnsw) พิมพ์ ("")
ขั้นตอนที่ 13 แสดงข้อสรุป
ในท้ายที่สุด ผู้ใช้อาจต้องการทราบว่าพวกเขาตอบคำถามถูกกี่ข้อ ดังนั้นบอกพวกเขาโดยเพิ่มนิพจน์ต่อไปนี้นอก for-loop:
print("คุณตอบ " + str(corrCount) + " ของ " + str(len(qaList)) + " คำถามถูกต้อง")
ขั้นตอนที่ 14. ตรวจสอบรหัสของคุณ
ให้ความสนใจเป็นพิเศษกับการเยื้อง รหัสที่สมบูรณ์ของคุณควรมีลักษณะดังนี้:
นำเข้าคลาสสุ่ม QA: def _init_(ตัวเอง คำถาม แก้ไขคำตอบ คำตอบอื่น ๆ): self.question = คำถาม self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers qaList = [QA("มินสค์อยู่ที่ไหน", "ในเบลารุส", ["ในรัสเซีย", "ไม่มีเมืองแบบนี้"]), QA("เมืองหลวงของออสเตรเลียคืออะไร", "แคนเบอร์รา", ["ซิดนีย์", "นิวยอร์ก", "ไม่มีออสเตรเลีย"]), QA("ข้อใดต่อไปนี้ไม่อยู่บนโลก", "ทะเลแห่งความเงียบสงบ", ["ทะเลเมดิเตอร์เรเนียน", "ทะเลบอลติก", "ทะเลเหนือ"]), QA("ข้อใดต่อไปนี้ไม่ใช่ ทวีป?", "อาร์กติก", ["แอนตาร์กติกา", "อเมริกา"]), QA("ข้อใดต่อไปนี้ไม่ใช่ประเทศในแอฟริกา", "มาเลเซีย", ["มาดากัสการ์", "จิบูตี", "ใต้ แอฟริกา", "ซิมบับเว"])] corrCount = 0 random.shuffle(qaList) สำหรับ qaItem ใน qaList: print(qaItem.question) print("คำตอบที่เป็นไปได้คือ:") เป็นไปได้ = qaItem.otherAnsw + [qaItem.corrAnsw] # วงเล็บเหลี่ยมเปลี่ยนคำตอบที่ถูกต้องลงในรายการเพื่อเชื่อมต่อกับรายการอื่น ๆ random.shuffle (เป็นไปได้) count = 0 # รายการดัชนีเริ่มต้นที่ 0 i n python while count < len(possible): print(str(count+1) + ": " + possible[count]) count += 1 print("Please enter the number of your answer:") userAnsw = input() ในขณะที่ไม่ใช่ userAnsw.isdigit(): print("นั่นไม่ใช่ตัวเลข โปรดป้อนจำนวนคำตอบของคุณ:") userAnsw = input() userAnsw = int(userAnsw) ในขณะที่ไม่ใช่ (userAnsw > 0 และ userAnsw <= len(possible)): print("ตัวเลขนั้นไม่ตรงกับคำตอบใด ๆ โปรดป้อนหมายเลขคำตอบของคุณ:") userAnsw = input() ถ้าเป็นไปได้[userAnsw-1] == qaItem.corrAnsw: print("คำตอบของคุณถูกต้อง") corrCount += 1 อื่น ๆ: print("คำตอบของคุณคือ ผิด") print("คำตอบที่ถูกต้องคือ: " + qaItem.corrAnsw) print("") print("คุณตอบ " + str(corrCount) + " ของ " + str(len(qaList)) + " คำถามถูกต้อง ")
ขั้นตอนที่ 15. เรียกใช้รหัส
หากคุณใช้ IDE ให้คลิกที่สัญลักษณ์ "เรียกใช้" หรือรายการเมนู หากคุณกำลังใช้เท็กซ์เอดิเตอร์ ให้บันทึกโปรแกรมของคุณ ปิดตัวแก้ไข และเปิดโปรแกรมของคุณด้วย Python
เคล็ดลับ
- ระวังการเยื้องที่ถูกต้อง โค้ดภายในฟังก์ชันหรือนิยามคลาสถูกเยื้อง เช่นเดียวกับโค้ดภายในลูป โปรแกรม Python ที่มีการเยื้องผิดจะไม่ทำงาน
- กด Ctrl+C หากคุณต้องการหยุดเกมแต่เล่นไม่จบ
- หากคุณแทนที่ทุก ๆ การเรียกของ input() ด้วยการเรียกของ raw_input() โปรแกรมนี้จะทำงานใน Python 2 แต่หยุดทำงานใน Python 3