AI Deep Research – Một Trợ Thủ Đắc Lực Cho Các Thầy Cô Thời Đại Số (1)
Trong bối cảnh giáo dục hiện đại, yêu cầu về việc cập nhật kiến thức, đổi mới phương pháp và tìm kiếm nguồn tài liệu chất lượng ngày càng gia tăng, đặt ra những thách thức không nhỏ đối với các nhà giáo dục. Sự phát triển của Trí tuệ nhân tạo (AI) đang mở ra những giải pháp tiềm năng, trong đó AI Deep Research nổi lên như một công cụ mạnh mẽ, hứa hẹn hỗ trợ đắc lực cho công tác dạy học của quý thầy cô trong thời đại công nghệ 4.0. Hãy cùng STEAM for Vietnam khám phá xem “người bạn mới” này là ai và bằng cách nào nó có thể trở thành cánh tay phải đắc lực cho quý thầy cô!
AI Deep Research: “Trợ lý biết tuốt” thời đại số?
AI Deep Research là thuật ngữ mô tả việc ứng dụng các mô hình AI tiên tiến, đặc biệt là các mô hình ngôn ngữ lớn (Large Language Models – LLMs), vào quá trình nghiên cứu thông tin chuyên sâu. Khác biệt cơ bản so với các công cụ tìm kiếm truyền thống vốn chủ yếu dựa trên từ khóa. AI Deep Research giúp chúng ta đi sâu hơn vào bản chất vấn đề, tiết kiệm vô số thời gian và công sức quý báu! Thay vì chỉ “Google” từ khóa và nhận về hàng triệu kết quả phải tự mình lọc ra, AI Deep Research giống như một trợ lý nghiên cứu siêu thông minh và cần mẫn vì nó không chỉ tìm thông tin, mà còn biết:
Đọc và hiểu sâu: “Nghiền ngẫm” hàng loạt tài liệu, bài báo phức tạp.
Tóm tắt và chắt lọc: Rút ra những ý chính, cốt lõi nhất từ một “biển” thông tin.
Kết nối kiến thức: Nhìn ra những mối liên hệ thú vị giữa các nguồn tài liệu.
Gợi ý ý tưởng mới: Đề xuất những góc nhìn sáng tạo cho bài giảng của thầy cô.
Về cơ bản, AI Deep Research hoạt động như một công cụ phân tích và tổng hợp thông tin tiên tiến, giúp người dùng vượt qua giới hạn của việc tìm kiếm bề mặt để đi sâu vào bản chất vấn đề.
Vậy DeepSeek AI là ai trong “vũ trụ” AI này?
Khi nói đến “trí tuệ” đằng sau AI Deep Research, chúng ta không thể không nhắc đến các mô hình AI mạnh mẽ đang liên tục được phát triển. DeepSeek AI là một cái tên nổi bật gần đây, được phát triển bởi đơn vị nghiên cứu cùng tên.
DeepSeek AI được biết đến là một “gia đình” các mô hình AI, bao gồm cả mô hình ngôn ngữ (giỏi xử lý văn bản, trò chuyện) và mô hình chuyên về lập trình (như DeepSeek Coder). Điểm mạnh của DeepSeek là hiệu năng ấn tượng, khả năng hiểu và tạo ra ngôn ngữ tự nhiên cũng như code rất tốt. Một điều thú vị là DeepSeek AI cũng có định hướng đóng góp cho cộng đồng thông qua việc mở nguồn một số mô hình của mình, rất phù hợp với tinh thần chia sẻ của cộng đồng STEAM!
Trong kỷ nguyên số, DeepSeek AI xuất hiện như một trong những “bộ não” mạnh mẽ, một ví dụ điển hình cho loại công nghệ đang cung cấp sức mạnh cho khái niệm “AI Deep Research” mà chúng ta đang nói đến.
Tiềm năng ứng dụng của AI Deep Research trong Giáo dục/ Những “siêu năng lực” AI Deep Research mang lại cho giáo viên
Đối với nhà giáo dục, AI Deep Research mang lại nhiều lợi ích thiết thực, góp phần nâng cao hiệu quả và chất lượng công việc:
Tối ưu hóa quy trình xây dựng kế hoạch bài giảng: Hỗ trợ nhanh chóng trong việc tìm kiếm ý tưởng, xác định mục tiêu học tập, đề xuất cấu trúc bài giảng logic và lựa chọn các hoạt động dạy học phù hợp với nội dung và đối tượng học sinh. Đồng thời, AI Deep Research cung cấp cơ sở dữ liệu và công cụ phân tích để tìm kiếm, đề xuất các tài liệu và hoạt động phù hợp với năng lực, tiến độ và sở thích cá nhân của từng học sinh, thúc đẩy giáo dục cá thể hóa.
“Giải mã” những khái niệm chuyên sâu: Giúp giáo viên nắm vững các chủ đề phức tạp bằng cách phân tích, diễn giải và cung cấp các ví dụ, phép loại suy (analogies) đa dạng, từ đó hỗ trợ việc truyền đạt kiến thức tới học sinh một cách hiệu quả hơn.
Hỗ trợ các dự án STEAM: Cần giải thích một đoạn code? Hay tạo ví dụ lập trình đơn giản cho dự án robot? Các mô hình AI mạnh về code như DeepSeek Coder có thể hỗ trợ trong quá trình giảng dạy các môn học liên quan đến lập trình cơ bản.
Cập nhật kiến thức chuyên môn và xu hướng giáo dục: Cho phép giáo viên nhanh chóng nắm bắt các nghiên cứu mới, phương pháp sư phạm tiên tiến và các xu hướng giáo dục toàn cầu thông qua việc tóm tắt và phân tích các báo cáo, công trình khoa học mới nhất.
Nâng cao hiệu quả sử dụng thời gian: Giải phóng giáo viên khỏi các tác vụ nghiên cứu tốn nhiều thời gian, đây chính là “món quà” tuyệt vời nhất để thầy cô có thêm thời gian chăm sóc học sinh, đầu tư vào chất lượng bài giảng và tái tạo năng lượng cho bản thân.
Hướng đi tương lai: AI đồng hành cùng giáo viên
Sự phát triển của AI Deep Research dự kiến sẽ tiếp tục mang lại những thay đổi sâu sắc trong lĩnh vực giáo dục, có thể kể đến một số ứng dụng như sau:
Tích hợp liền mạch với Hệ sinh thái Công nghệ Giáo dục (EdTech): AI sẽ được tiệm cận hơn vào các Hệ thống Quản lý Học tập (LMS) và các nền tảng giáo dục khác, cung cấp hỗ trợ nghiên cứu và đề xuất tài nguyên theo ngữ cảnh.
Gia tăng năng lực phân tích và dự báo: Các công cụ AI có thể hỗ trợ phân tích dữ liệu học tập (đảm bảo tuân thủ các quy định về bảo mật và đạo đức) để đưa ra những gợi ý về phương pháp can thiệp sư phạm phù hợp.
Phát triển trợ lý ảo chuyên biệt cho giáo dục: Các trợ lý AI có khả năng tương tác, giải đáp các câu hỏi chuyên môn và hỗ trợ giáo viên trong quá trình ra quyết định sư phạm.
AI Deep Research đại diện cho một bước tiến công nghệ quan trọng, mang đến tiềm năng to lớn trong việc hỗ trợ hoạt động nghiên cứu và giảng dạy của nhà giáo dục. Việc hiểu rõ và khai thác hiệu quả công cụ này không chỉ giúp tối ưu hóa công việc mà còn góp phần nâng cao chất lượng giáo dục trong bối cảnh mới.
Tuy nhiên, cần nhấn mạnh rằng AI chỉ đóng vai trò là công cụ hỗ trợ. Trí tuệ, kinh nghiệm, khả năng tư duy phản biện và vai trò truyền cảm hứng của người giáo viên vẫn là yếu tố cốt lõi, không thể thay thế. STEAM for Vietnam khuyến khích quý thầy cô chủ động tìm hiểu, đánh giá và ứng dụng công nghệ này một cách có chọn lọc, phù hợp với mục tiêu và bối cảnh giáo dục cụ thể, nhằm mục tiêu cuối cùng là nâng cao trải nghiệm học tập cho học sinh.
Chúng tôi tin rằng việc làm chủ các công cụ như AI Deep Research sẽ là một phần quan trọng trong hành trang của nhà giáo dục hiện đại.
Trí tuệ nhân tạo trong lớp học: Thách thức cũ, cơ hội mới cho tư duy phản biện
Trong những năm gần đây, sự xuất hiện của các công cụ trí tuệ nhân tạo (AI) đã tạo ra làn sóng tranh luận mạnh mẽ trong môi trường giáo dục. Khi học sinh có thể nhập một đề bài vào ChatGPT và nhận được câu trả lời gần như ngay lập tức, những hình thức đánh giá truyền thống như “viết đoạn văn nghị luận”, “phân tích bài thơ”, hay “giải một bài tập vật lý” đang dần trở nên dễ bị lạm dụng và khó kiểm soát về tính xác thực. Trước tình hình đó, phản ứng ban đầu của không ít giáo viên là tìm cách kiểm soát, thậm chí cấm học sinh sử dụng AI trong học tập.
Tuy nhiên, tại nhiều trường học ở Mỹ, một số giáo viên đang lựa chọn một con đường khác: không chống lại, mà đồng hành cùng AI. Họ nhìn nhận sự hiện diện của AI không như một mối đe dọa, mà như một cơ hội – cơ hội để cải thiện phương pháp giảng dạy, và quan trọng hơn, để khơi dậy tư duy phản biện sâu sắc ở học sinh.
Không dừng lại ở việc “biết” – giáo viên đang yêu cầu học sinh phải “hiểu”
Trên thực tế, những câu hỏi truyền thống như “Trình bày nguyên nhân và kết quả của cuộc Cách mạng tháng Tám 1945” hoặc “Phân tích nhân vật chính trong một tác phẩm văn học” rất dễ bị thay thế bởi một câu prompt đơn giản trên công cụ AI. Nhận thức được điều này, nhiều giáo viên đã chủ động thiết kế lại câu hỏi kiểm tra và phương pháp giảng dạy, nhằm đặt ra những thách thức mà AI chưa thể thay thế được: khả năng lập luận, sự sáng tạo trong tư duy và cái nhìn cá nhân đối với các vấn đề phức tạp.
Chẳng hạn, thay vì yêu cầu học sinh mô tả một khái niệm đơn giản, giáo viên có thể hỏi: “Nếu Hồ Chí Minh sống trong thời đại AI và mạng xã hội, liệu tư tưởng ‘học để hành’ và ‘tự học suốt đời’ sẽ được diễn giải như thế nào, trong bối cảnh máy móc có thể đưa ra câu trả lời thay con người?” Câu hỏi này không thể chỉ trả lời bằng cách sao chép thông tin có sẵn – học sinh buộc phải hiểu sâu sắc vấn đề, vận dụng lý luận và phản biện để đưa ra lập trường.
Bên cạnh đó, một số giáo viên còn áp dụng cách thức yêu cầu học sinh phản biện lại các quan điểm phổ biến – một chiến lược giúp khơi gợi tư duy phản biện. Thay vì lặp lại kiến thức đã học, học sinh được khuyến khích đặt lại vấn đề và đưa ra góc nhìn riêng, kể cả khi điều đó đi ngược với nhận định quen thuộc.
Ví dụ, trong môn Ngữ văn, thay vì yêu cầu phân tích nhân vật Chí Phèo theo khuôn mẫu, giáo viên có thể đặt câu hỏi: “Có ý kiến cho rằng Chí Phèo là nạn nhân hoàn toàn của xã hội. Em có đồng tình không? Vì sao?” Ở đây, học sinh không chỉ cần hiểu nhân vật, mà còn phải biết đánh giá, so sánh và lựa chọn lập trường phù hợp với hệ giá trị cá nhân – một năng lực quan trọng trong thời đại thông tin không ngừng thay đổi.
Một trong những quan điểm nổi bật đến từ các giáo viên đổi mới là: AI không phải là kẻ thay thế học sinh trong học tập, mà là một công cụ hỗ trợ – tương tự như máy tính từng bị lo ngại khi mới xuất hiện trong lớp học Toán. Khi biết cách sử dụng, AI có thể giúp học sinh phát triển kỹ năng đặt câu hỏi, kiểm tra lại các giả định, mở rộng nguồn tư liệu và phản biện lại chính thông tin mà AI đưa ra.
Giáo viên không yêu cầu học sinh “ngừng dùng AI”, mà yêu cầu các em phải đi xa hơn: hiểu vì sao AI đưa ra câu trả lời đó, tìm ra điểm hợp lý và chưa hợp lý, và quan trọng hơn, đưa ra cách lý giải cá nhân dựa trên tư duy độc lập.
Sự thay đổi này không chỉ là một biện pháp ứng phó nhất thời với sự phát triển của công nghệ, mà là một lời nhắc nhở quan trọng về bản chất của giáo dục. Trong một thế giới nơi thông tin có thể được tạo ra trong vài giây, điều quan trọng không còn là việc ghi nhớ kiến thức, mà là khả năng phân tích, phản biện và sử dụng kiến thức đó một cách có trách nhiệm.
Việc giáo viên chủ động thay đổi cách tiếp cận – từ kiểm soát sang cộng tác với AI – cho thấy một bước chuyển lớn về tư duy giáo dục. Thay vì lo sợ công nghệ làm lu mờ vai trò của con người, họ chứng minh rằng chính con người mới là yếu tố quyết định chất lượng của tri thức, thông qua khả năng suy nghĩ sâu sắc, đặt câu hỏi đúng, và phát triển góc nhìn độc lập.
Vượt không gian và thời gian, ngược dòng ký ức trở về những tháng năm lịch sử hào hùng! Cách đây 71 năm, ngày 7 tháng 5 năm 1954, lá cờ “Quyết chiến, Quyết thắng” của quân đội ta tung bay trên nóc hầm chỉ huy của tướng Đờ Cát, đánh dấu chiến dịch Điện Biên Phủ toàn thắng.
Điện Biên – mảnh đất lịch sử ghi dấu chiến thắng “lừng lẫy năm châu, chấn động địa cầu”, viết nên trang sử hào hùng Điện Biên Phủ, một chiến tích vang dội, thức tỉnh thế giới và thay đổi dòng chảy lịch sử.
Và giờ đây, trên mảnh đất Điện Biên huyền thoại, một trận chiến mới lại bắt đầu. Trận chiến tân thời đại – Trận chiến của trí tuệ, của sáng tạo, của khát vọng vươn lên! Một chiến trường Điện Biên 4.0 mang tên: Điện Biên “Phủ-AI”.
Không còn tiếng pháo gầm, không còn bóng dáng quân thù, Điện Biên “Phủ AI” là nơi những bộ óc kiệt xuất, những trái tim nhiệt huyết, cùng nhau khai phá những chân trời công nghệ mới! Nơi mà trí tuệ nhân tạo được ứng dụng, lan tỏa để kiến tạo tương lai.
“Chưa bao giờ trong suốt mấy năm kháng chiến, dân ta đã góp nhiều công sức như trong Đông Xuân 1953-1954 để chi viện cho quân đội đánh giặc… Bọn đế quốc… không bao giờ đánh giá được sức mạnh của cả một dân tộc, sức mạnh của nhân dân. Sức mạnh đó có thể khắc phục được tất cả mọi khó khăn, chiến thắng mọi kẻ địch”.
– Đại tướng Võ Nguyên Giáp –
56 ngày đêm chiến đấu dũng cảm, ngoan cường, đập tan toàn bộ tập đoàn cứ điểm Điện Biên Phủ; Tiêu diệt & bắt làm tù binh 16.200 tên địch; Bắn rơi vàphá hủy 62 máy bay và thu toàn bộ vũ khí, đạn dược, quân trang quân dụng của địch.
Gần 15.000 tấn gạo, 268 tấn muối, 577tấn thịt, 1034 tấn thực phẩm, 177 tấn vật chất khác, 20.991 xe đạp thồ, 914 con ngựa thồ được dân ta đóng góp trong toàn chiến dịch Điện Biên Phủ.
Cuộc tiến công chiến lược Đông – Xuân 1953 – 1954 của quân và dân ta đã kết thúc bằng một
CHIẾN THẮNG VĨ ĐẠI
TUY NHIÊN
Sau chiến tranh, vùng đất này vẫn đối diện với nhiều thách thức: kinh tế chậm phát triển, điều kiện giáo dục còn hạn chế.
Theo thống kê của ngành Giáo dục và Đào tạo, năm học 2024 – 2025, tỉnh Điện Biên tiếp tục đối diện với khó khăn do thiếu hàng nghìn giáo viên. Ở các huyện vùng cao, biên giới như: Tủa Chùa, Điện Biên Đông, Mường Nhé, Nậm Pồ… Đây là các địa bàn rất nhiều khó khăn trong giao thông, hạ tầng, đời sống
Có thể thấy, Điện Biên đã và đang phải đối mặt với vô vàn thách thức: điều kiện kinh tế khó khăn, địa hình núi non hiểm trở, giao thông hạn chế, vv… Nhưng những khó khăn ấy không thể dập tắt khát vọng thay đổi.
“Phương tiện phục vụ cho việc học thật sự còn nhiều khó khăn. Phương tiện đồng đều duy nhất và ai cũng có là điện thoại. Học sinh muốn làm dự án hoặc có trang thiết bị về máy tính, internet hay trang thiết bị thì cũng không được đảm bảo.”
– Cô Trương Thị Hương, Giáo viên dạy Toán, Trường Phổ thông Dân tộc nội trú, THPT Huyện Mường Ảng
KÝ ỨC TỰ HÀO
“Đối tượng học sinh trường nội trú hầu như có hoàn cảnh khó khăn vì học nội trú là được trợ cấp cho tiền học và ăn uống. Đồng nghĩa như thế là hầu như gia đình không có điều kiện, các em chỉ có 2 mục tiêu là sư phạm và công an. Nếu không đạt được 2 mục tiêu đấy thì các em chuyển hướng đi làm, bởi lẽ các em không có điều kiện để theo đuổi ước mơ của mình.”
Cô Trương Thị Hương, Trường Phổ thông Dân tộc nội trú, THPT Huyện Mường Ảng
“Giữa đại ngàn Điện Biên,
như một truyền thống bất diệt –
ngọn lửa chinh phục tri thức chưa bao giờ lụi tàn”
“Trong quá trình 15 năm làm nghề, cũng có rất nhiều thay đổi. Như bản thân mình ngày trước phải chép giáo án bằng tay thì bây giờ cũng đã có công nghệ hỗ trợ rất nhiều. Bản thân mình phải học và thay đổi mỗi ngày. Học sinh và thầy cô cũng đang cùng cố gắng phấn đấu thay đổi mỗi ngày.”
Cô Trương Thị Hương, Trường Phổ thôngDân tộc nội trú, THPT Huyện Mường Ảng
Năm 2025, đất nước ta long trọng chào mừng những cột mốc lịch sử quan trọng:
95 năm ngày thành lập Đảng Cộng sản Việt Nam, 50 năm Ngày giải phóng miền Nam, thống nhất đất nước, 135 năm ngày sinh Chủ tịch Hồ Chí Minh, và 80 năm ngày thành lập nước. 2025 cũng là năm cả quốc gia vươn mình đổi mới với nhiều chính sách mạnh mẽ, quyết liệt, đặc biệt là trong lĩnh vực Khoa học & Công nghệ, Giáo dục & đào tạo, Y tế.
Và tại mảnh đất lịch sử Điện Biên – nơi từng ghi dấu chiến thắng “lừng lẫy năm châu, chấn động địa cầu” – một cuộc chuyển mình mạnh mẽ cũng đang diễn ra.
“Các thầy cô giáo tại Trường Tiểu học Bế Văn Đàn, thành phố Điện Biên Phủ cũng đang tích cực chủ động tự học, tự tìm kiếm và tiếp cận các kiến thức về AI cùng các công nghệ giáo dục tiên tiến qua internet. Chính sự mạnh dạn tìm tòi, sáng tạo và ứng dụng linh hoạt các phương pháp mới này vào thực tế giảng dạy đã giúp các thầy cô nâng cao rõ rệt hiệu quả các tiết học, đảm bảo nhà trường luôn bắt nhịp với tiến trình chuyển đổi số của ngành giáo dục”
“Tại trường THPT Chuyên Lê Quý Đôn, thành phố Điện Biên Phủ, công nghệ trí tuệ nhân tạo (AI) đang ngày càng thể hiện sức ảnh hưởng tích cực trong đổi mới phương pháp giảng dạy, đặc biệt là ở các môn khoa học tự nhiên. Các môn học vốn bị coi là khô khan như Hóa học giờ đây đã trở nên hấp dẫn hơn rất nhiều khi các giáo viên tại đây mạnh dạn sử dụng các ứng dụng AI vào thiết kế bài giảng.”
Những tưởng với thầy cô đã quen với phấn trắng bảng đen, quen với những bài giảng truyền thống bao năm thì sự thay đổi này sẽ vấp phải hoài nghi, lo lắng. Bởi AI là một lĩnh vực mới mẻ, mà khi gặp cái mới, ai chẳng có chút ngại ngần.
Nhưng, vượt lên sự nghi ngại, các thầy cô ở Điện Biên đã dám thay đổi. Họ không chỉ học – mà còn áp dụng những kiến thức về AI để mang đến những tiết học sáng tạo, sinh động hơn cho học sinh vùng cao.
Với sự quyết tâm, đồng lòng của đội ngũ giáo viên, cũng như sự ủng hộ hết mình từ ban lãnh đạo tỉnh, chương trình học đã nhanh chóng được triển khai tại Điện Biên.
Thời gian lập kế hoạch và triển khai diễn ra một cách thần tốc. Hệ thống đào tạo từ xa được khẩn trương thiết lập, giúp giáo viên Điện Biên tiếp cận kiến thức AI mà không cần rời khỏi lớp học của mình. Công nghệ giờ đây trở thành cây cầu kết nối tri thức, thu hẹp khoảng cách địa lý và giúp thầy cô có thể học tập, thực hành mọi lúc, mọi nơi.
“Khóa học không chỉ đơn thuần làmột khóa tập huấn mà còn là cơ hội quý báu để đội ngũ giáo viên Điện Biên tiếp cận với tri thức mới, công nghệ mới, từ đó nâng cao chất lượng giảng dạy, đóng góp cho sự phát triển của nền giáo dục tỉnh nhà.”
Ông Lê Thành Đô– Chủ tịch tỉnh Điện Biên
Cùng lắng nghe những chia sẻ chân thành từ các giáo viên nơi
“đại ngàn Điện Biên”
Lớp học với 100 giáo viêncốt cán diễn ra trong2 ngày 1/3/2025 và 23/3/2025
Lớp học AI đặc biệt dành riêng cho các lãnh đạo, quản lý ngành giáo dục
Chiến dịch Điện Biên “Phủ-AI” đã tìm ra những nhân vật tiêu biểu, những người đang trực tiếp thay đổi cuộc sống của bản thân và cộng đồng. Đó là những thầy cô giáo say mê học hỏi, miệt mài ứng dụng AI vào bài giảng, mang đến cho học sinh những tiết học sinh động và bổ ích. Đó là những học sinh Điện Biên, những người đang được tiếp cận với một nền giáo dục tiên tiến, mở ra cánh cửa tương lai tươi sáng.
HÌNH ẢNH THỰC TẾ LỚP HỌC ONLINE PHỔ CẬP AI CHO GIÁO VIÊN TẠI ĐIỆN BIÊN
35,700
DỰ ÁN ĐƯỢC NỘP VỀ
Điện Biên, từ chiến thắng lịch sử đến trung tâm giáo dục tiên phong, một biểu tượng của sự đổi mới, là đơn vị hình mẫu để các địa phương khác học tập.
BÁO CÁO TỔNG KẾT BUỔI TẬP HUẤN GIÁO VIÊN CỐT CÁN TỈNH ĐIỆN BIÊN
Điện Biên – tỉnh đầu tiên tại Việt Nam phổ cập 100% giáo viên được đào tạo về AI, vượt qua những thách thức về địa hình hiểm trở, điều kiện kinh tế và tỷ lệ lớn giáo viên là người dân tộc thiểu số.
Đây không chỉ là một cột mốc đáng tự hào mà còn là một trong những chương trình tiên phong trên thế giới về phổ cập Gen AI, khẳng định tinh thần đón đầu làn sóng công nghệ mới ngay tại một trong những địa phương miền núi biên giới còn nhiều khó khăn.
Ở quá khứ, Điện Biên là biểu tượng của tinh thần độc lập, tự chủ, tự lực, tự cường, nơi sức mạnh dân tộc hòa quyện cùng sức mạnh thời đại, tạo nên chiến thắng vang dội, làm thay đổi lịch sử thế giới. Ngày hôm nay, tinh thần ấy vẫn cháy bỏng trong từng bước chuyển mình. Chiến dịch không chỉ mang kiến thức AI đến với giáo viên và học sinh vùng cao, mà còn là câu chuyện về sự hồi sinh, khát vọng vươn xa của một mảnh đất từng ghi danh trên bản đồ thế giới.
Điện Biên – vùng đất từng ghi dấu những chiến thắng lịch sử lẫy lừng – nay tiếp tục trở thành biểu tượng của sự đổi mới và tinh thần dám tiên phong. Từ một địa phương miền núi với muôn vàn khó khăn, Điện Biên đã mạnh mẽ bước vào kỷ nguyên số với chiến dịch ĐIỆN BIÊN PHỦ AI, mang tri thức AI đến gần hơn với giáo viên và học sinh vùng cao.
Chiến dịch này không chỉ dừng lại ở việc trang bị kiến thức công nghệ, mà còn truyền cảm hứng thay đổi cho cả cộng đồng. Bằng sự quyết tâm và tinh thần không ngại khó, giáo viên Điện Biên đã chứng minh rằng:
Dù ở bất kỳ hoàn cảnh nào, con người vẫn có thể thay đổi và vươn lên khi có đủ ý chí và quyết tâm.
Điện Biên đang viết nên một câu chuyện truyền cảm hứng, khẳng định rằng dù xuất phát điểm còn nhiều khó khăn, nhưng với ý chí và quyết tâm, chúng ta có thể tạo ra những bước tiến vượt bậc, vươn mình mạnh mẽ,
1. Làm thế nào để tận dụng cơ hội phát triển sau STEAMHacks?
Cuộc thi STEAMHacks do STEAM for Vietnam tổ chức là một sân chơi đầy thử thách và kích thích sự sáng tạo cho các em học sinh. Đây cũng là cơ hội để các em được tiếp xúc với hơn 180 dự án công nghệ thú vị, khơi gợi niềm say mê trong việc tìm hiểu và tạo ra những giải pháp đột phá cho xã hội.
STEAMHacks không chỉ là cuộc thi, mà còn là một môi trường học tập thực tiễn và đầy tính chất ứng dụng. Đã có 247 em học sinh Hackers (coder) và 220 em học sinh thuộc team Hipsters (non-coder) tham gia vào hành trình đầy thử thách này. Các em sẽ đối mặt với các vấn đề thực tế trong quá trình thi đấu và phải tìm ra các giải pháp sáng tạo. Quá trình này sẽ giúp các học sinh trau dồi kỹ năng giải quyết vấn đề, tư duy phản biện và thực hành việc đưa ra những quyết định thông minh trong cuộc sống.
STEAMHacks yêu cầu các đội thi làm việc trong một khoảng thời gian giới hạn và dưới áp lực cao. Trong quá trình làm việc nhóm và thuyết trình kết quả dự án, các em học sinh sẽ rèn luyện được kỹ năng lãnh đạo và giao tiếp. Đồng thời cải thiện khả năng quản lý thời gian hiệu quả và làm việc hiệu suất dưới áp lực. Đây cũng là những kỹ năng rất quan trọng trong môi trường học tập và công việc, bất kể là trong vai trò coder hay non-coder.
Do đó, các em học sinh có thể gia nhập bất kỳ ngành nghề nào, kể cả ngoài lĩnh vực công nghệ, nhờ những kỹ năng mềm đã được trau dồi trong quá trình tham gia STEAMHacks.
2. Những ngành nghề mà non – coder nên tìm hiểu
STEAMHacks (Hackathon) không chỉ có tính ứng dụng dành cho các bạn muốn trở thành lập trình viên. Tương lai đã đến – Hãy khám phá những ngành nghề các bạn non-coder cần chuẩn bị cho cuộc cách mạng công nghệ với Hackathon nhé!
Quản lý sản phẩm (Product Manager): Quản lý sản phẩm là một lĩnh vực phát triển đầy thú vị mà các em học sinh đã được trải nghiệm khi tham gia STEAMHacks. Trong vai trò này, các em sẽ đứng giữa người dùng và đội phát triển, đảm bảo rằng sản phẩm đáp ứng đúng nhu cầu và mang lại giá trị cao nhất cho khách hàng.
Thiết kế đồ họa và Trải nghiệm người dùng (UI/UX Designer):STEAMHacks cũng là dịp để các em thể hiện khả năng thiết kế đồ họa và trải nghiệm người dùng sáng tạo. Những kỹ năng này không chỉ làm cho các sản phẩm công nghệ trở nên đẹp mắt và dễ sử dụng, mà còn tạo được sự tương tác tích cực với người dùng.
Chuyên viên Marketing Công nghệ (Tech Marketing Specialist): Lĩnh vực này đòi hỏi các em học sinh có hiểu biết về công nghệ và khả năng truyền đạt thông tin một cách hiệu quả đến khách hàng. Các em sẽ tham gia vào việc xây dựng chiến lược marketing cho các sản phẩm công nghệ và phân tích thị trường.
Chuyên gia Tương tác Người-máy (Human-Computer Interaction Specialist): Lĩnh vực này nghiên cứu cách mà con người tương tác với máy tính và các thiết bị công nghệ khác. Các em sẽ phải tìm hiểu và phân tích cách sử dụng sản phẩm và đề xuất cải tiến để làm cho chúng dễ sử dụng và hiệu quả hơn.
Chuyên viên Phân tích Dữ liệu (Data Analyst): Nếu các bạn non-coder có khả năng phân tích và xử lý dữ liệu, lĩnh vực này đang nổi lên như một trong những công việc hấp dẫn dành cho non-coder. Các em học sinh sẽ cần đánh giá dữ liệu để tìm ra thông tin quan trọng và đưa ra quyết định dựa trên dữ liệu.
Chuyên gia Truyền thông Số (Digital Media Specialist): Lĩnh vực này liên quan đến việc tạo và quản lý nội dung số trên các nền tảng truyền thông xã hội và các kênh trực tuyến khác. Các em sẽ phát triển chiến lược truyền thông số và tương tác với cộng đồng trực tuyến.
3. Những ngành nghề dành riêng cho coder
Sau khi tham gia STEAMHacks, các em học sinh team Hackers (coder) sẽ tích lũy được nhiều kỹ năng và kinh nghiệm lập trình giá trị, từ đó mở ra nhiều cơ hội tiềm năng trong lĩnh vực công nghệ.
Dưới đây là một số ngành nghề tiềm năng dành cho các bạn coder:
Lập trình và phát triển ứng dụng (Software Developer): Các em coder sau khi trổ tài tại STEAMHacks, đã tích lũy không ít kỹ năng lập trình và phát triển ứng dụng đáng kể. Với những kiến thức đã học được, các em có thể phát triển những ứng dụng di động và web thú vị, giải quyết các vấn đề thực tế và cung cấp giá trị cho xã hội thông qua công nghệ.
Trí tuệ nhân tạo và Học máy (AI and Machine Learning Engineer): Sau khi nắm vững cơ bản về trí tuệ nhân tạo và học máy. Các em có thể áp dụng kiến thức này để xây dựng các hệ thống thông minh, từ chatbot thông minh đến hệ thống dự đoán dữ liệu phức tạp.
Lập trình viên Front-end (Web Developer): Front-end developer chịu trách nhiệm xây dựng giao diện và trải nghiệm người dùng cho các trang web và ứng dụng web. Các coder có thể sử dụng những kỹ năng HTML, CSS, JavaScript để tạo ra các giao diện hấp dẫn và tương tác.
Lập trình viên Back-end (Backend Developer): Backend developer tập trung vào xây dựng cơ sở hạ tầng và hệ thống xử lý dữ liệu cho các ứng dụng web và di động. Các coder có thể phát triển các ứng dụng phức tạp và có hiệu suất cao bằng cách sử dụng các ngôn ngữ và framework như Node.js, Python, Ruby on Rails, Laravel,…
Chuyên viên Trí tuệ nhân tạo (AI Specialist): Các em coder sau khi tham gia STEAMHacks có thể sử dụng kiến thức và kỹ năng trong lĩnh vực trí tuệ nhân tạo để phát triển các hệ thống tự động hóa, học máy, xử lý ngôn ngữ tự nhiên và các ứng dụng AI khác.
Kỹ sư Internet of Things (IoT Engineer): Internet of Things là lĩnh vực đang phát triển mạnh mẽ, các em học sinh có thể tham gia vào việc phát triển và triển khai các hệ thống IoT cho các ứng dụng trong cuộc sống hàng ngày, như nhà thông minh, sản xuất công nghiệp thông minh, và nhiều lĩnh vực khác.
Không chỉ giới hạn trong những lĩnh vực truyền thống, trong thời đại số hóa hiện nay, còn có rất nhiều ngành mới mở ra cơ hội không ngừng cho các coder và non-coder. Các em học sinh có thể trở thành một chuyên gia về Kỹ sư dữ liệu (Data Engineer), Phát triển trò chơi thực tế ảo (Virtual Reality Game Developer), Chuyên gia trí tuệ nhân tạo trong y tế (AI in Healthcare Specialist)… Điểm chung mà các em học sinh coder và non-coder của STEAM for Vietnam có được là sự tò mò và khát khao khám phá không ngừng. Vì vậy, điều quan trọng không phải là cái tên hoặc chức danh, mà là ý thức và tư duy linh hoạt để vượt qua mọi giới hạn, khám phá tiềm năng của mình và tạo nên những thành tựu đáng kinh ngạc trong lĩnh vực STEAM.
Công nghệ là một lĩnh vực đầy hứa hẹn và không ngừng phát triển. Các em học sinh hãy giành thời gian tìm hiểu thêm để nhận biết sở trường cá nhân của mình và xác định được hướng đi chính xác cho tương lai. Dù là coder hay non-coder, hãy tự tin và tận dụng những kỹ năng của mình để tạo nên những dự án có sức ảnh hưởng cho xã hội nhé!
Về STEAMHacks:
STEAMHacks 2023 là cuộc thi Hackathon quy mô toàn quốc dành cho học sinh từ 15 – 18 tuổi. Chương trình được đồng tổ chức bởi STEAM for Vietnam, Đại học Bách Khoa Hà Nội, Trung tâm Hoa Kỳ tại Hà Nội và TP. HCM (trực thuộc Đại sứ quán và Lãnh sự quán Hoa Kỳ). STEAMHacks 2023 được lập ra với mong muốn mang đến một sân chơi không chỉ về lập trình, mà còn mô phỏng môi trường khởi nghiệp, dành cho tất cả các bạn học sinh, đồng thời khơi gợi nguồn cảm hứng sáng tạo và thúc đẩy các em trở thành một nhân tố thay đổi trong tương lai.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
1. Tên biến chỉ có thể chứa các ký tự: A-Za-z0-9_ (alpha-numeric và underscore)
2. Tên biến không được bắt đầu bằng số.
3. Tên biến phải bắt đầu bằng các ký tự A-Z, a-z hoặc _.
Ví dụ:
a = 1 # Hợp lệ
__a = 1 # Hợp lệ
_a = 1 # Hợp lệ
...
â = 1 # Không hợp lệ : Chứa ký tự không thuộc A-Za-z0-9_
1a = 1 # Không hợp lệ : Bắt đầu bằng số
~a = 1 # Không hợp lệ : Chứa ký tự không thuộc A-Za-z0-9_
Lưu ý: Biến trong Python phân biệt chữ hoa-thường. Ví dụ:
a = 1
A = 2
print(a, A)
# Output: 1 2
Virtual Environment (môi trường ảo) là môi trường có các thư viện độc lập, tách biệt khỏi môi trường Python chính (môi trường hệ thống). Trong môi trường này chỉ có các thư viện cơ bản và các binary cơ bản của Python. Các thư viện (ngoài Python Standard Library) phải được cài lại.
Tạo Virtual Environment Trên Windows, mở “Command Prompt” hoặc “Powershell”. Trên Linux, mở “Terminal”.
python3 -m venv <tên-venv>
<tên-venv>: Thay bằng tên của venv, ví dụ “env”, “venv”, “pyvenv”
Kích hoạt Virtual Enviroment Windows CMD
CALL <tên-venv>\Scripts\activate.bat
Windows Powershell
<tên-venv>\Scripts\Activate.ps1
Vấn đề với Powershell trên Windows 10: Powershell trên Windows 10 có thể ngăn bạn chạy script kích hoạt. Đó là do ExecutionPolicy. Làm theo bước ở dưới chỉ khi không thể chạy script kích hoạt. Mở powershell với quyền Administrator
git clone <repo> # Clone repo về máy
git checkout <branch> # Đổi branch
git checkout -b <branch> # Tạo branch tên <branch> đồng thời checkout vào branch đó
git branch # Hiện các branch, tương tự git branch --list.
git branch <branch> # Tạo branch tên <branch>. Nhưng không checkout vào branch đó
git branch -d <branch> # Xóa branch, chỉ khi các commit đã merge
git branch -D <branch> # Xóa branch, kể cả khi các commit chưa merge
git branch -m <branch> # Đổi tên branch hiện tại thành <branch>
git branch -a # Hiện danh sách các branch, local và remote
git fetch # Fetch remote, download các thay đổi từ remote về nhưng không ghi dè local.
git pull <remote> <branch> # Download <branch> từ <remote> và ghi đè lên local
git push <remote> <branch> # Đẩy local lên <branch> qua <remote>
git init # Tạo folder .git tại thư mục hiện hành, làm thư mục hiện tại thành 1 local
repo
git remote add <remote-name> <repo-url> # Tạo remote với <remote-name> tới <repo-url>.
Khi clone repo về thì mặc định có sẵn remote, không cần add.
git remote -v # Kiểm tra (các) remote của thư mục hiện tại.
Cách 1: IDE Mỗi IDE có một cách riêng để chạy file code. Vui lòng sử dụng Google để tìm hiểu cách sử dụng IDE của bạn. Cách 2a: Trực tiếp chạy như một executable Từ terminal:
C:\Users\phanm\OneDrive\Desktop> <tên-file>.py
Lưu ý: Tuy có thể gọi tên file để chạy trên Command Prompt (cmd), cmd sẽ không chạy file python, mà chuyển sang cho Python Interpreter (hoặc bất cứ ứng dụng nào được sử dụng làm mặc định để chạy file .py). Vì .PY không nằm trong biến môi trường (Environment Variables) PATHEXT. Từ File Explorer: Double-click vào file python để chạy. Cách này tương tự như cách dưới, nhưng không cần phải dùng Terminal. Thường sử dụng trên Windows.
Cách 2b: Chạy qua Python interpreter Từ terminal:
# Cmd hoặc Powershell
C:\Users\phanm\OneDrive\Desktop> python <tên-file>.py
# Terminal trên Mac/Linux
phanm@nhatlong ~
$ python3 <tên-file>.py
ls (Linux) / dir (Windows CMD) / gci (PS): Liệt kê các file/folder trong thư mục. Cú pháp: ls <thư-mục> hoặc ls
tree (Chung): Vẽ cây thư mục.
Ví dụ:
# Output sẽ khác nhau tùy vào hệ điều hành. Đây là của Windows
Folder PATH listing for volume New Volume
Volume serial number is 00000091 78E6:EB3A
G:.
├───assets
│ ├───fonts
│ ├───items
│ ├───npcs
│ └───player
├───data
│ ├───dialogues
│ └───levels
└───src
cat (Linux) / type (Windows CMD) / gc (PS): Đọc nội dung file và xuất lên màn hình.
Tác giả: Bạn Phan Mai Nhật Long – Học sinh STEAM for Vietnam
Mọi câu hỏi thắc mắc khác về học phần Get Started Course các phụ huynh học sinh và các con học sinh có thể gửi câu hỏi lên mục “Thảo luận” (Discussion) trên hệ thống LMS, hoặc thông qua email hello@steamforvietnam.org.
————————
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Các bạn học sinh có còn nhớ dự án ““Nhà thám hiểm và cánh cửa bí mật” hay không? Ở dự án đó, nhà thám hiểm đã phải trải qua hành trình thật khó khăn khi phải lựa chọn 4 căn phòng bí ẩn, thế nhưng bạn ấy đã thành công lấy được kho báu và rời khỏi lâu đài. Trở lại với tòa lâu đài cổ kính đầy rẫy nguy hiểm, các con quái vật sau khi để mất kho báu đã họp bàn với nhau để tìm cách bảo vệ tòa lâu đài tốt hơn. Vậy là, nhân sư đã nâng cấp trò chơi của mình, không còn chỉ là game đoán số thông thường, mà là một thử thách sắp xếp đòi hỏi khả năng tính toán chính xác.
Lần này, nhà thám hiểm lại quyết định quay trở lại tòa lâu đài bí ẩn. Làm thế nào để các bạn học sinh có thể giúp cho nhà thám hiểm an toàn rời khỏi nơi nguy hiểm đó? Để vượt qua thử thách của nhân sư, nhiệm vụ của chúng ta là sắp xếp các dãy số lộn xộn theo thứ tự từ lớn đến bé hoặc từ bé đến lớn. Chúng ta sẽ được chọn mình sắp xếp bao nhiêu số. Đặc biệt, các số trong dãy số sẽ ở dưới dạng các biểu thức cộng trừ, đòi hỏi sự tính toán thật nhanh và chính xác. Hãy thử sức chơi game với nhân sư ngay nào:
Một số kiến thức chúng ta đã được học ở khoá CS 101 sẽ được áp dụng để hoàn thành game nhập vai đơn giản này:
Thư viện randomđể tạo số ngẫu nhiên.
Vòng lặp for và while trong Python.
Hàm (function) trong Python
Chuỗi ký tự gồm nhiều dòng (Multi-line String)
Mảng trong Python
Bắt đầu code thôi nào !!!!!
Luật chơi:
Trò chơi bắt đầu khi nhân sư tạo một dãy số ngẫu nhiên dưới dạng các biểu thức cộng, trừ. Nếu sắp xếp theo thứ tự từ bé đến lớn, nhân sư sẽ hỏi người chơi lần lượt từ số bé nhất, số bé thứ hai, số bé thứ ba,… đến số lớn nhất.
Ví dụ: Một dãy số gồm các biểu thức: 3+1, 3-2, 1+1, 2+3. Sau khi tính toán, dãy số đó sẽ là 4, 1, 2, 5. Nhân sư yêu cầu người chơi sắp xếp từ bé đến lớn. Nhân sư sẽ hỏi: Số thứ nhất là số nào? Câu trả lời đúng là số 1. Nếu người chơi trả lời sai, trò chơi sẽ kết thúc. Nếu người chơi trả lời đúng, nhân sư sẽ tiếp tục hỏi: Số thứ hai là số nào? Câu trả lời đúng là 2. Nếu người chơi trả lời sai, trò chơi sẽ kết thúc. Nếu người chơi trả lời đúng, nhân sư sẽ tiếp tục hỏi số thứ ba. Trò chơi tiếp tục như thế đến số cuối cùng. Nếu người chơi trả lời đúng hết thì người chơi sẽ chiến thắng.
Luật chơi tương tự với trường hợp sắp xếp từ lớn đến bé.
Thuật toán:
Chúng ta sẽ tạo một thuật toán đơn giản để có thể mô phỏng trò chơi này. Chúng ta sẽ sử dụng hai mảng. Một mảng lưu các biểu thức dưới dạng chuỗi. Mảng còn lại lưu kết quả các biểu thức đó. Ví dụ: Mảng lưu dãy các biểu thức: [‘3+1’, ‘3-2’, ‘1+1’, ‘2+3’]. Sau khi tính toán, mảng còn lại sẽ lưu kết quả dãy số đó sẽ là [4, 1, 2, 5]. Ở đây, mục đích của mảng gồm các chuỗi là dùng để in ra màn hình cho người chơi. Mảng kết quả gồm các số sẽ dùng để sắp xếp.
Trong luật chơi, nhân sư sẽ hỏi lần lượt các số theo thứ tự từ bé đến lớn (hoặc từ lớn đến bé). Vì vậy, chúng ta có thể tìm số bé nhất (hoặc lớn nhất) trong mảng. Qua mỗi lần nhân sư hỏi, chúng ta sẽ bỏ số bé nhất (hoặc lớn nhất) ra khỏi mảng, và tiếp tục tìm số bé nhất (hoặc lớn nhất) của mảng mới đến khi mảng không còn phần tử nào.
Ví dụ: Dãy gồm các biểu thức: 3+1, 3-2, 1+1, 2+3. Sau khi tính toán, dãy kết quả sẽ là 4, 1, 2, 5. Nhân sư yêu cầu người chơi sắp xếp từ bé đến lớn.
Ở lượt thứ nhất, số bé nhất là 1. Sau lượt thứ nhất, chúng ta sẽ bỏ số 1 ra khỏi mảng. Mảng mới sẽ gồm 3 số là 4, 2, 5.
Ở lượt thứ hai, số bé nhất là 2. Sau lượt thứ hai, chúng ta sẽ bỏ số 2 ra khỏi mảng. Mảng mới sẽ gồm 2 số là 4, 5.
Ở lượt thứ ba, số bé nhất là 4. Sau lượt thứ ba, chúng ta sẽ bỏ số 4 ra khỏi mảng.
Mảng mới sẽ còn lại số 5. Số 5 là số cuối cùng. Như vậy, chúng ta đã gián tiếp sắp xếp dãy số ban đầu từ bé đến lớn.
3. Code:
Bước 1: Viết hàm giới thiệu game
Trước tiên, chúng ta sẽ tạo một hàm sử dụng câu lệnh print() để in ra màn hình luật chơi cũng như giới thiệu về game:
def intro():
print('''
---
NUMBER SORTING ++
---
RULE: Nhiệm vụ của trò chơi là sắp xếp 1 dãy số lộn xộn theo thứ tự từ bé đến lớn hoặc từ lớn đến bé.
Người chơi sẽ được chọn sắp xếp bao nhiêu số trong dãy số
Đặc biệt: Các số trong dãy sẽ được cho dưới dạng các biểu thức cộng trừ, đòi hỏi chúng ta cần kĩ năng tính toán cực cao nữa đó!
''')
Ở bài số 2, chúng ta đã biết về kiểu dữ liệu chuỗi (string). Từ trước đến nay, ta đều nhận thấy dữ liệu string phải ở trong cùng 1 dòng bắt đầu và kết thúc với dấu “”. Tuy nhiên, nếu ta sử dụng ”’ ”’ (3 dấu ‘), dữ liệu chuỗi có thể gồm nhiều dòng khác nhau (multi-line string).
Bước 2: Viết câu lệnh tương tác với người dùng ở đầu game
Tương tự như dự án “Nhà thám hiểm và cánh cửa bí mật”, chúng ta sẽ tạo một vòng lặp while để hỏi người chơi muốn tiếp tục trò chơi hay dừng lại. Đồng thời chúng ta sẽ in ra luật chơi bằng cách gọi hàm intro đã viết ở bước 1. Chúng ta lưu ý để gọi hàm intro, chúng ta chỉ cần dùng intro() vì hàm không return gì cả. Chúng ta cũng sẽ tạo một biến để hỏi người chơi muốn sắp xếp bao nhiêu số bằng câu lệnh input.
condition = Truewhile condition == True:
intro()
number_guest = int(input("Bạn muốn sắp xếp bao nhiêu số nhỉ? >> "))
again = input('Bạn muốn chơi tiếp không? [Y/N]')
if again == 'N':
condition = False
Bước 3: Viết hàm tạo dãy số ngẫu nhiên
Trò chơi sẽ gồm bốn loại biểu thức: a+b, a-b, a+b-c, a-b+c. a, b, c là các số nguyên ngẫu nhiên từ 1 đến 60. Chúng ta sẽ sử dụng câu lệnh random.randint(1,60) tương tự như dự án “Nhà thám hiểm và cánh cửa bí mật”. Mỗi biểu thức trong dãy số sẽ được chọn ngẫu nhiên từ bốn loại biểu thức bằng câu lệnh random.choice tương tự như dự án “Câu chuyện ngẫu nhiên”.
Chúng ta sẽ sử dụng hai mảng raw_list1 và raw_list2. Mảng raw_list1 lưu biểu thức dưới dạng chuỗi và mảng raw_list2 lưu kết quả của biểu thức. Ở bài số 3, chúng ta đã biết câu lệnh append dùng để lưu dữ liệu vào mảng. Ngoài ra để đổi số thành chuỗi chúng ta sẽ sử dụng hàm str. Để kết nối hai chuỗi, chúng ta sẽ sử dụng phép toán +. Ngoài ra chúng ta cũng không muốn các số trong dãy số lặp lại nên sẽ dùng câu lệnh notin để kiểm tra. “Not in” có nghĩa là không ở trong cái gì đó.
Chúng ta sẽ tạo hai mảng trống rawlist1 và rawlist2. Để dãy số có đủ số mà người chơi muốn sắp xếp, chúng ta sẽ sử dụng vòng lặp while và biến đếm i. Chúng ta sẽ đặt tên cho hàm tạo dãy số ngẫu nhiên là prep. Hàm nhận vào số biểu thức người chơi muốn sắp xếp và trả về hai mảng:
def prep(number_sort):
rawlist1 = []
rawlist2 = []
i = 0
while i < number_sort:
a = random.randint(1,60)
b = random.randint(1,60)
c = random.randint(1,60)
options = ["a+b", "a-b", "a+b-c", "a-b+c"]
option = random.choice(options)
if option == 'a+b' and a+b not in rawlist1:
rawlist1.append(str(a)+ ' + '+ str(b))
rawlist2.append(a+b)
elif option == 'a-b' and a-b not in rawlist2:
rawlist1.append(str(a)+ ' - '+ str(b))
rawlist2.append(a-b)
elif option == 'a+b-c' and a+b-c not in rawlist2:
rawlist1.append(str(a) + "+" + str(b) + "-" + str(c))
rawlist2.append(a+b-c)
elif option == 'a-b+c' and a-b+c not in rawlist2:
rawlist1.append(str(a) + "-" + str(b) + "+" + str(c))
rawlist2.append(a-b+c)
i = i + 1
return rawlist1, rawlist2
Bước 4: Viết hàm trả về số bé nhất (hoặc lớn nhất)
Chúng ta sẽ sử dụng hai hàm có sẵn ở trong Python. Hàm min dùng để tìm số bé nhất trong mảng và hàm max để tìm số lớn nhất trong mảng. Chúng ta sẽ đặt tên hàm cần viết là sorting. Hàm nhận vào mảng (dãy số) và kiểu sắp xếp. Kiểu sắp xếp nhận một trong hai giá trị: 0 (sắp xếp từ bé đến lớn) hoặc 1 (sắp xếp từ lớn đến bé). Hàm trả về số bé nhất (hoặc lớn nhất) tương ứng với cách sắp xếp.
Sau khi hỏi người chơi muốn sắp xếp bao nhiêu số, chúng ta sẽ chọn ngẫu nhiên cách sắp xếp bằng sử dụng câu lệnh random.randint(0,1). Nếu kết quả là 0 thì sắp xếp từ bé đến lớn. Nếu kết quả là 1 thì sắp xếp từ lớn đến bé.
Chúng ta sẽ gọi hàm prep để tạo dãy số ngẫu nhiên đã viết ở bước 2. Chúng ta sẽ in ra màn hình mảng gồm các biểu thức cần sắp xếp và cách thức sắp xếp.
import random
condition = Truewhile condition == True:
intro()
number_guest = int(input('Bạn muốn sắp xếp bao nhiêu số ? >>'))
sort_type = random.randint(0,1)
raw_list1, raw_list2 = prep(number_guest)
if sort_type == 0:
print('Sắp xếp dãy số theo thứ tự từ bé đến lớn: ' + str(raw_list1))
else:
print('Sắp xếp dãy số theo thứ tự từ lớn đến bé: ' + str(raw_list1))
again = input('Bạn có muốn chơi tiếp không? [Y/N]')
if again == 'N':
condition = False
Chúng ta sẽ tạo một vòng lặp while với biến đếm counter để đi qua số lượt nhân sư sẽ hỏi người chơi (bằng với số phần tử của mảng). Với mỗi lượt hỏi, chúng ta sẽ thực hiện ba công việc:
Tìm số bé nhất (hoặc lớn nhất) trong mảng.
Hỏi người chơi xem số tiếp theo trong dãy sau khi được sắp xếp là số nào. Kiểm tra đúng hay sai. Nếu đúng thực hiện bước tiếp theo. Nếu sai thoát khỏi vòng lặp.
Bỏ số tìm được ở công việc đầu tiên ra khỏi mảng.
Để tìm số lớn nhất (bé nhất), chúng ta sử dụng hàm đã viết ở bước 3. Chúng ta sử dụng câu lệnh điều kiện giống như thuật toán Cánh cửa bí mật ở bài số 2 để kiểm tra người chơi có nhập đúng số không. Để bỏ một số ra khỏi mảng, chúng ta sẽ sử dụng hàm remove:
turn = len(raw_list2)
counter = 0
while counter < turn:
number = sorting(raw_list2, sort_type)
guess = int(input('Sau khi sắp xếp, số ở vị trí số '+ str(counter + 1) + ' là: >>'))
if guess == int(number):
if counter == turn - 1:
print('Chúc mừng chiến thắng')
else:
print('Đúng rồi! Tiếp tục nào!')
else:
print('Bạn đã thua, câu trả lời là ' + str(number))
break
raw_list2.remove(number)
counter = counter + 1
4. Tada!!!
Như vậy chúng ta đã hoàn thành xong một game rất thú vị đúng không nào. Các bạn học sinh đã thành công áp dụng kiến thức về hàm đã học ở bài số 4 để viết một thuật toán sắp xếp một dãy số. Ngoài ra, chúng ta cũng biết thêm một số hàm mới có sẵn trong Python giúp chúng ta code thuận tiện hơn
Chương trình Python hoàn chỉnh của game sẽ là:
# -*- coding: utf-8 -*-
import random
def intro():
print('''
---
NUMBER SORTING ++
---
RULE: Nhiệm vụ của trò chơi là sắp xếp 1 dãy số lộn xộn theo thứ tự từ bé đến lớn hoặc từ lớn đến bé.
Người chơi sẽ được chọn sắp xếp bao nhiêu số trong dãy số
Đặc biệt: Các số trong dãy sẽ được cho dưới dạng các biểu thức cộng trừ, đòi hỏi chúng ta cần kĩ năng tính toán cực cao nữa đó!
''')
def prep(number_sort):
rawlist1 = []
rawlist2 = []
i = 0
while i < number_sort:
a = random.randint(1,60)
b = random.randint(1,60)
c = random.randint(1,60)
options = ["a+b", "a-b", "a+b-c", "a-b+c"]
option = random.choice(options)
if option == 'a+b' and a+b not in rawlist1:
rawlist1.append(str(a)+ ' + '+ str(b))
rawlist2.append(a+b)
elif option == 'a-b' and a-b not in rawlist2:
rawlist1.append(str(a)+ ' - '+ str(b))
rawlist2.append(a-b)
elif option == 'a+b-c' and a+b-c not in rawlist2:
rawlist1.append(str(a) + "+" + str(b) + "-" + str(c))
rawlist2.append(a+b-c)
elif option == 'a-b+c' and a-b+c not in rawlist2:
rawlist1.append(str(a) + "-" + str(b) + "+" + str(c))
rawlist2.append(a-b+c)
i = i + 1
return rawlist1, rawlist2
def sorting(arr, sort_type):
if sort_type == 0:
return min(arr)
else:
return max(arr)
condition = True
while condition == True:
intro()
number_guest = int(input('Bạn muốn sắp xếp bao nhiêu số ? >>'))
sort_type = random.randint(0,1)
raw_list1, raw_list2 = prep(number_guest)
if sort_type == 0:
print('Sắp xếp dãy số theo thứ tự từ bé đến lớn: ' + str(raw_list1))
else:
print('Sắp xếp dãy số theo thứ tự từ lớn đến bé: ' + str(raw_list1))
turn = len(raw_list2)
counter = 0
while counter < turn:
number = sorting(raw_list2, sort_type)
guess = int(input('Sau khi sắp xếp, số ở vị trí số '+ str(counter + 1) + ' là: >>'))
if guess == int(number):
if counter == turn - 1:
print('Chúc mừng chiến thắng')
else:
print('Đúng rồi! Tiếp tục nào!')
else:
print('Bạn đã thua, câu trả lời là ' + str(number))
break
raw_list2.remove(number)
counter = counter + 1
again = input('Bạn có muốn chơi tiếp không? [Y/N]')
if again == 'N':
condition = False
Các bạn học sinh hãy tự do sáng tạo theo những ý tưởng của riêng mình. Chúng ta có rất nhiều cách để cải tiến game khác lạ hơn. Thầy cô gợi ý các bạn có thể sắp xếp dãy số bằng hàm có sẵn trong Python là sorted. Sắp xếp dãy số trước khi hỏi người chơi sẽ giúp chương trình chúng ta chạy nhanh hơn. Ngoài ra, các bạn có thể thêm vào những loại biểu thức khác nhau, và thêm phép tính nhân, chia. Các bạn học sinh hãy thử tạo nên dự án của riêng mình và chia sẻ game của mình trên STEAMese Profile nhé!
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Mã hoá là phương pháp để biến thông tin (hình ảnh, văn bản) từ định dạng bình thường sang dạng thông tin mà chúng ta không thể hiểu được nếu không có phương tiện giải mã. Đồng thời, mã hoá có vai trò quan trọng trong giao dịch điện tử để đảm bảo độ bảo mật, toàn vẹn của thông tin khi truyền trên mạng. Thông thường, mã hóa được áp dụng nhiều trong các ví điện tử quen thuộc với chúng ta như Momo, Zalopay, Shopee Pay….Trái lại, giải mã là quá trình ngược của mã hoá, biến thông tin từ dạng được mã hoá về dạng thông tin ban đầu.
Mật mã Caesar là một dạng mật mã thay thế, trong đó mỗi ký tự ở văn bản ban đầu sẽ được thay thế bằng một ký tự khác, có vị trí cách nó một khoảng xác định trong bảng chữ cái. Cũng giống như các loại mật mã thay thế khác, mật mã Caesar rất dễ bị phá giải. Tuy nhiên đây là một bài toán hay để chúng ta áp dụng kiến thức đã học về “vòng lặp” và “mảng” ở bài 3 của khoá CS 101. Hãy thử tưởng tượng các bạn muốn kể một câu chuyện bí mật cho người bạn thân của mình. Để bảo mật câu chuyện riêng tư không bị lộ ra ngoài, chúng ta cần mã hóa câu chuyện và gửi cho bạn mình kèm với phương pháp giải mã. Cách làm này hết sức thú vị phải không nào!
Người đã sáng chế ra cách mã hóa Caesar thú vị là vị hoàng đế Julius Caesar. Kỹ thuật này đã được phát triển vào khoảng năm 100 Trước Công nguyên. Hoàng đế Caesar đã dùng nó để gửi những mệnh lệnh quan trọng cho những tướng sĩ trên chiến trường. Do đó, nếu bọn giặc có bắt được người truyền tin thì cũng không thể đọc và hiểu được nội dung của bức thư mã hóa đó. Kiến thức này thật sự rất hữu ích và được áp dụng cho tới ngày hôm nay.
Kiến thức lập trình:
Một số kiến thức chúng ta đã được học ở bài 3 của khoá CS 101 sẽ được áp dụng để hoàn thành chương trình mã hoá này:
Mảng và cách lấy phần tử của mảng trong Python.
Vòng lặp for và while trong Python.
Câu lệnh input() để nhập dữ liệu trong Python.
Câu lệnh print() để in thông báo ra màn hình.
Kiểu dữ liệu booleantrong Python với so sánh ==.
Bài toán:
Chúng ta sẽ sử dụng Thonny để xây dựng một chương trình vừa giúp mã hoá, vừa giúp giải mã Caesar. Chương trình sẽ cho người dùng nhập một câu muốn mã hoá và số ký tự muốn dịch chuyển trong bảng chữ cái (k). Số k dương sẽ dịch chuyển văn bản sang phải (theo thứ tự từ A sang Z). Số k âm sẽ dịch chuyển văn bản sang trái (theo thứ tự từ Z sang A).
Ví dụ 1:
Văn bản gốc (Văn bản chưa mã hóa): ABCDEF
Văn bản mã hóa: CDEFGH
Trong ví dụ trên, các kí tự trong văn bản gốc được mã hóa bằng cách dịch sang phải 2 kí tự. k=2.
Gốc
A
B
C
D
E
F
…
X
Y
Z
Mã hóa
C
D
E
F
G
H
…
Z
A
B
Vì được dịch sang phải 2 ký tự nên A được mã hóa thành C, B mã hóa thành D… Đặc biệt, Y được mã hóa thành A, Z được mã hóa thành B, quay lại các ký tự đầu tiên.
Ví dụ 2:
Văn bản gốc (Văn bản chưa mã hóa): ABCDEF
Văn bản mã hóa: YZABCD
Trong ví dụ trên, các kí tự trong văn bản gốc được mã hóa bằng cách dịch sang trái 2 kí tự. k=-2.
Gốc
A
B
C
D
E
F
…
X
Y
Z
Mã hóa
Y
Z
A
B
C
D
…
U
V
X
Vì được dịch sang trái 2 ký tự nên C được mã hóa thành A, D mã hóa thành B… Đặc biệt, A được mã hóa thành Y, B được mã hóa thành Z, quay lại các ký tự cuối cùng.
Chúng ta có thể thấy rằng k âm là phương pháp giải mã cho mã hoá với k dương và ngược lại.
Trước khi bắt tay vào viết code, chúng ta sẽ cùng suy nghĩ một thuật toán để giải quyết bài toán này nhé. Chúng ta có thể biểu diễn tất cả các ký tự trong bảng chữ cái bằng một mảng trong Python.
Mảng arr có 26 phần tử. Với một ký tự bất kỳ, chúng ta có thể tìm được vị trí (index) i của nó trong mảng. Do đó khi dịch chuyển ký tự đó sang phải k kí tự, vị trí mới sẽ là i + k. Nếu dịch chuyển ký tự đó sang trái k kí tự thì khi đó k < 0 nên vị trí mới vẫn sẽ là i + k.
Trong trường hợp chúng ta dịch chuyển qua hai đầu của bảng chữ cái thì sao nhỉ? Ví dụ: Ký tự ‘X’ ở vị trí 23 trong mảng. Khi dịch chuyển sang phải 3 ký tự, vị trí mới sẽ là 23 + 3 = 26. Tuy nhiên vị trí cuối cùng của mảng arr là 25. Do đó, chúng ta phải quay lại vị trí đầu tiên (0) của ký tự ‘A’. Trong trường hợp này, khi dịch chuyển, chúng ta đã đi hết 1 lượt mảng arr. Chúng ta có thể thấy công thức tính vị trí sau khi dịch chuyển là 23 + 3 – 26 * 1 = 0.
Lấy một ví dụ khác: Ký tự ‘X’ ở vị trí 23 trong mảng. Khi dịch chuyển sang trái 80 ký tự, vị trí mới sẽ là 23 – 80 = -57. Từ vị trí ký tự ‘X’, nếu dịch sang trái 23 ký tự, chúng ta sẽ đến vị trí của ký tự ‘A’. Như vậy, chúng ta đã đi hết 1 lượt mảng arr. Từ vị trí ký tự ‘A’, dịch tiếp sang trái 26 ký tự, chúng ta sẽ đi hết một lượt nữa mảng arr và quay lại vị trí ký tự ‘A’. Tiếp tục dịch sang trái 26 ký tự, chúng ta sẽ tiếp tục đi hết một lượt nữa mảng arr và quay lại vị trí ký tự ‘A’. Chúng ta còn phải dịch sang trái 5 ký tự nữa. Như vậy chúng ta sẽ đến vị trí ký tự ‘V’. Tóm lại, chúng ta đã đi hết 3 lượt mảng arr. Chúng ta có thể thấy công thức tính vị trí sau khi dịch chuyển là 23 – 80 + 26 * 3 = 21.
Để tính xem phải đi qua mảng arr bao nhiêu lần, chúng ta có thể sử dụng phép toán floor division trong Python. Floor division trong Python là //. Floor division sẽ trả về số nguyên lớn nhất bé hơn kết quả của phép chia thông thường. Ví dụ: Với phép chia thông thường, chúng ta có 3 / 2 = 1,5. Tuy nhiên với floor division, 3 // 2 = 1, bởi vì 1 là số nguyên lớn nhất bé hơn 1,5. Lấy một ví dụ khác: Với phép chia thông thường, -57 / 26 = -2,19. Tuy nhiên với floor division, -57 // 26 = -3, bởi vì -3 là số nguyên lớn nhất bé hơn -2,19.
Tổng kết lại, nếu chúng ta ở vị trí i trong mảng arr và chúng ta dịch k ký tự, công thức tính vị trí sau khi dịch chuyển là i + k – 26 * ((i + k) // 26).
b. Code:
Bước 1: Viết các câu lệnh khai báo cần thiết
Chúng ta sử dụng câu lệnh input() để hỏi người dùng khi nào muốn dừng trò chơi và vòng lặp while để tiếp tục trò chơi tương tự như trò chơi Nhà thám hiểm và cánh cửa bí mật ở bài 2. Chúng ta cũng tạo mảng arr để lưu bảng chữ cái:
arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
tiep = 'y'
while tiep == 'y':
tiep = input('Nhập y để tiếp tục hoặc n để thoát: ')
Trong vòng lặp while, chúng ta sẽ sử dụng câu lệnh input()để yêu cầu người dùng nhập câu cần mã hóa và số ký tự muốn dịch chuyển. Chúng ta cần tạo biến để lưu chuỗi sau khi được mã hoá:
plaintext = str(input("Bạn hãy nhập câu muốn mã hoá: ")).upper()
jump = int(input("Bạn muốn dịch sang mấy ký tự? "))
t = ''
Để đơn giản, chúng ta sẽ sử dụng câu lệnh .upper() để in hoa tất cả các ký tự trong câu người dùng nhập vào. Code hoàn chỉnh sẽ là:
arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
tiep = 'y'
while tiep == 'y':
plaintext = str(input("Bạn hãy nhập câu muốn mã hoá: ")).upper()
jump = int(input("Bạn muốn dịch sang mấy ký tự? "))
t = ''
tiep = input('Nhập y để tiếp tục hoặc n để thoát: ')
Bước 2: Xác định vị trí của ký tự trong mảng arr:
Một câu được biểu diễn bằng kiểu dữ liệu chuỗi (string) trong Python. Chúng ta đã được học ở bài 3, một chuỗi là một mảng mà phần tử là các ký tự trong chuỗi. Ví dụ: chuỗi “STEAM” là một mảng gồm 5 phần tử “S”, “T”, “E”, “A”, “M”. Như vậy để lấy các ký tự từ chuỗi, chúng ta có thể sử dụng vòng lặp for:
for character in plaintext:
print(character)
Chúng ta có thể sử dụng câu lệnh print để debug. Trong vòng lặp for, để lấy ra vị trí của ký tự ở trong mảng arr, chúng ta sử dụng thêm vòng lặp while với biến i để lưu vị trí của ký tự trong mảng. Biến i bắt đầu từ 0 và sẽ được cập nhật trong vòng lặp để đi đến vị trí mới trong mảng arr. Chúng ta sử dụng câu lệnh if để kiểm tra xem phần tử ở vị trí i trong mảng arr có giống với ký tự trong chuỗi không. Nếu giống, chúng ta sẽ break. Chúng ta vẫn có thể sử dụng câu lệnh print để debug:
i = 0
while i < len(arr):
if character == arr[i]:
print('Giống')
break
i = i + 1
Code hoàn chỉnh sẽ là:
arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
tiep = 'y'
while tiep == 'y':
plaintext = str(input("Bạn hãy nhập câu muốn mã hoá: ")).upper()
jump = int(input("Bạn muốn dịch sang mấy ký tự? "))
t = ''
for character in plaintext:
i = 0
while i < len(arr):
if character == arr[i]:
print('Giống')
break
i = i + 1
tiep = input('Nhập y để tiếp tục hoặc n để thoát: ')
Bước 3: Mã hoá ký tự:
Sau khi xác định được vị trí i của một ký tự trong chuỗi, chúng ta sẽ sử dụng công thức tìm vị trí mới ở trong phần thuật toán để xác định ký tự sau khi mã hoá:
Ngoài ra, chúng ta sẽ thêm một trường hợp. Nếu ký tự là khoảng trắng thì ký tự sau khi mã hoá cũng sẽ là khoảng trắng:
elif character == ' ':
character_code = ' '
Code hoàn chỉnh sẽ là:
arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
tiep = 'y'
while tiep == 'y':
plaintext = str(input("Bạn hãy nhập câu muốn mã hoá: ")).upper()
jump = int(input("Bạn muốn dịch sang mấy ký tự? "))
t = ''
for character in plaintext:
i = 0
while i < len(arr):
if character == arr[i]:
character_code = arr[i + jump - len(arr) * ((i + jump) // len(arr))]
breakelif character == ' ':
character_code = ' '
i = i + 1
tiep = input('Nhập y để tiếp tục hoặc n để thoát: ')
Bước 4: Kết nối các ký tự sau khi mã hoá thành chuỗi:
Các ký tự trong chuỗi có thể được xem như một chuỗi con. Để kết nối hai chuỗi thành một chuỗi, chúng ta sử dụng +:
t = t + character_code
Ở bước 1, chúng ta đã sử dụng biến t để lưu câu sau khi được mã hoá. Cuối cùng, chúng ta sẽ in ra câu sau khi được mã hoá:
print('Câu sau khi được mã hoá là: %s' % t)
Chúng ta sử dụng %s để thêm vào một biến có kiểu dữ liệu chuỗi vào câu lệnh print. Ngoài ra chúng ta sẽ thêm % cùng với tên biến.
5. Tada!!!
Như vậy, các bạn học sinh đã hoàn thành xong game giúp mã hoá và giải mã Caesar nhanh chóng rồi đấy. Tuy quá trình làm game không ít khó khăn nhưng chắc chắn thành quả của các bạn rất hữu ích để áp dụng ngay trong cuộc sống. Chúng ta hoàn toàn có thể sử dụng chương trình này để mã hoá ngay một câu đố và đem cho mọi người đau đầu giải mã.
Chương trình Python hoàn chỉnh của game sẽ là:
# -*- coding: utf-8 -*-
arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
tiep = 'y'
while tiep == 'y':
plaintext = str(input("Bạn hãy nhập câu muốn mã hoá: ")).upper()
jump = int(input("Bạn muốn dịch sang mấy ký tự? "))
t = ''
for character in plaintext:
i = 0
while i < len(arr):
if character == arr[i]:
character_code = arr[i + jump - len(arr) * ((i + jump) // len(arr))]
breakelif character == ' ':
character_code = ' '
i = i + 1
t = t + character_code
print('Câu sau khi được mã hoá là: %s' % t)
tiep = input('Nhập y để tiếp tục hoặc n để thoát: ')
Có rất nhiều cách chúng ta có thể cải tiến game này. Các bạn hãy nghĩ một cách nào đó chúng ta có thể loại bỏ vòng lặp while sử dụng để đi qua các phần tử trong mảng arr. Ngoài ra, các bạn có thể cải tiến game bằng cách mã hoá cả chữ hoa và chữ thường, chứ không cần phải chuyển hết sang chữ hoa.
Không chỉ vậy, thầy Harry và thầy Đức có một gợi ý hữu ích cho các bạn học sinh. Nếu chúng ta còn nhớ trong bài Vui học cùng thầy cô 1, thầy Đức đã giới thiệu cho chúng ta bảng mã ASCII. Trong bảng mã ASCII cũng có hai bảng chữ cái in hoa và in thường đấy. Chúng ta có thể chuyển một ký tự sang mã ASCII bằng câu lệnh ord() và chuyển từ mã ASCII về lại ký tự bằng câu lệnh chr(). Sau đó, chúng ta có thể chuyển từ số trong bảng mã ASCII thành vị trí của một phần tử trong mảng arr. Các bạn hãy cùng thử nhé!
Một gợi ý nữa để cải tiến game đó là chúng ta có thể sử dụng phép toán % trong Python để tính số lần chúng ta đi hết mảng arr. Phép toán này giúp chúng ta tìm số dư trong một phép chia. Ví dụ: 3 % 2 = 1.
Nhờ áp dụng ngay kiến thức của bài 3 khoá CS 101, bạn Đức Hoàng đã tạo ra được game “Mã hóa Caesar” hết sức thú vị và thực tế. Các bạn học sinh cũng hãy thử bắt tay vào sáng tạo một game cho riêng mình nhé! Sau khi hoàn thành game, các bạn có thể chia sẻ game của mình trên STEAMese Profile.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.