1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình python đề tài phân tích kết quả từ game sudoku ứng dụng framework django

23 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân tích kết quả từ game Sudoku ứng dụng framework Django
Tác giả Đặng Minh Thiện, Nguyễn Lương Huy, Nguyễn Quốc Thái
Người hướng dẫn Ts. Nguyễn Văn Thành
Trường học Trường Đại học Sư phạm Kỹ thuật TP. HCM
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 23
Dung lượng 3,62 MB

Nội dung

Điều này đã khuyến khích chúng em tìm kiếm cơ hội để áp dụng kiến thức đã học vào một đồ án thực tế.Trong bối cảnh đó, lựa chọn của chúng em là tạo một đồ án sử dụng dữ liệu từ trò chơi

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM

KHOA CÔNG NGHỆ THÔNG TIN

TÊN HỌC PHẦN: Lập trình Python

ĐỀ TÀI: PHÂN TÍCH KẾT QUẢ TỪ GAME SUDOKU ỨNG DỤNG FRAMEWORK DJANGO

GVHD: Ts Nguyễn Văn Thành Sinh viên thực hiện:

Mã học phần:

Tháng 11 năm 2023

Trang 2

BẢNG PHÂN CÔNG NHIỆM VỤ

THỨ

Trang 3

MỤC LỤC

Trang 4

MỞ ĐẦU

Trong thời đại công nghiệp 4.0 ngày nay, việc sử dụng lập trình để phân tích dữ liệu không chỉ là xu hướng mà còn là kỹ năng quan trọng đối với nhiều ngành nghề Trong quá trình học môn lập trình Python, chúng em thấy rõ về sức mạnh và linh hoạt của ngôn ngữ này trong việc xử lý và phân tích dữ liệu Điều này đã khuyến khích chúng em tìm kiếm cơ hội để áp dụng kiến thức đã học vào một đồ án thực tế.Trong bối cảnh đó, lựa chọn của chúng em là tạo một đồ án sử dụng dữ liệu từ trò chơi Sudoku và áp dụng framework Django để phân tích các thuộc tính có thể ảnh hưởng đến kết quả của trò chơi Sudoku không chỉ là một trò chơi giải đố logic phổ biến mà còn cung cấp một lượng lớn dữ liệu về cách người chơi tiếp cận và giải quyết vấn đề

Bằng cách này, đồ án không chỉ là một cơ hội để áp dụng kiến thức lập trình Python mà còn là một cơ hội để nghiên cứu sâu hơn về cách con người giải quyết vấn

đề và ra quyết định trong môi trường trò chơi Chúng em hy vọng rằng thông qua việc phân tích dữ liệu từ trò chơi Sudoku, đồ án sẽ giúp chúng em hiểu rõ hơn về quy trình

ra quyết định, cũng như cung cấp cái nhìn tổng quan về khả năng giải quyết vấn đề củangười chơi Sudoku

Sau cùng nhóm em lựa chọn đề tài: “Phân tích kết quả từ game Sudoku ứng dụng framework Django” để khám phá và phân tích dữ liệu trong trò chơi Sudoku thông qua framework Django, để có cái nhìn chi tiết và độc đáo về cách mà lập trình Python có thể được ứng dụng trong lĩnh vực giải đố logic và khoa học dữ liệu

Trang 5

-Khai báo chuỗi: Chuỗi được khai báo bằng cách đặt các ký tự trong dấu nháy đơn hoặc dấu nháy kép.

Trang 6

-Truy cập phần tử trong chuỗi: Các phần tử trong chuỗi có thể được truy cập bằng chỉ số, bắt đầu từ 0.

-Cắt chuỗi (slicing): Cắt chuỗi là quá trình lấy một phần của chuỗi dựa trên mộtphạm vi chỉ định

-Độ dài của chuỗi: Độ dài của một chuỗi là số lượng ký tự trong chuỗi đó.-Ghép chuỗi: Hai chuỗi có thể được ghép lại với nhau bằng toán tử "+".-Thay thế phần của chuỗi: Phương thức replace() được sử dụng để thay thế một phần của chuỗi bằng một giá trị khác

-Tách chuỗi thành danh sách: Phương thức split() được sử dụng để tách chuỗi thành một danh sách các phần tử dựa trên một ký tự phân tách

-Định dạng chuỗi: Chuỗi có thể được định dạng bằng cách sử dụng các phương thức như format() hoặc f-strings

Minh họa:

1.1.3 Lệnh

Trong Python, lệnh là các câu lệnh hoặc đoạn mã được sử dụng để thực hiện các hành động cụ thể

Trang 7

-Lệnh gán (Assignment statement): Lệnh gán được sử dụng để gán giá trị cho một biến.

-Lệnh điều kiện (Conditional statement): Lệnh điều kiện được sử dụng để thực hiện các hành động khác nhau dựa trên một điều kiện

-Lệnh lặp (Loop statement): Lệnh lặp được sử dụng để lặp lại một khối mã nhiều lần

Minh họa:

1.1.4 Function

Trang 8

Trong lập trình, hàm là một khối mã được đặt tên và có thể được gọi để thực hiện một tác vụ cụ thể Định nghĩa hàm giúp tái sử dụng mã và tạo ra các khối lệnh có cấu trúc trong chương trình

- Cú pháp định nghĩa hàm: Để định nghĩa một hàm, sử dụng từ khóa def, sau đó

là tên hàm và dấu ngoặc đơn chứa các tham số (nếu có) Sau đó, dòng tiếp theo là khối

mã trong thân hàm được thụt lề

- Gọi hàm: Để gọi một hàm, chỉ cần sử dụng tên hàm và truyền các đối số tương ứng (nếu có) vào trong dấu ngoặc đơn

Minh họa:

1.1.5 List: Danh sách

Trong Python, danh sách là một kiểu dữ liệu dùng để lưu trữ và quản lý tập hợp các phần tử Danh sách là một cấu trúc dữ liệu có thể thay đổi (mutable) và cho phép lưu trữ các phần tử có cùng hoặc khác kiểu dữ liệu Để tạo một danh sách trong Python, chúng ta sử dụng dấu ngoặc vuông và các phần tử của danh sách được phân tách bằng dấu phẩy

Minh họa:

Trang 9

Minh họa:

1.1.7 Tập hợp: Set

Trong Python, set (tập hợp) là một kiểu dữ liệu được sử dụng để lưu trữ một tậphợp các phần tử duy nhất và không có thứ tự Set trong Python được triển khai dựa trên cấu trúc dữ liệu tập hợp trong toán học Để tạo một set trong Python, chúng ta sử dụng dấu ngoặc nhọn {} hoặc hàm set()

Minh họa:

Trang 10

1.1.8 Từ điển: Dictionary

Trong Python, dictionary (từ điển) là một kiểu dữ liệu được sử dụng để lưu trữ các cặp key-value (khóa-giá trị) không có thứ tự Dictionary trong Python được triển khai dựa trên cấu trúc dữ liệu bảng băm (hash table) Để tạo một dictionary trong Python, chúng

ta sử dụng dấu ngoặc nhọn {} hoặc hàm dict() và cung cấp các cặp key-value trong dấu ngoặc đơn hoặc dấu ngoặc nhọn

Minh họa:

Trang 11

nó giống như các constructor, và nó sẽ được gọi ra đầu tiên khi chúng ta import package đó.

Minh họa:

1.1.11 Lớp

Trong Python, lớp (class) là một cấu trúc dữ liệu trong hướng đối tượng (Object-Oriented Programming - OOP) cho phép bạn định nghĩa các đối tượng mới với thuộc tính (attributes) và phương thức (methods) riêng Lớp là một bản thiết kế (template) cho các đối tượng, và từ lớp, bạn có thể tạo ra nhiều đối tượng (instances) khác nhau

Trang 12

Minh họa:

1.1.12 Xử lý ngoại lệ

Xử lý ngoại lệ (exception handling) là một kỹ thuật trong lập trình cho phép bạnứng phó với các tình huống bất thường (ngoại lệ) xảy ra trong quá trình thực thi chương trình Khi một ngoại lệ xảy ra, nó sẽ "ném" (throw) một đối tượng ngoại lệ và dừng thực thi bình thường của chương trình Bằng cách sử dụng xử lý ngoại lệ, bạn có thể kiểm soát và xử lý các ngoại lệ này một cách cụ thể

Trong Python, xử lý ngoại lệ được thực hiện bằng cách sử dụng các khối except

Minh họa:

Trang 13

Minh họa:

1.2.3 Matplotlib

Matplotlib là một thư viện trực quan hóa dữ liệu phổ biến trong ngôn ngữ lập trình Python Nó cung cấp các công cụ mạnh mẽ để tạo ra các biểu đồ, sơ đồ và hình ảnh để trực quan hóa dữ liệu một cách dễ dàng và linh hoạt Một số khái niệm và tính năng quan trọng của Matplotlib:

-Figure và Axes: Figure là một khung chứa tất cả các thành phần của một biểu

đồ hoặc hình ảnh Trong một Figure, bạn có thể chứa nhiều Axes (khu vực trục) - nơi

thực sự vẽ các đồ thị và sơ đồ Axes cung cấp các phương thức để tạo các loại biểu đồ khác nhau và tùy chỉnh các thành phần của chúng

Trang 14

Minh họa:

1.2.4 Random

Thư viện random trong Python cung cấp các chức năng để sinh số ngẫu nhiên

và thực hiện các thao tác ngẫu nhiên khác Nó giúp tạo ra ngẫu nhiên số nguyên, số thực, chuỗi, và lựa chọn ngẫu nhiên từ danh sách

Minh họa:

1.2 Các khái niệm cơ bản về framework Django

Trang 15

CHƯƠNG 2 ỨNG DỤNG DJANGO TẠO TRÒ CHƠI SUDOKU ĐƠN GIẢN

1 Giới thiệu sơ lược về logic trò chơi Sudoku

Trò chơi xuất phát từ hai chế độ lựa chọn, bảng 4x4 hoặc bảng 9x9, ở mỗi chế

độ sẽ có các điểm khác và giống nhau như sau

*Giống nhau:

- Độ khó khi chơi: dễ( easy) – khó( hard) – trung bình( medium)

- Nút bắt đầu( start game), nút làm mới( new game), nút trợ giúp( with help),

- Cách chơi là làm sao điền vào số thích hợp ở ô trống phù hợp với luật chơiSudoku

*Khác nhau:

- Với bảng 4x4, thời gian chơi giới hạn là 2 phút

- Với bảng 9x9, thời gian chơi giới hạn là 7 phút

2 Sơ đồ tổng quát của trò chơi Sudoku

Giải thích sơ đồ: Trò chơi được phát triển hoàn toàn trên Django framework

được liên kết với cơ sở dữ liệu

3 Lập trình và chi tiết các tập tin

DJANGO

Trang 16

3.1 Giao diện( view) Trang login:

Trang 4x4:

Trang 17

Trang 9x9:

3.2 Mã xử lý( controller)

- urls.py( toàn đồ án)

from django.contrib import admin

from django.urls import path include ,

urlpatterns [ =

path( ' admin/ ' , admin.site.urls),

path( ' home/ ' , include( ' home.urls ' ))

]

- urls.py( một ứng dụng( app) )

from django.urls import path

from import views

urlpatterns [ =

path( , views index2),

path( ' 4x4 ' , views index),

path( ' 9x9 ' , views index1),

Trang 18

- views.py

from django.shortcuts import render

from django.http import HttpResponse

from django.http import JsonResponse

from django.views.decorators.csrf import csrf_exempt from models import gameplayer_info

from django.core.cache import cache

def save_info_first( request ):

if request method == ' POST ' :

try :

# Parse JSON data from the request infoFirst json = loads(request.body) cache set( ' info_script ' , infoFirst)

return JsonResponse ({ ' status ' : ' success ' }) except Exception e: as

return JsonResponse ({ ' status ' : ' error ' , ' message ' :

str (e)})

return JsonResponse ({ ' status ' : ' error ' , ' message ' ' : Invalid request method ' })

@csrf_exempt

def save_player( request ):

if request method == ' POST ' :

try :

# Parse JSON data from the request player_data json = loads( request body) # Lấ< y dữ liệu từ cache sửA dụng tên khóa 'my_custom_key_for_script1'

infoFirst cache = get( ' info_script ' , {}) # Save player data to the database

combined_data { = ** infoFirst, player_data} ** print(combined_data)

player = gameplayer_info (**combined_data) player.save()

return JsonResponse ({ ' status ' : ' success ' })

Trang 19

from django.http import JsonResponse

from django.views.decorators.csrf import csrf_exempt

from django.core.cache import cache

@csrf_exempt

def send_data_to_script( request ):

try :

# Lấ< y dữ liệu từ cache

data_name cache = get( ' info_script ' , {})

data_to_send data_name.get( = ' name ' '' )

print(data_to_send)

# GửA i dữ liệu dửới dạng JSON trong HTTP response

return JsonResponse ({ ' status ' : ' success ' ' , value ' :

data_to_send})

except Exception e: as

return JsonResponse ({ ' status ' : ' error ' , ' message ' : str (e)})

- models.py

from django.db import models

# Create your models here.

class gameplayer_info ( models Model ):

age models = IntegerField ()

bdate models = DateField ()

gmail models = TextField ()

level models = TextField ()

name models = TextField ()

sex models = TextField ()

time_now models = IntegerField ()

time_play models = IntegerField ()

Đó là các tệp mã được viết bằng python của đồ án, ngoài ra còn các mã viết bằng HTML, CSS, JAVASCRIPT, dùng để tạo giao diện và hoạt động của trò chơi Toàn bộ

mã em xin được để ở link github phía dưới

3.3 Mã nguồn của đồ án

Trang 20

- Link github:

Trang 21

CHƯƠNG 3

SỬ DỤNG PYTHON PHÂN TÍCH TẬP DỮ LIỆU THU ĐƯỢC TỪ TRÒ CHƠI

SUDOKU 2.1 Mục đích phân tích

Với mục đích ban đầu, sử dụng python để phân tích các yếu tố có thể ảnh hưởng đến kết quả chơi và hoàn thành trò chơi Sudoku mà chủ yếu tập trung vào vấn đề: “Trạng thái tinh thần tốt nhất của người chơi” Và chúng em đã lựa chọn các thuộc tính có thể ảnh hưởng đến kết quả chơi ở chế độ 9x9, mục đích chủ yếu chỉ là đưa ra các đánh giá tương đối về các sự ảnh hưởng đó

2.2 Tập dữ liệu

Tệp dữ liệu được ghi ở phia trên.

Các trường dữ liệu và giải thích:

- name( tên người chơi): tên được lấy từ đăng nhập

- age( tuổi người chơi): tuổi được lấy từ đăng nhập

- bdate( ngày sinh): ngày sinh được lấy từ đăng nhập

- sex( giới tính): giới tính được lấy từ đăng nhập

- level( độ khó): gồm: easy – hard – medium

- play_time( thời gian chơi): dao động từ 0 đến 7 phút, nếu 0 phút thì chứng tỏ

người chơi chưa hoàn thành

- completed (hoàn thành hay không): nếu ở thuộc tính ‘play_time’ có giá trị

là 0 thì completed mang giá trị là 0, ngược lại là 1

-time_now( thời gian hiện tại): thời gian hiện tại của người chơi, chỉ sử dụng

+

- Toàn bộ tập dữ liệu, chứa toàn bộ các độ khó: nghĩa là phân tích toàn bộ dữ liệu, các phân tích ở phần này gồm có:

+

Trang 22

2.4 Chi tiết phân tích và nhận xét

Các phân tích sẽ được thực hiện lần lượt theo thứ tự từ rộng đến thu hẹp vào

trọng tâm việc: “Trạng thái tinh thần tốt nhất”.

Trang 23

KẾT LUẬN

Học môn học lập trình Python đã mang lại cho chúng em một trải nghiệm đầy thú vị và kiến thức sâu sắc về ngôn ngữ lập trình này Không chỉ giúp chúng em làm quen với cú pháp và cấu trúc của Python, mà còn mở rộng tầm nhìn về những ứng dụng to lớn của ngôn ngữ này trong lĩnh vực trí tuệ nhân tạo (AI) và phân tích dữ liệu.Python, với cộng đồng lớn và hỗ trợ đa dạng, đã cho phép chúng em nhận thức sâu sắc về sức mạnh của nó trong lĩnh vực trí tuệ nhân tạo Việc học về thư viện như TensorFlow và PyTorch đã mở ra cánh cửa cho việc hiểu và triển khai các mô hình máy học và deep learning Chúng em đã có cơ hội xây dựng và huấn luyện các mô hình để giải quyết các vấn đề thực tế, từ nhận diện hình ảnh đến dự đoán chuỗi thời gian

Trong lĩnh vực phân tích dữ liệu, Python và các thư viện như Pandas, NumPy

và Matplotlib đã là công cụ quan trọng giúp chúng em xử lý và hiểu sâu dữ liệu Chúng em đã áp dụng kiến thức này để phân tích tập dữ liệu từ trò chơi Sudoku và rút

ra những thông tin quan trọng về cách mọi người chơi và giải quyết các câu đố Các biểu đồ và đồ thị mà Python cung cấp đã làm cho quá trình này trở nên sinh động và

dễ hiểu hơn

Môn học lập trình Python không chỉ giúp chúng em có kiến thức vững về một ngôn ngữ lập trình mới mà còn mang lại những kỹ năng thực hành quan trọng Khả năng áp dụng lập trình Python vào giải quyết các bài toán thực tế trong cuộc sống hàngngày đã nâng cao khả năng giải quyết vấn đề và tư duy logic của chúng em Chúng emtin rằng sự hiểu biết về Python sẽ tiếp tục hỗ trợ tôi trong nhiều lĩnh vực khác nhau, từ

công việc đến học tập và thậm chí là sự sáng tạo trong cuộc sống

Ngày đăng: 15/04/2024, 18:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w