Mô-đun con rùa cho phép chúng tôi phát hiện khi người dùng nhấn một số phím nhất định trên bàn phím hoặc di chuyển/nhấn chuột. Bất cứ khi nào người dùng thực hiện một hành động như vậy, nó được gọi là một sự kiện. Chúng ta có thể lắng nghe các sự kiện và kích hoạt các chức năng để chạy nếu chúng ta "nghe thấy" sự kiện
Phím bấm
Bước đầu tiên của chúng tôi là thiết lập một vài chức năng mà chúng tôi sẽ gọi khi nhấn một số phím nhất định
import turtle import random def up[]: tim.setheading[90] tim.forward[100] def down[]: tim.setheading[270] tim.forward[100] def left[]: tim.set_heading[180] tim.forward[100] def right[]: tim.setheading[0] tim.forward[100] # Setting the heading of the turtle simply faces it a certain direction
Để lắng nghe các sự kiện, chúng tôi gõ rùa. nghe[]
turtle.listen[]
Bây giờ chúng tôi đang lắng nghe các sự kiện, chúng tôi có thể kiểm tra xem một số sự kiện đã xảy ra chưa
import turtle import random def up[]: tim.setheading[90] tim.forward[100] def down[]: tim.setheading[270] tim.forward[100] def left[]: tim.set_heading[180] tim.forward[100] def right[]: tim.setheading[0] tim.forward[100] tim.listen[] tim.onkey[up, "Up"] # This will call the up function if the "Left" arrow key is pressed tim.onkey[down, "Down"] tim.onkey[left, "Left"] tim.onkey[right, "Right"] tim.mainloop[] # This will make sure the program continues to run
Sự kiện chuột
Bây giờ chúng ta có thể di chuyển con rùa xung quanh bằng các phím mũi tên, chúng ta muốn có thể thay đổi màu sắc của nó khi nhấp chuột trái và đóng dấu khi nhấp chuột phải
Đầu vào của người dùng đề cập đến thông tin mà người dùng cung cấp khi chạy chương trình để ảnh hưởng đến những gì chương trình thực hiện
Q-1. Ví dụ: một trò chơi trên máy tính có thể yêu cầu bạn nhập số lượng người chơi và tên của mỗi người. Bạn nghĩ trò chơi có thể sử dụng thông tin này để làm gì?
Python cung cấp lệnh input
cho đầu vào của người dùng. Nó phải được gọi với một đối số chuỗi, bao gồm các ký tự được đặt trong các trích dẫn phù hợp. Đối số phải là một thông báo hoặc lời nhắc mà bạn muốn trình thông dịch in ra trước khi thu thập đầu vào
Để thực thi một lệnh input
, trình thông dịch hiển thị một hộp nhập liệu trong đó nó in dấu nhắc [đối số]. Sau đó, nó đợi người dùng nhập nội dung nào đó vào hộp và nhấn phím enter
hoặc nút OK
, điều này báo hiệu rằng người dùng đã hoàn tất. Trình thông dịch sử dụng chuỗi ký tự do người dùng nhập vào hộp nhập làm giá trị nhập
Thông thường, bạn sẽ muốn gán giá trị đầu vào cho một biến để có thể sử dụng giá trị đó trong các lệnh sau này
Chương trình dưới đây cho thấy cách điển hình để nhận và sử dụng đầu vào. Chạy nó ba lần trở lên; . Sau đó nhấn phím enter
hoặc phím OK
[Đảm bảo cuộn cửa sổ của bạn để bạn có thể thấy hộp đầu ra mà trình thông dịch tạo ra khi nó thực thi lệnh
turtle.listen[]0. ]
Hãy khám phá cách bạn có thể sử dụng đầu vào trong chương trình Đồ họa rùa
Đọc chương trình dưới đây và dự đoán nó sẽ vẽ gì. Sau đó chạy nó để xác minh rằng bạn hiểu cách thức hoạt động của chương trình. Nếu bạn không chắc chắn, hãy trò chuyện với một người cố vấn về nó. Bạn nên hiểu chương trình trước khi tiếp tục
Chương trình này sẽ luôn vẽ một chuỗi hạt màu đỏ. Một chương trình hữu ích hơn có thể cho phép người dùng quyết định màu sắc để tạo ra các hạt
Để thực hiện việc này, hãy thay thế chuỗi
turtle.listen[]1 ở dòng 7 của bằng
Bây giờ, khi bạn chạy chương trình và trình thông dịch đến dòng 7, nó sẽ hiển thị một hộp nhập liệu chứa lời nhắc và đợi bạn nhập nội dung nào đó vào hộp. Nhập tên của một màu khác [không có bất kỳ dấu ngoặc kép nào] vào hộp nhập liệu rồi nhấn enter
. Nếu bạn gõ một tên màu đã biết, nó sẽ vẽ chuỗi hạt có màu này. Làm thế nào là mát mẻ đó
Ngoài màu hạt, bạn có thể để người dùng quyết định độ dài của chuỗi hạt và số lượng hạt trong chuỗi
Để cho phép người dùng chọn độ dài, hãy thử thay thế input
0 bằng
input
1
Q-4. Điều gì xảy ra khi bạn chạy chương trình sau khi thực hiện thay thế được đề xuất?
Xem liệu bạn có thể tìm thấy câu trả lời cho các câu hỏi sau bằng cách đọc thông báo trong hộp lỗi [hộp màu đỏ nhạt] hiện được hiển thị bên dưới cửa sổ trình soạn thảo
dòng chứa
input
2Không, lệnh này đã gán chuỗi ký tự mà bạn đã nhập vào hộp nhập liệu thành
input
3. Nhìn vào nội dung của số dòng được đề cập trong hộp lỗidòng chứa
input
4Không, lệnh này đã gán chuỗi ký tự mà bạn đã nhập vào hộp nhập liệu thành
input
5. Nhìn vào nội dung của số dòng được đề cập trong hộp lỗidòng chứa
input
6Đúng. Trình thông dịch không thể tính toán
input
7 vìinput
3 chứa một giá trị chuỗi — nghĩa là một chuỗi ký tự — và phép chia không được xác định cho các chuỗidòng chứa
input
9Không, trình thông dịch ngừng thực thi chương trình khi xảy ra lỗi ở dòng 9. Vì vậy, nó thậm chí không bao giờ thực hiện dòng này
Q-5. Trình thông dịch tìm thấy lỗi ở dòng nào?
LoạiLỗi
Đúng. Trình thông dịch hiển thị loại lỗi ngay khi bắt đầu thông báo lỗi
TênLỗi
Không. Trình thông dịch hiển thị loại lỗi ngay khi bắt đầu thông báo lỗi
bộ phậnLỗi
Không. Trình thông dịch hiển thị loại lỗi ngay khi bắt đầu thông báo lỗi
Tổng lỗi
Không. Trình thông dịch hiển thị loại lỗi ngay khi bắt đầu thông báo lỗi
Q-6. Tên của lỗi đã xảy ra là gì?
Để hiểu vấn đề mà chúng ta đang gặp phải, chúng ta cần nói về các loại giá trị
Mỗi ngôn ngữ lập trình cung cấp các loại giá trị khác nhau. Python cung cấp bốn kiểu dữ liệu nguyên thủy
input
0Để biểu diễn các số nguyên [số nguyên]
ví dụ
input
1Để biểu diễn số thập phân [số float]
ví dụ
input
2Để đại diện cho văn bản [chuỗi]
ví dụ
'Coders rule!' "Practice makes perfect." """12/25/2020""" """Only tripled quoted strings can go for more than one line."""
input
3Để đại diện cho đúng hoặc sai
Các giá trị của loại
input
3 là
Phần rap của Mike về các biến và kiểu có thể giúp bạn ghi nhớ chúng và thậm chí có thể hiểu chúng tốt hơn một chút. Nhưng hãy nhớ rằng phần rap của Mike là về các ngôn ngữ chung và các kiểu trong Python đơn giản hơn một chút. Đặc biệt, Python không có kiểu input
5 và nó không cho phép bạn viết kiểu này ở đầu câu lệnh gán
Được trang bị thông tin này về các loại, chúng ta hãy xem lại chương trình mà chúng ta đang làm việc và lỗi mà nó tạo ra
Chương trình được sao chép dưới đây và các lệnh input
được thêm vào. Chạy chương trình này và nhập một số nguyên vào hộp nhập đầu tiên và tên màu trong hộp thứ hai
Thông báo lỗi cho bạn biết rằng trình thông dịch không thể thực hiện lệnh trên dòng 9 do lỗi loại [input
7]. Nó cũng cho bạn biết rằng nó không thể thực hiện phép chia [______48] trên các giá trị của loại input
2 và input
0. Nhìn vào dòng 9, bạn có thể thấy rằng mã của bạn yêu cầu chia giá trị của input
3 cho giá trị của enter
2 và gán kết quả cho enter
3. Vì vậy, vấn đề là, ở dòng 9, enter
2 chứa một chuỗi, không phải số
Tại sao enter
2 là một chuỗi? . Ví dụ: giả sử bạn chạy chương trình và nhập input
0 vào hộp nhập liệu đầu tiên;
Làm thế nào bạn có thể khắc phục vấn đề này? . Nếu bạn gọi input
0 bằng một chuỗi số, nó sẽ tạo và trả về giá trị input
0 được đại diện bởi chuỗi đó. Ví dụ: OK
3 trả về input
0
Trong , thêm phép gán sau vào dòng 5
Sau đó chạy chương trình và kiểm tra xem nó không còn tạo ra lỗi nữa và bạn có thể yêu cầu chương trình vẽ các chuỗi hạt dài hơn và ngắn hơn có màu khác nhau
Cuối cùng, sửa đổi chương trình để hỏi người dùng số lượng hạt. Chương trình cuối cùng của bạn sẽ hỏi người dùng về độ dài để tạo chuỗi, số lượng hạt sẽ sử dụng và màu sắc. Sau đó, nó sẽ vẽ một chuỗi hạt có độ dài nhất định và chứa số lượng hạt có màu nhất định