Hướng dẫn how to make a personality quiz in python - cách làm một câu đố về tính cách trong python

Bạn có thể tìm hiểu lý do tại sao bạn nhận được kết quả sai trong bản sao được liên kết: Làm cách nào để kiểm tra một biến so với nhiều giá trị ?.

Show

Tuy nhiên, một cách tốt hơn để làm những gì bạn đang cố gắng làm là xây dựng một cái cây. Một cách tốt đẹp để làm một cây trong Python là sử dụng

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
2:
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
2
:

from collections import defaultdict

def Tree():
    return defaultdict(Tree)

Sau đó, bạn có thể khởi tạo nó với tất cả các giá trị bạn muốn (ví dụ):

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'

Bạn cũng có thể chuyển đổi tất cả các đầu vào thành chữ thường, khi nó là đầu vào. Sau đó, bạn không cần phải tiếp tục làm điều đó sau. Ngoài ra tên biến của bạn có thể tốt hơn:

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()

Cách sử dụng cuối cùng:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")

edit:

Mã đầu vào của bạn lặp đi lặp lại và đang yêu cầu được thực hiện thành một hàm:

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()

Usage:

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')

& nbsp;

! "#$%&! ()*%&+,-#" ./-0

1%/2- ,, 3+4 (+5 ()*%&+,- #"6/-0 #$+ #2- ,, 7-8 ( #$ (/*()+) (* /,#9+*(: %& -;#$ ("5-*? %) 3 %*#," a>*b =;#() " %/> 8 (5,+&& (: % /# "%/) 6/-0 C"%/3/*# $ +8 ( +#, ( +*## $) ((6/(*#-%&* +&:# $) ( ( +&*2 ()*D?: -8 ( -& #% #$ (-8( #$( /*() + )(*/,# 9+*(: %& -; #$(" 5-<4(: 3%*#," =>*? 3%*#," @>*? %) 3%*#," A>*B =;#() "%/>8( 5,+&&(: %/# "%/) 6/-0 C"%/ 3/*# $+8( +# ,(+*# #$)(( 6/(*#-%&* +&: #$)(( +&*2()*D? :-8( -&#% #$( <%:(E FG

A) (+ #(8+)-+9, (* #%* #%) ( #$ (&/39 ()%; =+&*2 ()*? @+&*2 ()*? +&: A +&*2 ()*g

a_count = 0 b_count = 0 c_count = 0b_count = 0 c_count = 0

Hg

I +8 ( #$ (5)%7) +3 +*4 +6 /(* #-%& +&: 7 ( # +& +&*2 ();)%3 #$ ( /*( ) G

Q1_ANSWER = INPUT ("Bạn sẽ mô tả chính mình như thế nào? A) dũng cảm, b) trung thành, hoặc c) thông minh?")brave, b) loyal, or c) smart?")

JG

@+*(: %& #$ ( /*()>*+&*2 ()? $+8 ( #$ (5) %7) +3 -&+&*2()? $+8( #$( 5)%7)+3 -&<)(3(&# (-#$() +K<%/&#? 9K<%/&#? %)

Nếu Q1_ANSWER.LOWER () == 'A': A_Count += 1 Elif Q1_ANSWER.LOWER () == 'B': B_Count += 1 Elif Q1_ANSWER.LOWER () == 'C' in ("Xin lỗi, tôi không hiểu phản hồi đó.")a_count += 1 elif q1_answer.lower() == 'b': b_count += 1 elif q1_answer.lower() == 'c': c_count +=1 else: print("Sorry, I don't understand that response.")

 LGLG

M (5 (+# *# (5 * HNJ;%) (+OG

A+,/&#? %) +&: 7-8( #$( /*() #$( )(*/,#*G

Nếu a_count> b_count và a_count> c_count: in ("Bạn là Harry Potter!") Elif B_Count> A_Count và B_Count> C_Count: In ("Bạn là Ron Weasley!print("You're Harry Potter!") elif b_count > a_count and b_count > c_count: print("You're Ron Weasley!

")

Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng đố vui cho thiết bị đầu cuối. Câu đố từ lần đầu tiên được sử dụng vào năm 1781 để có nghĩa là người lập dị. Ngày nay, nó chủ yếu được sử dụng để mô tả các bài kiểm tra ngắn về những câu đố hoặc kiến ​​thức chuyên môn với các câu hỏi như sau:Python quiz application for the terminal. The word quiz was first used in 1781 to mean eccentric person. Nowadays, it’s mostly used to describe short tests of trivia or expert knowledge with questions like the following:

Lần đầu tiên sử dụng bài kiểm tra từ là khi nào?

Bằng cách làm theo dự án từng bước này, bạn sẽ xây dựng một ứng dụng có thể kiểm tra chuyên môn của một người về một loạt các chủ đề. Bạn có thể sử dụng dự án này để tăng cường kiến ​​thức của riêng bạn hoặc thách thức bạn bè của bạn tham gia một trận chiến trí thông minh vui vẻ.

Trong hướng dẫn này, bạn sẽ học cách:

  • Tương tác với người dùng trong thiết bị đầu cuối with the user in the terminal
  • Cải thiện khả năng sử dụng ứng dụng của bạn the usability of your application
  • Tái cấu trúc ứng dụng của bạn để liên tục cải thiện nó your application to continuously improve it
  • Lưu trữ dữ liệu trong các tệp dữ liệu chuyên dụng data in dedicated data files

Ứng dụng Quiz là một dự án toàn diện cho bất kỳ ai thoải mái với những điều cơ bản của Python. Trong suốt hướng dẫn, bạn sẽ nhận được tất cả các mã bạn cần trong các bước riêng biệt, có kích thước cắn. Bạn cũng có thể tìm thấy mã nguồn đầy đủ của ứng dụng bằng cách nhấp vào liên kết bên dưới:

Cho dù bạn có phải là người lập dị hay không, hãy đọc tiếp để tìm hiểu cách tạo bài kiểm tra của riêng bạn.

Bản demo: Ứng dụng Quiz Python của bạn

Trong dự án từng bước này, bạn sẽ xây dựng một ứng dụng thiết bị đầu cuối có thể đố bạn và bạn bè của bạn trên một loạt các chủ đề:

Trước tiên bạn chọn một chủ đề cho câu hỏi của bạn. Sau đó, với mỗi câu hỏi, bạn sẽ chọn một câu trả lời từ một tập hợp các lựa chọn thay thế. Một số câu hỏi có thể có nhiều câu trả lời đúng. Bạn có thể truy cập một gợi ý để giúp bạn trên đường đi. Sau khi trả lời một câu hỏi, bạn sẽ đọc một lời giải thích có thể cung cấp nhiều bối cảnh hơn cho câu trả lời.

Tổng quan dự án

Bạn sẽ bắt đầu bằng cách tạo một ứng dụng đố Python cơ bản mà chỉ có khả năng đặt câu hỏi, thu thập câu trả lời và kiểm tra xem câu trả lời có chính xác hay không. Từ đó, bạn sẽ thêm ngày càng nhiều tính năng để làm cho ứng dụng của bạn thú vị hơn, thân thiện với người dùng và thú vị.

Bạn sẽ xây dựng ứng dụng đố vui lặp đi lặp lại bằng cách thực hiện các bước sau:

  1. Tạo một ứng dụng cơ bản có thể hỏi các câu hỏi trắc nghiệm.
  2. Làm cho ứng dụng thân thiện với người dùng hơn bằng cách cải thiện cách nó và cách nó xử lý các lỗi của người dùng.
  3. Tái cấu trúc mã để sử dụng các chức năng.
  4. Dữ liệu câu hỏi riêng biệt từ mã nguồn bằng cách lưu trữ các câu hỏi trong một tệp dữ liệu chuyên dụng.
  5. Mở rộng ứng dụng để xử lý nhiều câu trả lời đúng, đưa ra gợi ý và đưa ra giải thích.
  6. Thêm sự quan tâm bằng cách hỗ trợ các chủ đề đố khác nhau để lựa chọn.

Khi bạn theo dõi, bạn sẽ có được kinh nghiệm khi bắt đầu với một kịch bản nhỏ và mở rộng nó. Đây là một kỹ năng quan trọng trong và của chính nó. Chương trình, ứng dụng hoặc trò chơi yêu thích của bạn có thể bắt đầu như một bằng chứng nhỏ về khái niệm mà sau này đã phát triển thành ngày nay.

Điều kiện tiên quyết

Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng đố bằng cách sử dụng các khối xây dựng cơ bản của Python. Trong khi làm việc thông qua các bước, nó rất hữu ích nếu bạn thoải mái với các khái niệm sau:

  • Đọc đầu vào từ người dùng tại thiết bị đầu cuối
  • Tổ chức dữ liệu trong các cấu trúc như danh sách, bộ dữ liệu và từ điển
  • Sử dụng các câu lệnh
    >>> answer = input("When was the first known use of the word 'quiz'? ")
    When was the first known use of the word 'quiz'? 1781
    
    >>> answer == 1781
    False
    
    >>> answer == "1781"
    True
    
    3 để kiểm tra các điều kiện khác nhau
  • Lặp lại các hành động với các vòng lặp
    >>> answer = input("When was the first known use of the word 'quiz'? ")
    When was the first known use of the word 'quiz'? 1781
    
    >>> answer == 1781
    False
    
    >>> answer == "1781"
    True
    
    4 và
    >>> answer = input("When was the first known use of the word 'quiz'? ")
    When was the first known use of the word 'quiz'? 1781
    
    >>> answer == 1781
    False
    
    >>> answer == "1781"
    True
    
    5
  • Đóng gói mã với các chức năng

Nếu bạn không tự tin vào kiến ​​thức của mình về những điều kiện tiên quyết này, thì điều đó cũng không sao! Trong thực tế, đi qua hướng dẫn này sẽ giúp bạn thực hành các khái niệm này. Bạn luôn có thể dừng lại và xem xét các tài nguyên được liên kết ở trên nếu bạn bị mắc kẹt.

Bước 1: Đặt câu hỏi

Trong bước này, bạn sẽ học cách tạo một chương trình có thể đặt câu hỏi và kiểm tra câu trả lời. Đây sẽ là nền tảng của ứng dụng đố vui của bạn, mà bạn sẽ cải thiện trong phần còn lại của hướng dẫn. Vào cuối bước này, chương trình của bạn sẽ trông như thế này:

Chương trình của bạn sẽ có thể đặt câu hỏi và kiểm tra câu trả lời. Phiên bản này bao gồm chức năng cơ bản mà bạn cần, nhưng bạn sẽ thêm nhiều chức năng hơn trong các bước sau. Nếu bạn thích, thì bạn có thể tải xuống mã nguồn vì nó sẽ nhìn khi bạn đã hoàn thành bước này bằng cách nhấp vào liên kết bên dưới và nhập thư mục

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
6:

Nhận thông tin người dùng với >>> answer = input("When was the first known use of the word 'quiz'? ") When was the first known use of the word 'quiz'? 1781 >>> answer == 1781 False >>> answer == "1781" True 7

Một trong những chức năng tích hợp của Python, là

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7. Bạn có thể sử dụng nó để lấy thông tin từ người dùng. Ví dụ đầu tiên, hãy chạy những điều sau đây trong Python Repls:

>>>

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 lấy một lời nhắc tùy chọn mà LỚN hiển thị cho người dùng trước khi người dùng nhập thông tin. Trong ví dụ trên, lời nhắc được hiển thị trong dòng được tô sáng và người dùng nhập
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
0 trước khi nhấn enter. Bất cứ điều gì người dùng nhập đều được trả về từ
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7. Điều này được nhìn thấy trong ví dụ lấy lại, vì chuỗi
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
2 đã được gán cho
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
3.Enter. Whatever the user enters is returned from
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7. This is seen in the REPL example, as the string
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
2 has been assigned to
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
3.

Bạn có thể sử dụng

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 để có Python hỏi bạn câu hỏi và kiểm tra câu trả lời của bạn. Hãy thử những điều sau:

>>>

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 lấy một lời nhắc tùy chọn mà LỚN hiển thị cho người dùng trước khi người dùng nhập thông tin. Trong ví dụ trên, lời nhắc được hiển thị trong dòng được tô sáng và người dùng nhập
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
0 trước khi nhấn enter. Bất cứ điều gì người dùng nhập đều được trả về từ
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7. Điều này được nhìn thấy trong ví dụ lấy lại, vì chuỗi
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
2 đã được gán cho
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
3.

Bạn có thể sử dụng

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 để có Python hỏi bạn câu hỏi và kiểm tra câu trả lời của bạn. Hãy thử những điều sau:

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")

Ví dụ này cho thấy một điều mà bạn cần nhận thức được:

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 luôn trả về một chuỗi văn bản, ngay cả khi chuỗi đó chỉ chứa các chữ số. Như bạn sẽ sớm thấy, điều này đã giành được một vấn đề cho ứng dụng đố. Tuy nhiên, nếu bạn muốn sử dụng kết quả của
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 cho các tính toán toán học, thì bạn sẽ cần phải chuyển đổi nó trước.

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'

Thời gian để bắt đầu xây dựng ứng dụng đố của bạn. Mở trình chỉnh sửa của bạn và tạo tệp

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7 với nội dung sau:

Mã này rất giống với những gì bạn đã thử nghiệm trong bản phát hành ở trên. Bạn có thể chạy ứng dụng của mình để kiểm tra kiến ​​thức của bạn:

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
0

Nếu bạn tình cờ đưa ra câu trả lời sai, thì bạn sẽ được sửa chữa nhẹ nhàng để bạn hy vọng sẽ làm tốt hơn vào lần tới.

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
1

Một bài kiểm tra chỉ có một câu hỏi là rất thú vị! Bạn có thể hỏi một câu hỏi khác bằng cách lặp lại mã của bạn:Don’t Repeat Yourself (DRY), which says that you should usually avoid repeated code because it gets hard to maintain.

Bạn đã thêm một câu hỏi bằng cách sao chép và dán mã trước đó thay đổi văn bản câu hỏi và câu trả lời đúng. Một lần nữa, bạn có thể kiểm tra điều này bằng cách chạy tập lệnh:

Nó hoạt động! Tuy nhiên, sao chép và dán mã như thế này không phải là tuyệt vời. Có một nguyên tắc lập trình có tên là Don Lặp lại bản thân (khô), nói rằng bạn thường nên tránh mã lặp đi lặp lại vì nó khó duy trì.

Tiếp theo, bạn sẽ bắt đầu cải thiện mã của mình để làm cho việc làm việc dễ dàng hơn.

Sử dụng danh sách và bộ dữ liệu để tránh mã lặp đi lặp lại

Python cung cấp một số cấu trúc dữ liệu linh hoạt và mạnh mẽ. Bạn thường có thể thay thế mã lặp lại bằng một tuple, danh sách hoặc từ điển kết hợp với vòng lặp

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
4 hoặc vòng lặp
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
5.

Thay vì lặp lại mã, bạn sẽ coi các câu hỏi và câu trả lời của mình là dữ liệu và chuyển chúng vào cấu trúc dữ liệu mà mã của bạn có thể lặp lại. Các câu hỏi trực tiếp ngay lập tức và thường xuyên thách thức câu hỏi của bạn sau đó trở thành cách bạn nên cấu trúc dữ liệu của mình.

  • Có không bao giờ một cấu trúc dữ liệu hoàn hảo duy nhất. Bạn thường chọn giữa một số lựa chọn thay thế. Trong suốt hướng dẫn này, bạn sẽ xem lại sự lựa chọn cấu trúc dữ liệu của bạn nhiều lần khi ứng dụng của bạn phát triển.
  • Hiện tại, chọn một cấu trúc dữ liệu khá đơn giản:

Một danh sách sẽ giữ một số yếu tố câu hỏi.

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
2

Mỗi yếu tố câu hỏi sẽ là một bộ hai bao gồm văn bản câu hỏi và câu trả lời.

Sau đó, bạn có thể lưu trữ các câu hỏi của bạn như sau:

Điều này phù hợp với cách bạn muốn sử dụng dữ liệu của mình. Bạn sẽ lặp lại từng câu hỏi và đối với mỗi câu hỏi, bạn muốn truy cập vào cả câu hỏi và câu trả lời.

Thay đổi tệp

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7 của bạn để bạn lưu trữ câu hỏi và câu trả lời của mình trong cấu trúc dữ liệu
$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1:

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
3

Khi bạn chạy mã này, nó không nên trông khác với cách nó đã làm trước đó. Trên thực tế, bạn đã thêm bất kỳ chức năng mới nào. Thay vào đó, bạn đã tái cấu trúc mã của mình để nó dễ dàng hơn để thêm nhiều câu hỏi vào ứng dụng của bạn.

Trong phiên bản trước của mã của bạn, bạn cần thêm năm dòng mã mới cho mỗi câu hỏi mà bạn đã thêm. Bây giờ, vòng lặp >>> answer = input("When was the first known use of the word 'quiz'? ") When was the first known use of the word 'quiz'? 1781 >>> answer == 1781 False >>> answer == "1781" True 4 chăm sóc việc chạy năm dòng đó cho mỗi câu hỏi. Để thêm một câu hỏi mới, bạn chỉ cần thêm một dòng đánh vần câu hỏi và câu trả lời tương ứng.

Tiếp theo, bạn sẽ làm cho ứng dụng đố của mình dễ sử dụng hơn bằng cách thêm các giải pháp thay thế câu trả lời cho mỗi câu hỏi.

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
4

Cung cấp nhiều lựa chọn

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
5

Ở đây, các lựa chọn thay thế cho thấy bạn mong đợi câu trả lời được nhập mà không có dấu ngoặc đơn. Trong ví dụ, các lựa chọn thay thế được liệt kê trước câu hỏi. Đây là một chút phản trực giác, nhưng nó dễ dàng thực hiện vào mã hiện tại của bạn. Bạn sẽ cải thiện điều này trong bước tiếp theo.

Để thực hiện các giải pháp thay thế câu trả lời, bạn cần cấu trúc dữ liệu của mình để có thể ghi lại ba phần thông tin cho mỗi câu hỏi:

  1. Văn bản câu hỏi
  2. Câu trả lời đúng
  3. Trả lời các lựa chọn thay thế

Đó là thời gian để xem lại

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1 cho lần đầu tiên nhưng không phải là thời gian cuối cùng và thực hiện một số thay đổi đối với nó. Thật hợp lý khi lưu trữ các giải pháp thay thế câu trả lời trong danh sách, vì có thể có bất kỳ số lượng nào trong số chúng và bạn chỉ muốn hiển thị chúng lên màn hình. Hơn nữa, bạn có thể coi câu trả lời chính xác là một trong những lựa chọn thay thế câu trả lời và đưa nó vào danh sách, miễn là bạn có thể lấy nó sau.

Bạn quyết định thay đổi

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1 thành một từ điển trong đó các khóa là câu hỏi của bạn và các giá trị là danh sách các giải pháp thay thế trả lời. Bạn liên tục đặt câu trả lời đúng là mục đầu tiên trong danh sách các lựa chọn thay thế để bạn có thể xác định nó.

Bạn cập nhật mã của mình để lặp qua từng mục trong từ điển mới được đúc của bạn. Đối với mỗi câu hỏi, bạn chọn ra câu trả lời đúng từ các lựa chọn thay thế và bạn in ra tất cả các lựa chọn thay thế trước khi đặt câu hỏi:

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
6

Nếu bạn luôn hiển thị câu trả lời đúng là sự thay thế đầu tiên, thì người dùng của bạn sẽ sớm bắt kịp và có thể đoán câu trả lời đúng mỗi lần. Thay vào đó, bạn thay đổi thứ tự của các lựa chọn thay thế bằng cách sắp xếp chúng. Kiểm tra ứng dụng của bạn:

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
7

Câu hỏi cuối cùng cho thấy một trải nghiệm khác có thể gây khó chịu cho người dùng. Trong ví dụ này, họ đã chọn giải pháp thay thế chính xác. Tuy nhiên, khi họ đang gõ nó, một lỗi đánh máy đã lẻn vào. Bạn có thể làm cho ứng dụng của bạn tha thứ hơn không?

Bạn biết rằng người dùng sẽ trả lời với một trong những lựa chọn thay thế, vì vậy bạn chỉ cần một cách để họ giao tiếp giải pháp thay thế nào họ chọn. Bạn có thể thêm một nhãn vào mỗi thay thế và chỉ yêu cầu người dùng nhập nhãn.

Cập nhật ứng dụng để sử dụng

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
6 để in chỉ mục của từng câu trả lời thay thế:

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
8

Bạn lưu trữ các lựa chọn thay thế được sắp xếp lại là

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
7 để bạn có thể tra cứu câu trả lời đầy đủ dựa trên nhãn câu trả lời mà người dùng nhập. Hãy nhớ lại rằng
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 luôn trả về một chuỗi, vì vậy bạn cần chuyển đổi nó thành một số nguyên trước khi bạn coi nó như một chỉ mục danh sách.

Bây giờ, nó rất thuận tiện để trả lời các câu hỏi:

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
9

Tuyệt quá! Bạn đã tạo ra một ứng dụng đố khá có khả năng! Trong bước tiếp theo, bạn đã giành được thêm bất kỳ chức năng nào. Thay vào đó, bạn sẽ làm cho ứng dụng của bạn thân thiện hơn với người dùng.

Bước 2: Làm cho ứng dụng của bạn thân thiện với người dùng

Trong bước thứ hai này, bạn sẽ cải thiện ứng dụng đố của mình để giúp sử dụng dễ dàng hơn. Cụ thể, bạn sẽ cải thiện những điều sau:

  • Ứng dụng trông như thế nào và cảm giác
  • Cách bạn tóm tắt kết quả của người dùng
  • Điều gì xảy ra nếu người dùng của bạn nhập một giải pháp thay thế không tồn tại
  • Thứ tự bạn trình bày các câu hỏi và giải pháp thay thế trong

Vào cuối bước này, ứng dụng của bạn sẽ hoạt động như sau:

Chương trình của bạn vẫn sẽ hoạt động tương tự như bây giờ, nhưng nó sẽ mạnh mẽ và hấp dẫn hơn. Bạn có thể tìm thấy mã nguồn khi nó sẽ nhìn vào phần cuối của bước này trong thư mục

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
9 bằng cách nhấp vào bên dưới:

Định dạng đầu ra độc đáo hơn

Nhìn lại cách ứng dụng đố của bạn hiện đang được trình bày. Nó không hấp dẫn lắm. Không có dòng trống nào cho bạn biết nơi một câu hỏi mới bắt đầu và các lựa chọn thay thế được liệt kê trên câu hỏi, điều này hơi khó hiểu. Hơn nữa, việc đánh số các lựa chọn khác nhau bắt đầu tại

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
00 thay vì
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
01, điều này sẽ tự nhiên hơn.

Trong bản cập nhật tiếp theo của bạn lên

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7, bạn sẽ tự đánh số các câu hỏi và trình bày văn bản câu hỏi trên các giải pháp thay thế câu trả lời. Ngoài ra, bạn sẽ sử dụng các chữ cái viết thường thay vì các số để xác định câu trả lời:

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
0

Bạn sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
03 để nhận các chữ cái dán nhãn câu trả lời của bạn. Bạn kết hợp các chữ cái và các lựa chọn thay thế với
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
04 và lưu trữ chúng trong một từ điển như sau:

>>>

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
1

Bạn sử dụng các lựa chọn thay thế được dán nhãn này khi bạn hiển thị các tùy chọn cho người dùng và khi bạn tìm kiếm câu trả lời của người dùng dựa trên nhãn mà họ đã nhập. Lưu ý việc sử dụng chuỗi thoát đặc biệt

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
05. Điều này được hiểu là một dòng mới và thêm một dòng trống trên màn hình. Đây là một cách đơn giản để thêm một số tổ chức vào đầu ra của bạn:

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
2

Đầu ra của bạn vẫn chủ yếu là đơn sắc trong thiết bị đầu cuối, nhưng nó rất dễ chịu hơn, và nó dễ đọc hơn.

Giữ điểm số

Bây giờ bạn đã đánh số các câu hỏi, thật tuyệt khi theo dõi chính xác có bao nhiêu câu hỏi mà người dùng trả lời. Bạn có thể thêm một biến,

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
06, để chăm sóc điều này:

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
3

Bạn tăng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
06 cho mỗi câu trả lời đúng. Biến vòng lặp ____108 đã đếm tổng số câu hỏi, vì vậy bạn có thể sử dụng điều đó để báo cáo kết quả của người dùng.

Xử lý lỗi người dùng

Cho đến nay, bạn đã lo lắng quá nhiều về những gì xảy ra nếu người dùng nhập câu trả lời mà không hợp lệ. Trong các phiên bản khác nhau của ứng dụng của bạn, sự giám sát này có thể dẫn đến việc chương trình gây ra lỗi hoặc không có gì đáng kể khi đăng ký một câu trả lời không hợp lệ của người dùng là sai.

Bạn có thể xử lý các lỗi người dùng theo cách tốt hơn bằng cách cho phép người dùng nhập lại câu trả lời của họ khi họ nhập một cái gì đó không hợp lệ. Một cách để làm điều này là bọc

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
7 trong vòng lặp
>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
5:

>>>

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
4

Điều kiện

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
11 thực hiện một vài điều cùng một lúc. Nó sử dụng biểu thức ASSIGMENT (
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
12), thường được gọi là toán tử Walrus, để lưu trữ đầu vào của người dùng là
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
13 và so sánh nó với chuỗi
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
14. Vòng lặp trong khi sẽ chạy cho đến khi bạn nhập
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
15 tại dấu nhắc. Xem toán tử Walrus: Biểu thức gán Python 3.8 để biết thêm các ví dụ.

Trong ứng dụng đố của bạn, bạn sử dụng cấu trúc tương tự để lặp cho đến khi người dùng đưa ra câu trả lời hợp lệ:

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
5

Nếu bạn nhập một lựa chọn không hợp lệ tại dấu nhắc, thì bạn sẽ được nhắc nhở về các lựa chọn hợp lệ của bạn:

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
6

Lưu ý rằng một khi các vòng lặp

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
5 thoát ra, bạn đã đảm bảo rằng
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
17 là một trong những chìa khóa trong
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
18, do đó, nó an toàn để tìm kiếm trực tiếp
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
19. Tiếp theo, bạn sẽ thêm một cải tiến nữa bằng cách đưa một số ngẫu nhiên vào bài kiểm tra của bạn.

Thêm sự đa dạng vào bài kiểm tra của bạn

Hiện tại, khi bạn chạy ứng dụng đố vui của mình, bạn đã luôn hỏi các câu hỏi theo thứ tự giống như chúng được liệt kê trong mã nguồn của bạn. Ngoài ra, câu trả lời thay thế cho một câu hỏi nhất định cũng có một thứ tự cố định không bao giờ thay đổi.

Bạn có thể thêm một số loại vào bài kiểm tra của bạn bằng cách thay đổi mọi thứ một chút. Bạn có thể chọn ngẫu nhiên cả thứ tự của các câu hỏi và thứ tự của câu trả lời thay thế cho mỗi câu hỏi:

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
7

Bạn sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
20 để chọn ngẫu nhiên thứ tự câu hỏi của bạn và thứ tự của các giải pháp thay thế trả lời. Thông thường,
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
20 chọn ra một vài mẫu ngẫu nhiên từ một bộ sưu tập. Tuy nhiên, nếu bạn yêu cầu nhiều mẫu như có các mục trong chuỗi, thì bạn có thể sắp xếp lại một cách ngẫu nhiên toàn bộ chuỗi:

>>>

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
8

Điều kiện

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
11 thực hiện một vài điều cùng một lúc. Nó sử dụng biểu thức ASSIGMENT (
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
12), thường được gọi là toán tử Walrus, để lưu trữ đầu vào của người dùng là
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
13 và so sánh nó với chuỗi
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
14. Vòng lặp trong khi sẽ chạy cho đến khi bạn nhập
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
15 tại dấu nhắc. Xem toán tử Walrus: Biểu thức gán Python 3.8 để biết thêm các ví dụ.

Trong ứng dụng đố của bạn, bạn sử dụng cấu trúc tương tự để lặp cho đến khi người dùng đưa ra câu trả lời hợp lệ:

Nếu bạn nhập một lựa chọn không hợp lệ tại dấu nhắc, thì bạn sẽ được nhắc nhở về các lựa chọn hợp lệ của bạn:

Lưu ý rằng một khi các vòng lặp

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
5 thoát ra, bạn đã đảm bảo rằng
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
17 là một trong những chìa khóa trong
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
18, do đó, nó an toàn để tìm kiếm trực tiếp
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
19. Tiếp theo, bạn sẽ thêm một cải tiến nữa bằng cách đưa một số ngẫu nhiên vào bài kiểm tra của bạn.refactor your code. Refactoring means that you’ll change your code, but your application’s behavior and your user’s experience will stay as they are. This may not sound very exciting, but it’ll be tremendously useful down the line, as good refactorings make it more convenient to maintain and expand your code.

Thêm sự đa dạng vào bài kiểm tra của bạn

  • Hiện tại, khi bạn chạy ứng dụng đố vui của mình, bạn đã luôn hỏi các câu hỏi theo thứ tự giống như chúng được liệt kê trong mã nguồn của bạn. Ngoài ra, câu trả lời thay thế cho một câu hỏi nhất định cũng có một thứ tự cố định không bao giờ thay đổi.higher-level operations that can help you get an overview of your code.
  • Bạn có thể thêm một số loại vào bài kiểm tra của bạn bằng cách thay đổi mọi thứ một chút. Bạn có thể chọn ngẫu nhiên cả thứ tự của các câu hỏi và thứ tự của câu trả lời thay thế cho mỗi câu hỏi:reused.

Bạn sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
20 để chọn ngẫu nhiên thứ tự câu hỏi của bạn và thứ tự của các giải pháp thay thế trả lời. Thông thường,
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
20 chọn ra một vài mẫu ngẫu nhiên từ một bộ sưu tập. Tuy nhiên, nếu bạn yêu cầu nhiều mẫu như có các mục trong chuỗi, thì bạn có thể sắp xếp lại một cách ngẫu nhiên toàn bộ chuỗi:

Ngoài ra, bạn giới hạn số lượng câu hỏi trong bài kiểm tra đến shows = Tree() shows['laugh']['supernatural']['action']['trendy'] = 'Lost' shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours' shows['think']['humans']['comedy']['casual'] = 'Game of Thrones' shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod' shows['fight']['social pressure']['drama']['eccentric'] = 'Friends' 22 ban đầu được đặt thành năm. Nếu bạn bao gồm nhiều hơn năm câu hỏi trong ứng dụng của bạn, thì điều này cũng bổ sung một số câu hỏi nào được hỏi ngoài đơn đặt hàng mà họ đã hỏi.

Trong suốt bước này, bạn đã cải thiện ứng dụng đố vui của mình. Bây giờ, thời gian để lùi lại một bước và xem xét chính mã. Trong phần tiếp theo, bạn sẽ tổ chức lại mã để bạn giữ nó mô -đun và sẵn sàng để phát triển hơn nữa.

  1. Bước 3: Tổ chức mã của bạn với các chức năng Prepare initial data.
  2. Trong bước này, bạn sẽ tái cấu trúc mã của mình. Tái cấu trúc có nghĩa là bạn sẽ thay đổi mã của mình, nhưng hành vi ứng dụng của bạn và trải nghiệm người dùng của bạn sẽ ở lại như hiện tại. Điều này nghe có vẻ không thú vị lắm, nhưng nó sẽ rất hữu ích trong dòng, vì các chất tái cấu trúc tốt giúp việc duy trì và mở rộng mã của bạn thuận tiện hơn. Run main loop.
  3. Hiện tại, mã của bạn không được tổ chức đặc biệt. Tất cả các tuyên bố của bạn là cấp độ khá thấp. Bạn sẽ xác định các chức năng để cải thiện mã của bạn. Một vài lợi thế của họ là như sau: Clean up and close application.

Các chức năng Tên các hoạt động cấp cao hơn có thể giúp bạn có được cái nhìn tổng quan về mã của bạn.

Các chức năng có thể được tái sử dụng.

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
9

Để xem mã sẽ chăm sóc bạn đã tái cấu trúc nó như thế nào, nhấp vào bên dưới và xem thư mục

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
23:

Viết ra luồng ứng dụng của bạn ở mức cao như thế này có thể là một khởi đầu tuyệt vời để khám phá các chức năng nào là các khối xây dựng tự nhiên trong mã của bạn. Trong phần còn lại của phần này, bạn sẽ điền vào các chi tiết bị thiếu:

  • Thực hiện
    shows = Tree()
    
    shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
    shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
    shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
    shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
    shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
    
    25.
  • Thực hiện
    shows = Tree()
    
    shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
    shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
    shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
    shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
    shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
    
    26.
  • Xem lại
    shows = Tree()
    
    shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
    shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
    shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
    shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
    shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
    
    27.

Bây giờ bạn sẽ thực hiện các thay đổi khá đáng kể đối với mã của ứng dụng đố của bạn khi bạn tái cấu trúc nó để sử dụng các chức năng. Trước khi làm như vậy, đó là một ý tưởng tốt để đảm bảo bạn có thể trở lại trạng thái hiện tại mà bạn biết hoạt động. Bạn có thể làm điều này bằng cách lưu một bản sao mã của bạn với một tên tệp khác hoặc bằng cách thực hiện một cam kết nếu bạn sử dụng hệ thống điều khiển phiên bản.

Khi bạn đã lưu trữ mã hiện tại một cách an toàn, hãy bắt đầu với một

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7 mới chỉ chứa các biến nhập và biến toàn cầu của bạn. Bạn có thể sao chép những thứ này từ phiên bản trước của bạn:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
0

Hãy nhớ rằng bạn chỉ tổ chức lại mã của bạn. Bạn không thêm chức năng mới, vì vậy bạn đã thắng cần phải nhập bất kỳ thư viện mới nào.

Tiếp theo, bạn sẽ thực hiện tiền xử lý cần thiết. Trong trường hợp này, điều này có nghĩa là bạn sẽ chuẩn bị cấu trúc dữ liệu

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1 để nó sẵn sàng để sử dụng trong vòng lặp chính của bạn. Hiện tại, bạn có khả năng giới hạn số lượng câu hỏi và đảm bảo rằng họ được liệt kê theo thứ tự ngẫu nhiên:preprocessing. In this case, this means that you’ll prepare the
$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1 data structure so that it’s ready to be used in your main loop. For now, you’ll potentially limit the number of questions and make sure they’re listed in a random order:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
1

Lưu ý rằng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
25 liên quan đến các tham số chung
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
34 và
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
35. Sau đó, bạn sẽ vượt qua trong
$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1 và
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
22 cụ thể của mình làm đối số. Điều này có nghĩa là
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
25 không phụ thuộc vào các biến toàn cầu của bạn. Với sự tách rời này, chức năng của bạn là chung chung hơn và sau này bạn có thể dễ dàng thay thế nguồn câu hỏi của mình.

Hỏi câu hỏi

Nhìn lại bản phác thảo của bạn cho chức năng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27 và nhớ rằng nó chứa vòng chính của bạn. Đối với mỗi câu hỏi, bạn sẽ gọi
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26. Nhiệm vụ tiếp theo của bạn là thực hiện chức năng trợ giúp đó.

Hãy suy nghĩ về những gì

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26 cần làm:

  1. Chọn ra câu trả lời đúng từ danh sách các lựa chọn thay thế
  2. Xáo trộn các lựa chọn thay thế
  3. In câu hỏi lên màn hình
  4. In tất cả các lựa chọn thay thế cho màn hình
  5. Nhận câu trả lời từ người dùng
  6. Kiểm tra xem câu trả lời của người dùng có hợp lệ không
  7. Kiểm tra xem người dùng có trả lời đúng hay không
  8. Thêm
    shows = Tree()
    
    shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
    shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
    shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
    shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
    shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
    
    01 vào số lượng câu trả lời đúng nếu câu trả lời là chính xác

Đây là rất nhiều điều nhỏ để làm trong một chức năng và bạn có thể xem xét liệu có tiềm năng nào để mô đun hóa hơn nữa hay không. Ví dụ: các mục 3 đến 6 trong danh sách ở trên đều là về việc tương tác với người dùng và bạn có thể kéo chúng vào một chức năng trợ giúp khác.

Để đạt được mô đun hóa này, hãy thêm hàm trợ giúp

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43 sau đây vào mã nguồn của bạn:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
2

Hàm này chấp nhận một văn bản câu hỏi và một danh sách các lựa chọn thay thế. Sau đó, bạn sử dụng các kỹ thuật tương tự như trước đó để dán nhãn các lựa chọn thay thế và yêu cầu người dùng nhập nhãn hợp lệ. Cuối cùng, bạn trả về câu trả lời của người dùng.

Sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43 đơn giản hóa việc triển khai
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26 của bạn, vì bạn không còn cần phải xử lý tương tác của người dùng. Bạn có thể làm một cái gì đó như sau:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
3

Đầu tiên bạn sắp xếp lại ngẫu nhiên các giải pháp thay thế câu trả lời bằng cách sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
46, như bạn đã làm trước đó. Tiếp theo, bạn gọi
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43, xử lý tất cả các chi tiết về việc nhận câu trả lời từ người dùng. Do đó, bạn có thể hoàn thành
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26 bằng cách kiểm tra tính chính xác của câu trả lời. Quan sát rằng bạn trả về
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
01 hoặc
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
00, điều này cho thấy chức năng gọi cho dù câu trả lời có chính xác hay không.

Bây giờ bạn đã sẵn sàng để thực hiện

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27 đúng cách. Một điều bạn đã học được khi thực hiện
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
25 và
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26 là những đối số bạn cần truyền lại:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
4

Như trước đó, bạn sử dụng

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
6 để giữ một bộ đếm số lượng câu hỏi bạn hỏi. Bạn có thể tăng
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
06 dựa trên giá trị trả về của
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26. Quan sát rằng
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27 là chức năng duy nhất của bạn tương tác trực tiếp với
$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1 và
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
22.

Việc tái cấu trúc của bạn bây giờ đã hoàn tất, ngoại trừ một điều. Nếu bạn chạy

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7 bây giờ, thì nó có vẻ như không có gì xảy ra. Trên thực tế, Python sẽ đọc các biến toàn cầu của bạn và xác định các chức năng của bạn. Tuy nhiên, bạn không gọi bất kỳ chức năng nào trong số đó. Do đó, bạn cần thêm một cuộc gọi chức năng bắt đầu ứng dụng của bạn:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
5

Bạn gọi

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27 vào cuối
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7, bên ngoài bất kỳ chức năng nào. Nó thực hành tốt để bảo vệ một cuộc gọi như vậy đến chức năng chính của bạn với bài kiểm tra
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
63. Câu thần chú đặc biệt này là một quy ước Python có nghĩa là
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27 được gọi khi bạn chạy
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7 dưới dạng tập lệnh, nhưng nó không được gọi khi bạn nhập
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
66 dưới dạng mô -đun.

Đó là nó! Bạn đã tái cấu trúc mã của bạn thành một số chức năng. Điều này sẽ giúp bạn theo dõi chức năng của ứng dụng của bạn. Nó cũng sẽ hữu ích trong hướng dẫn này, vì bạn có thể xem xét các thay đổi đối với các chức năng riêng lẻ thay vì thay đổi toàn bộ kịch bản.

Đối với phần còn lại của hướng dẫn, bạn sẽ thấy mã đầy đủ được liệt kê trong các hộp có thể thu gọn như bên dưới. Mở rộng những điều này để xem trạng thái hiện tại và có được cái nhìn tổng quan về ứng dụng đầy đủ của bạn:

Mã nguồn đầy đủ của ứng dụng Quiz của bạn được liệt kê dưới đây:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
6

Chạy ứng dụng của bạn với

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
67.

Thông qua bước này, bạn đã tái cấu trúc mã của mình để làm cho nó thuận tiện hơn để làm việc. Bạn đã tách các lệnh của mình thành các chức năng được tổ chức tốt mà bạn có thể tiếp tục phát triển. Trong bước tiếp theo, bạn sẽ tận dụng điều này bằng cách cải thiện cách bạn đọc các câu hỏi vào ứng dụng của mình.

Bước 4: Tách dữ liệu vào tệp của riêng mình

Bạn sẽ tiếp tục hành trình tái cấu trúc của mình trong bước này. Trọng tâm của bạn bây giờ sẽ là cách bạn cung cấp câu hỏi cho ứng dụng của bạn.

Cho đến nay, bạn đã lưu trữ các câu hỏi trực tiếp trong mã nguồn của mình trong cấu trúc dữ liệu

$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1. Nó thường tốt hơn để tách dữ liệu của bạn khỏi mã của bạn. Sự phân tách này có thể làm cho mã của bạn dễ đọc hơn, nhưng quan trọng hơn, bạn có thể tận dụng các hệ thống được thiết kế để xử lý dữ liệu nếu nó không ẩn bên trong mã của bạn.

Trong phần này, bạn sẽ học cách lưu trữ các câu hỏi của mình trong một tệp dữ liệu riêng biệt được định dạng theo tiêu chuẩn Toml. Các tùy chọn khác mà bạn đã giành được bìa trong hướng dẫn này, đang lưu trữ các câu hỏi ở một định dạng tệp khác như JSON hoặc YAML hoặc lưu trữ chúng trong cơ sở dữ liệu, hoặc là cơ sở dữ liệu truyền thống hoặc cơ sở dữ liệu NoQuery.

Để xem qua cách bạn sẽ cải thiện mã của mình trong bước này, nhấp vào bên dưới và truy cập thư mục

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
69:

Di chuyển câu hỏi sang tệp toml

Toml được coi là định dạng tệp cấu hình cho con người (nguồn). Nó được thiết kế để có thể đọc được bởi con người và không phức tạp đến phân tích bởi máy tính. Thông tin được thể hiện trong các cặp giá trị khóa có thể được ánh xạ tới cấu trúc dữ liệu bảng băm, giống như từ điển Python.

TomL hỗ trợ một số loại dữ liệu, bao gồm chuỗi, số nguyên, số điểm nổi, booleans và ngày. Ngoài ra, dữ liệu có thể được cấu trúc trong các mảng và bảng, tương tự như danh sách và từ điển của Python, tương ứng. Toml đã trở nên phổ biến trong những năm qua và định dạng ổn định sau phiên bản 1.0.0 của đặc tả định dạng được phát hành vào tháng 1 năm 2021.

Tạo một tệp văn bản mới mà bạn sẽ gọi

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 và thêm nội dung sau:

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
7

Mặc dù có sự khác biệt giữa cú pháp Toml và cú pháp Python, bạn sẽ nhận ra các yếu tố như sử dụng dấu ngoặc kép (

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
71) cho dấu ngoặc văn bản và vuông (
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
72) cho danh sách các yếu tố.

Để làm việc với các tệp Toml trong Python, bạn cần một thư viện phân tích chúng. Trong hướng dẫn này, bạn sẽ sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73. Đây sẽ là gói duy nhất bạn sử dụng trong dự án này không phải là một phần của thư viện tiêu chuẩn Python.

Trước khi cài đặt

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73, bạn nên tạo và kích hoạt môi trường ảo:

  • các cửa sổ
  • Linux + MacOS

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
8

show = shows[preference][villain][genre][dress]

if show:
    print('Your television show is... {}!'.format(show))
else:
    print("I haven't considered that combination")
9

Sau đó, bạn có thể cài đặt

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73 với
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
76:

  • các cửa sổ
  • Linux + MacOS

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
0

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
1

Sau đó, bạn có thể cài đặt

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73 với
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
76:

Bạn có thể kiểm tra xem bạn có sẵn

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73 bằng cách phân tích cú pháp
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 mà bạn đã tạo trước đó không. Mở lại Python của bạn và kiểm tra mã sau:

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
2

>>>

Đầu tiên, hãy quan sát rằng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
34 là một từ điển Python thông thường có dạng tương tự như cấu trúc dữ liệu
$ python quiz.py
When was the first known use of the word 'quiz'? 1871
The answer is '1781', not '1871'
1 của bạn mà bạn đã sử dụng cho đến nay.

Bạn có thể sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73 để phân tích thông tin TOML theo hai cách khác nhau. Trong ví dụ trên, bạn sử dụng
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
82 để đọc Toml từ một tay cầm tệp đang mở. Ngoài ra, bạn có thể sử dụng
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
83 để đọc Toml từ chuỗi văn bản.

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
3

Bạn có thể tích hợp tệp TomL vào ứng dụng đố vui bằng cách cập nhật phần mở đầu mã của mình, nơi bạn thực hiện nhập khẩu và xác định các biến toàn cầu:

Thay vì thực hiện một

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
84 đơn giản như bạn đã làm trước đó, bạn sẽ kết thúc việc nhập của mình trong một tuyên bố
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
85 ____ ____186 đầu tiên cố gắng nhập
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
87. Nếu điều đó thất bại, thì bạn nhập
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73 nhưng đổi tên thành
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
87. Hiệu quả của việc này là bạn sẽ sử dụng Python 3.11
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
87 nếu nó có sẵn và quay trở lại
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73 nếu nó không.

Bạn sử dụng

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
92 để xử lý đường dẫn đến
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70. Thay vì mã hóa cứng đường dẫn đến
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70, bạn dựa vào biến
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
95 đặc biệt. Trong thực tế, bạn đã nói rằng nó nằm trong cùng thư mục với tệp
# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7 của bạn.

Hãy tiếp tục và thêm một vài câu hỏi vào tệp Toml của bạn để xác nhận rằng nó đang được sử dụng.

Thêm tính linh hoạt vào định dạng dữ liệu của bạn

Bạn đã chuyển dữ liệu câu hỏi của mình ra khỏi mã nguồn của mình và vào định dạng tệp dữ liệu chuyên dụng. Một lợi thế của TOML so với từ điển Python thông thường là bạn có thể thêm một số cấu trúc khác vào dữ liệu của mình trong khi vẫn có thể đọc được và có thể duy trì.

Một tính năng đáng chú ý của Toml là bảng. Đây được đặt tên là các phần ánh xạ đến từ điển lồng nhau trong Python. Hơn nữa, bạn có thể sử dụng các mảng của các bảng, được thể hiện bằng danh sách các từ điển trong Python.tables. These are named sections that map to nested dictionaries in Python. Furthermore, you can use arrays of tables, which are represented by lists of dictionaries in Python.

Bạn có thể tận dụng những điều này để rõ ràng hơn khi xác định câu hỏi của bạn. Hãy xem xét đoạn trích TOML sau:

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
4

Các bảng thông thường bắt đầu với một dòng một dấu ngoặc như

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
00. Bạn chỉ ra một mảng các bảng bằng cách sử dụng dấu ngoặc kép, như trên. Bạn có thể phân tích lại toml với
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
73:

>>>

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
5

Điều này dẫn đến cấu trúc dữ liệu lồng nhau, với từ điển bên ngoài trong đó các điểm chính của

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
34 vào danh sách các từ điển. Các từ điển bên trong có khóa
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
03,
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
19 và
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
05.

Cấu trúc này phức tạp hơn một chút so với những gì bạn đã sử dụng cho đến nay. Tuy nhiên, nó cũng rõ ràng hơn và bạn không cần phải dựa vào các quy ước như câu trả lời đầu tiên thay thế đại diện cho câu trả lời đúng.

Bây giờ bạn sẽ chuyển đổi ứng dụng đố của mình để tận dụng cấu trúc dữ liệu mới này cho các câu hỏi của bạn. Đầu tiên, định dạng lại câu hỏi của bạn trong

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70. Bạn nên định dạng chúng như sau:

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
6

Mỗi câu hỏi được lưu trữ bên trong một bảng riêng lẻ

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
34 với các cặp giá trị khóa cho văn bản câu hỏi, câu trả lời đúng và các giải pháp thay thế câu trả lời.

Về cơ bản, bạn sẽ cần thực hiện hai thay đổi cho mã nguồn ứng dụng của mình để sử dụng định dạng mới:

  1. Đọc câu hỏi từ danh sách bên trong
    shows = Tree()
    
    shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
    shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
    shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
    shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
    shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
    
    34.
  2. Sử dụng từ điển câu hỏi bên trong khi đặt câu hỏi.

Những thay đổi này chạm vào cấu trúc dữ liệu chính của bạn, vì vậy chúng yêu cầu một số thay đổi mã nhỏ trong suốt mã của bạn.

Đầu tiên, thay đổi cách bạn đọc các câu hỏi từ tệp toml:

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
7

Bạn thay đổi

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
25 để đọc tệp Toml và chọn danh sách
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
34. Ngoài ra, bạn có thể đơn giản hóa vòng lặp chính trong
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27 vì tất cả thông tin về một câu hỏi được chứa trong một từ điển. Bạn không theo dõi văn bản câu hỏi và các giải pháp thay thế riêng biệt.

Điểm sau này cũng đòi hỏi một số thay đổi trong

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26:

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
8

Bây giờ bạn chọn ra văn bản câu hỏi, câu trả lời đúng và câu trả lời thay thế rõ ràng từ từ điển

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
03 mới. Một điều tốt đẹp với điều này là nó dễ đọc hơn so với quy ước trước đó về việc giả định câu trả lời đầu tiên là câu trả lời đúng.

Bạn không cần phải thực hiện bất kỳ thay đổi nào trong

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43, bởi vì chức năng đó đã xử lý văn bản câu hỏi và danh sách các lựa chọn thay thế nói chung. Điều đó đã thay đổi.

Bạn có thể tìm thấy mã nguồn đầy đủ hiện tại của ứng dụng của bạn bên trong các phần bị sụp đổ bên dưới:

Tệp dữ liệu

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 đầy đủ được sao chép dưới đây:

def choose(category, choices, prompt):
    print(category)
    print(" ")
    for choice in choices:
        print(choice)
    print(" ")
    return input(prompt).lower()
9

Lưu tệp này trong cùng một thư mục với

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7.

Mã nguồn đầy đủ của ứng dụng Quiz của bạn được liệt kê dưới đây:

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
0

Chạy ứng dụng của bạn với

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
67.

Định dạng linh hoạt mới của bạn để xác định câu hỏi cung cấp cho bạn một số tùy chọn trong việc thêm nhiều chức năng vào ứng dụng đố của bạn. Bạn sẽ đi sâu vào một số trong số này trong bước tiếp theo.

Bước 5: Mở rộng chức năng đố của bạn

Trong bước thứ năm này, bạn sẽ thêm nhiều chức năng vào ứng dụng đố của mình. Cuối cùng, việc tái cấu trúc mà bạn đã thực hiện trong các bước trước sẽ được đền đáp! Bạn sẽ thêm các tính năng sau:

  • Câu hỏi có nhiều câu trả lời đúng
  • Những gợi ý có thể hướng về câu trả lời đúng
  • Giải thích có thể đóng vai trò là những khoảnh khắc giảng dạy

Vào cuối bước này, ứng dụng của bạn sẽ hoạt động như sau:

Những tính năng mới này cung cấp trải nghiệm thú vị hơn cho bất kỳ ai thử thách bản thân thông qua ứng dụng đố của bạn. Bạn có thể thấy mã nguồn của ứng dụng của bạn sẽ trông như thế nào khi bạn đã hoàn thành bước này bằng cách nhấp vào bên dưới và chuyển vào thư mục

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
18:

Cho phép nhiều câu trả lời đúng

Một số câu hỏi có thể có nhiều câu trả lời đúng, và nó sẽ rất tuyệt nếu bài kiểm tra của bạn cũng có thể xử lý những câu hỏi đó. Trong phần này, bạn sẽ thêm hỗ trợ cho nhiều câu trả lời đúng.

Đầu tiên, bạn cần xem xét làm thế nào bạn có thể đại diện cho một số câu trả lời chính xác trong tệp dữ liệu

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 của mình. Một lợi thế của cấu trúc dữ liệu rõ ràng hơn mà bạn đã giới thiệu trong bước trước là bạn cũng có thể sử dụng một mảng để chỉ định các câu trả lời chính xác. Thay thế từng khóa
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
19 trong tệp Toml của bạn bằng khóa
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
21 kết thúc mỗi câu trả lời đúng trong dấu ngoặc vuông (
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
72).

Tệp câu hỏi của bạn sau đó sẽ trông giống như sau:

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
1

Đối với các câu hỏi cũ chỉ có một câu trả lời đúng, sẽ chỉ có một câu trả lời được liệt kê trong mảng

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
21. Câu hỏi cuối cùng ở trên cho thấy một ví dụ về một câu hỏi với hai câu trả lời đúng.

Khi cấu trúc dữ liệu của bạn được cập nhật, bạn cũng sẽ cần triển khai tính năng trong mã của mình. Bạn không cần phải thực hiện bất kỳ thay đổi nào trong

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27 hoặc
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
25. Trong
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26 Bạn cần kiểm tra xem tất cả các câu trả lời đúng có được đưa ra không, trong khi trong
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43, bạn cần có thể đọc nhiều câu trả lời từ người dùng.

Bắt đầu với thử thách sau. Làm thế nào người dùng có thể nhập nhiều câu trả lời và làm thế nào bạn có thể xác nhận rằng mỗi người có hợp lệ? Một khả năng là nhập nhiều câu trả lời dưới dạng chuỗi được phân tách bằng dấu phẩy. Sau đó, bạn có thể chuyển đổi chuỗi thành một danh sách như sau:

>>>

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
2

Bạn có thể sử dụng

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
28 để chia trực tiếp trên dấu phẩy. Tuy nhiên, trước tiên, việc thay thế dấu phẩy bằng không gian và sau đó tách ra khoảng trắng mặc định thêm một số khoan hồng với không gian được phép xung quanh dấu phẩy. Đây sẽ là một trải nghiệm tốt hơn cho người dùng của bạn, vì họ có thể viết
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
29,
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
30 hoặc thậm chí
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
31 mà không có dấu phẩy và chương trình của bạn nên giải thích nó như dự định.

Bài kiểm tra cho câu trả lời hợp lệ trở nên phức tạp hơn một chút. Do đó, bạn thay thế vòng

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
5 chặt chẽ bằng một vòng linh hoạt hơn. Để lặp lại cho đến khi bạn nhận được câu trả lời hợp lệ, bạn bắt đầu một vòng lặp vô hạn mà bạn trở lại sau khi tất cả các bài kiểm tra được thỏa mãn. Đổi tên
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43 thành
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
34 và cập nhật nó như sau:

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
3

Trước khi xem xét quá kỹ vào các chi tiết trong mã, hãy lấy chức năng để chạy thử:

>>>

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
4

Bạn có thể sử dụng

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
28 để chia trực tiếp trên dấu phẩy. Tuy nhiên, trước tiên, việc thay thế dấu phẩy bằng không gian và sau đó tách ra khoảng trắng mặc định thêm một số khoan hồng với không gian được phép xung quanh dấu phẩy. Đây sẽ là một trải nghiệm tốt hơn cho người dùng của bạn, vì họ có thể viết
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
29,
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
30 hoặc thậm chí
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
31 mà không có dấu phẩy và chương trình của bạn nên giải thích nó như dự định.

Bài kiểm tra cho câu trả lời hợp lệ trở nên phức tạp hơn một chút. Do đó, bạn thay thế vòng

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
5 chặt chẽ bằng một vòng linh hoạt hơn. Để lặp lại cho đến khi bạn nhận được câu trả lời hợp lệ, bạn bắt đầu một vòng lặp vô hạn mà bạn trở lại sau khi tất cả các bài kiểm tra được thỏa mãn. Đổi tên
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43 thành
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
34 và cập nhật nó như sau:

Trước khi xem xét quá kỹ vào các chi tiết trong mã, hãy lấy chức năng để chạy thử:

Chức năng của bạn trước tiên kiểm tra xem câu trả lời bao gồm số lượng lựa chọn thích hợp. Sau đó, mỗi người được kiểm tra để đảm bảo rằng nó là một lựa chọn hợp lệ. Nếu bất kỳ kiểm tra nào trong số này không thành công, thì một tin nhắn hữu ích được in cho người dùng.

Trong mã, bạn cũng thực hiện một số nỗ lực để xử lý sự khác biệt giữa một và một số mục khi nói đến ngữ pháp. Bạn sử dụng

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
35 để sửa đổi chuỗi văn bản để bao gồm số nhiều khi cần thiết.

Ngoài ra, bạn chuyển đổi câu trả lời thành một tập hợp để nhanh chóng bỏ qua các lựa chọn thay thế trùng lặp. Một chuỗi câu trả lời như

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
36 được hiểu là
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
37.

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
5

Cuối cùng, lưu ý rằng

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
34 trả về một danh sách các chuỗi thay vì chuỗi đơn giản được trả về bởi
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
43.

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
6

Tiếp theo, bạn điều chỉnh

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26 với khả năng nhiều câu trả lời đúng. Vì
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
34 đã xử lý hầu hết các biến chứng, những gì còn lại là để kiểm tra tất cả các câu trả lời thay vì chỉ một. Hãy nhớ lại rằng
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
03 là một từ điển với tất cả thông tin về một câu hỏi, vì vậy bạn không cần phải vượt qua
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
05 nữa.

Bởi vì thứ tự của các câu trả lời là không liên quan, bạn sử dụng preference = input("Choose carefully: ").lower() villain = input("Death by: ").lower() genre = input("What will you pick: ").lower() dress = input("Fasionably...: ").lower() 44 khi so sánh các câu trả lời đã cho với các câu trả lời chính xác:

Bạn chỉ ghi một điểm cho người dùng nếu họ tìm thấy tất cả các câu trả lời chính xác. Nếu không, bạn liệt kê tất cả các câu trả lời đúng. Bây giờ bạn có thể chạy ứng dụng Python Quiz của mình một lần nữa:hints.

Cho phép nhiều câu trả lời đúng cho bạn sự linh hoạt hơn trong đó các loại câu hỏi bạn có thể hỏi trong các câu đố của bạn.

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
7

Thêm gợi ý để giúp người dùng

Thỉnh thoảng khi bạn hỏi một câu hỏi, bạn cần một chút trợ giúp để chạy bộ nhớ. Cung cấp cho người dùng tùy chọn nhìn thấy một gợi ý có thể làm cho các câu đố của bạn thú vị hơn. Trong phần này, bạn sẽ mở rộng ứng dụng của mình để bao gồm các gợi ý.

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
8

Bạn có thể bao gồm các gợi ý trong tệp dữ liệu

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 của mình, ví dụ bằng cách thêm
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
46 làm cặp giá trị khóa tùy chọn:

Mỗi câu hỏi trong tệp Toml được đại diện bởi một từ điển trong Python. Các trường

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
46 mới xuất hiện dưới dạng các khóa mới trong các từ điển đó. Một hiệu ứng của điều này là bạn không cần thay đổi cách bạn đọc dữ liệu câu hỏi, ngay cả khi bạn thực hiện các thay đổi nhỏ đối với cấu trúc dữ liệu của mình.

villain = choose('Type of Villain?',
                 ['Supernatural', 'Humans', 'Social Pressure'],
                 'Death by: ')
9

Thay vào đó, bạn điều chỉnh mã của mình để tận dụng trường tùy chọn mới. Trong

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26, bạn chỉ cần thực hiện một thay đổi nhỏ:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
0

Trong phần tiếp theo, bạn sẽ thêm một tính năng tương tự. Ngoài việc hiển thị một gợi ý tùy chọn trước khi người dùng trả lời một câu hỏi, bạn sẽ hiển thị một lời giải thích sau khi họ đã trả lời nó.

Thêm các giải thích để củng cố việc học

Bạn có thể thực hiện các giải thích tương tự như cách bạn thực hiện các gợi ý trong phần trước. Đầu tiên, bạn sẽ thêm một trường

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
60 tùy chọn trong tệp dữ liệu của bạn. Sau đó, trong ứng dụng của bạn, bạn sẽ hiển thị lời giải thích sau khi người dùng đã trả lời một câu hỏi.explanations similarly to how you implemented hints in the previous section. First, you’ll add an optional
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
60 field in your data file. Then, in your application, you’ll show the explanation after the user has answered a question.

Bắt đầu với việc thêm các khóa

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
60 trong
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
1

TomL hỗ trợ các chuỗi đa dòng bằng cách sử dụng trích dẫn ba (

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
63) theo cách tương tự như Python. Đây là những cách giải thích tuyệt vời có thể kéo dài một vài câu.

Các giải thích sẽ được in lên màn hình sau khi người dùng trả lời một câu hỏi. Nói cách khác, các giải thích không phải là một phần của tương tác người dùng được thực hiện trong

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
34. Thay vào đó, bạn sẽ in chúng bên trong
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
2

Bởi vì bạn in lời giải thích sau khi đưa ra phản hồi của người dùng về việc câu trả lời của họ có chính xác hay không, bạn có thể quay lại bên trong

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
3 ____ ____267 nữa. Do đó, bạn di chuyển câu lệnh
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
68 đến cuối hàm.

Giải thích của bạn trông giống như sau khi bạn chạy ứng dụng đố vui của mình:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
3

Các cải tiến cho ứng dụng đố Python của bạn cộng lại. Vui lòng mở rộng các phần bị thu gọn bên dưới để xem mã nguồn đầy đủ với tất cả các tính năng mới của bạn:

Tệp dữ liệu

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 đầy đủ được sao chép dưới đây:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
4

Lưu tệp này trong cùng một thư mục với

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7.

Mã nguồn đầy đủ của ứng dụng Quiz của bạn được liệt kê dưới đây:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
5

Chạy ứng dụng của bạn với

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
67.

Trong bước cuối cùng, bạn sẽ thêm một tính năng nữa: hỗ trợ cho một số chủ đề đố trong ứng dụng của bạn.

Bước 6: Hỗ trợ một số chủ đề đố

Trong phần này, bạn sẽ thực hiện một cải tiến cuối cùng sẽ làm cho ứng dụng đố vui của bạn trở nên thú vị, đa dạng và thú vị hơn. Bạn sẽ thêm tùy chọn nhóm các câu hỏi vào các chủ đề khác nhau và cho phép người dùng của bạn chọn chủ đề mà họ sẽ được hỏi.

Phiên bản cuối cùng của ứng dụng Python Quiz của bạn sẽ trông như sau:

Nhiều chủ đề và câu hỏi mới sẽ giữ cho ứng dụng đố của bạn mới. Nhấp vào bên dưới và điều hướng đến thư mục

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
72 để xem mã nguồn sẽ chăm sóc bạn như thế nào sau khi bạn đã thêm những thứ này:

Các phần trong các tập tin Toml có thể được lồng nhau. Bạn tạo các bảng lồng nhau bằng cách thêm các khoảng thời gian (

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
73) trong các tiêu đề phần. Như một ví dụ minh họa, hãy xem xét tài liệu Toml sau:

>>>

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
6

Ở đây, tiêu đề phần

preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
74 được biểu thị dưới dạng
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
75 lồng trong vòng
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
76. Tương tự, các khóa có thời gian cũng được hiểu là từ điển lồng nhau, bằng chứng là
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
77 trong ví dụ này.

Bạn có thể tổ chức lại

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 để bao gồm một phần cho mỗi chủ đề. Ngoài các mảng
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
34 lồng nhau, bạn sẽ thêm khóa
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
80 cung cấp tên cho mỗi chủ đề. Cập nhật tệp dữ liệu của bạn để sử dụng định dạng sau:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
7

Bây giờ, có hai chủ đề có trong tệp dữ liệu: Python và Thủ đô. Trong mỗi phần chủ đề, các bảng câu hỏi vẫn được cấu trúc giống như trước đây. Điều này có nghĩa là thay đổi duy nhất bạn cần thực hiện là cách bạn chuẩn bị các câu hỏi.

Bạn bắt đầu bằng cách đọc và phân tích cú pháp

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70. Tiếp theo, bạn chọn từng chủ đề và lưu trữ nó trong một từ điển mới, tạm thời. Bạn cần hỏi người dùng về chủ đề mà họ muốn thử. May mắn thay, bạn có thể sử dụng lại
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
34 để có được đầu vào về điều này. Cuối cùng, bạn chọn ra các câu hỏi thuộc về chủ đề đã chọn và xáo trộn chúng:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
8

Cấu trúc dữ liệu được trả về bởi

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
25 vẫn giống như trước đây, vì vậy bạn không cần thực hiện bất kỳ thay đổi nào đối với
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
27,
shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
26 hoặc
preference = input("Choose carefully: ").lower()
villain = input("Death by: ").lower()
genre = input("What will you pick: ").lower()
dress = input("Fasionably...: ").lower()
34. Khi các loại cập nhật này chỉ yêu cầu bạn chỉnh sửa một hoặc một vài chức năng, thì đó là một dấu hiệu tốt cho thấy mã của bạn có cấu trúc tốt, với sự trừu tượng tốt.

Chạy ứng dụng đố Python của bạn. Bạn sẽ được chào đón bởi lời nhắc chủ đề mới:

>>> name = input("What's your name? ")
What's your name? Geir Arne

>>> name
'Geir Arne'
9

Điều này kết thúc phần hướng dẫn của hành trình này. Bạn đã tạo ra một ứng dụng đố Python mạnh mẽ trong thiết bị đầu cuối. Bạn có thể thấy mã nguồn đầy đủ cũng như danh sách các câu hỏi bằng cách mở rộng các hộp bên dưới:

Tệp dữ liệu

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
70 đầy đủ được sao chép dưới đây:

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
0

Lưu tệp này trong cùng một thư mục với

# quiz.py

answer = input("When was the first known use of the word 'quiz'? ")
if answer == "1781":
    print("Correct!")
else:
    print(f"The answer is '1781', not {answer!r}")
7.

Mã nguồn đầy đủ của ứng dụng Quiz của bạn được liệt kê dưới đây:

>>> answer = input("When was the first known use of the word 'quiz'? ")
When was the first known use of the word 'quiz'? 1781

>>> answer == 1781
False

>>> answer == "1781"
True
1

Chạy ứng dụng của bạn với

shows = Tree()

shows['laugh']['supernatural']['action']['trendy'] = 'Lost'
shows['laugh']['supernatural']['horror']['elegantly'] = 'Open All Hours'
shows['think']['humans']['comedy']['casual'] = 'Game of Thrones'
shows['think']['humans']['action']['whatever i can get my hands on'] = 'Bod'
shows['fight']['social pressure']['drama']['eccentric'] = 'Friends'
67.

Trong bước cuối cùng, bạn sẽ thêm một tính năng nữa: hỗ trợ cho một số chủ đề đố trong ứng dụng của bạn.

Bước 6: Hỗ trợ một số chủ đề đố

Sự kết luận

Làm tốt lắm! Bạn đã tạo ra một ứng dụng đố vui và hữu ích với Python. Trên đường đi, bạn đã học được cách bạn có thể bắt đầu với một tập lệnh cơ bản và xây dựng nó thành một chương trình phức tạp hơn.

Trong hướng dẫn này, bạn đã học được cách:

  • Tương tác với người dùng trong thiết bị đầu cuối with the user in the terminal
  • Cải thiện khả năng sử dụng ứng dụng của bạn the usability of your application
  • Tái cấu trúc ứng dụng của bạn để liên tục cải thiện nó your application to continuously improve it
  • Lưu trữ dữ liệu trong các tệp dữ liệu chuyên dụng data in dedicated data files

Bây giờ, hãy vui vẻ với ứng dụng đố của bạn. Thêm một số câu hỏi của riêng bạn, và thách thức bạn bè của bạn. Chia sẻ câu hỏi tốt nhất và chủ đề đố của bạn trong các ý kiến ​​dưới đây!

Bước tiếp theo

Như bạn đã theo dõi trong hướng dẫn này, bạn đã tạo ra một ứng dụng đố vui có tính năng tốt. Tuy nhiên, vẫn còn nhiều cơ hội để cải thiện dự án.

Dưới đây là một số ý tưởng cho các tính năng bổ sung:

  • Người tạo Quiz: Thêm một ứng dụng riêng để tương tác hỏi các câu hỏi và câu trả lời và lưu trữ chúng ở định dạng Toml thích hợp. Add a separate application that interactively asks for questions and answers and stores them in the proper TOML format.
  • Lưu trữ dữ liệu trong cơ sở dữ liệu: Thay thế tệp dữ liệu Toml bằng cơ sở dữ liệu thích hợp. Replace the TOML data file with a proper database.
  • Câu hỏi Hub: Tạo cơ sở dữ liệu câu hỏi trung tâm trực tuyến mà ứng dụng của bạn có thể kết nối. Create a central questions database online that your application can connect to.
  • Thử thách đa nhân: Cho phép người dùng khác nhau thách thức nhau trong một cuộc thi đố đàng. Allow different users to challenge each other in a trivia competition.

Bạn cũng có thể sử dụng lại logic trong ứng dụng bài kiểm tra này nhưng thay đổi lớp trình bày phía trước. Có lẽ bạn có thể chuyển đổi dự án thành ứng dụng web hoặc tạo ứng dụng Flashcards để giúp bạn chuẩn bị cho các câu đố của mình. Hãy chia sẻ những cải tiến của bạn trong các ý kiến ​​dưới đây.

Làm cách nào để làm một bài kiểm tra trong Python?

Xây dựng một ứng dụng đố vui với Python..
Bản demo: Ứng dụng đố vui của bạn ..
Tổng quan dự án..
Prerequisites..
Bước 1: Đặt câu hỏi. ....
Bước 2: Làm cho ứng dụng của bạn thân thiện với người dùng. ....
Bước 3: Tổ chức mã của bạn với các chức năng. ....
Bước 4: Tách dữ liệu vào tệp của riêng mình. ....
Bước 5: Mở rộng chức năng đố của bạn ..

Làm thế nào tôi có thể tạo ra bài kiểm tra tính cách của riêng tôi?

Đây là danh sách:..
Tạo một tiêu đề tuyệt vời cho chủ đề của bạn. Điều đầu tiên trước tiên, bạn cần một chủ đề. ....
Đảm bảo rằng dữ liệu cá nhân là an toàn. ....
Viết những câu hỏi thú vị để trả lời. ....
Tạo một bài kiểm tra mọi người rất hào hứng, với kết quả họ muốn chia sẻ. ....
Đảm bảo tất cả các kết quả là có thể ..

4 loại bài kiểm tra tính cách là gì?

Dưới đây chúng tôi đi sâu vào bốn mô hình phổ biến được sử dụng để xác định các loại tính cách: Chỉ số loại Myers-Briggs (MBTI), 16 tính cách, tính cách Big 5 và Loại A, B, C và D.Myers-Briggs Type Indicator (MBTI), 16 Personalities, The Big 5 and Type A, B, C and D Personalities.

Bài kiểm tra MBTI có miễn phí không?

Q. Bài kiểm tra tính cách này có thực sự miễn phí không?A. Bạn không cần mua hoặc đăng ký để thực hiện bài kiểm tra này và xem tổng quan về kết quả của bạn.Nếu bạn muốn, bạn có thể mua một báo cáo đầy đủ toàn diện hơn với một khoản phí nhỏ.You do not need to purchase or register to take this test and view an overview of your results. If you would like, you can purchase a more comprehensive full report for a small fee.