Python level 2 chiều chủ nhật

huyhuy17

References

No.Starch.Python.For.Kids.Dec.2012.ISBN.1593274076

Introducing python https://repl.it/@Quang_HuyHuy/OrderlyDarlingConnections

Link python showcase

Mọi người gửi bài tập về nhà, hoặc link replit vào comment nhé, các em nhớ viết thêm tên mình vào để thầy còn biết

Buổi 1

Homework

  1. Draw the following form with turtle (required)

Buổi 2

  • Draw 5-pointed star (required)
  • Color each wing (required)
  • Redraw the house, color the parts

Lesson 3: draw the following flowers

===

Buổi 2

Code buổi 2 

Bài tập về nhà

–Dễ (Yêu cầu bắt buộc)
1. Viết hàm tìm số lớn nhất trong 3 sô với 3 tham chiếu là a,b,c
2. Viết hàm đổi tiền vnd->dola mỹ với 1 tham chiếu là money(vnd) và trả về số dola mỹ tương ứng (tỷ giá search online)
–Vừa
3. viết hàm tạo câu ngẫu nhiên và không có tham chiếu
Hàm sẽ tạo câu với tập từ sau
trang_ngu = [‘Ngày hôm qua,’, ‘Mới sáng nay’, ‘Chiều hôm đó’,’Năm đó’]
chu_ngu= [‘Tôi’, ‘Bạn’, ‘Anh ta’, ‘Cô ấy’, ‘Người đó’]
bo_ngu = [‘ xúc động vô cùng ‘, ‘ không cảm xúc ‘, ‘ nhanh chóng ‘, ‘ mãi mới ‘, ‘ bồi hồi ‘]
vi_ngu = [‘ nói lời yêu với’, ‘ kể chuyện cười ‘, ‘ hát cho ‘, ‘ chơi trò chơi ‘ , ‘ thuyết phục được ‘, ‘ đi hẹn hò với ‘, ‘ nấu ăn cho ‘]
tan_ngu = [‘Tôi’, ‘Bạn’, ‘Anh ta’, ‘Cô ấy’, ‘Người đó’]

https://repl.it/@Quang_HuyHuy/BeneficialNutritiousSet

** Sáng tạo: Viết ra hàm kể chuyện ngắn với 5 câu bằng cách tạo ra các hàm tạo câu và kết hợp
** Sáng tạo hơn nữa : tạo ra các câu theo chủ để nhất định , qua đó kết hợp lại tạo một câu chuyện có ý nghĩa
–Khó
1. Viết hàm giải phương trình bậc 2 : ax^2 + bx + c = 0
tham khảo http://www.cdmiennam.edu.vn/cach-giai-phuong-trinh-bac-2-va-cach-tinh-nham-nghiem.html
phép tính căn sử dụng
import math
math.sqrt(4)
–Ứng dụng
2. Viết hàm cho turtle
– Vẽ hình chữ nhật với 3 tham chiếu x,y,long, width
– Vẽ hình ngôi sao với 1 tham chiếu là n (số cánh)
– Vẽ khối chữ nhật có chữ ở bên trong với x,y,long,width,text
– Vẽ khối chữ nhật có chữ ở bên trong và tô màu với x,y,long,width,text,color
– Vẽ nút bấm với x,y, text . Yêu cầu tự tính toán độ dài để chữ không bị trôi ra ngoài

Buổi 3

Bài mẫu hãy bắt tôi đi :https://repl.it/@Quang_HuyHuy/ClosedForsakenOrigin

Bài tập về nhà

Bắt buộc

  1. Tạo một con turtle : mà khi bấm vào nó sẽ in ra một câu hội thoại ngẫu nhiên , đáp án
  2. Tạo một con turtle : mà khi bấm vào nó, nó sẽ vẽ ra một ngôi sao
  3. Tạo 2 con turtle : mà khi bấm vào 1 trong 2 con, thì cả 2 con nhân vật đều in ra “i am Clicked”
  4. Tạo con turtle :  in ra liên tục từ 100 – 0, nếu bấm vào con turtle, nó sẽ dừng lại và không in ra nữa
  5. Game đừng cho tôi rơi.
    1. Tạo 2 con turtle A,B
    2. B sẽ bị rơi từ trên cao xuống với tốc độ tăng dần theo thời gian
    3. Khi bấm vào A thì tọa độ Y của B tăng lên 10 đơn vị
    4. Nếu tọa độ y của B nhỏ hơn -100  thì gameover
    5. Chuẩn bị thuyết trình về sản phẩm này

Bài chữa 5 :

https://repl.it/@FaketakiTen/ausmitchz-await

https://repl.it/@Quang_HuyHuy/JuvenileThoroughSdk

Buổi 4

Link bài mẫu trong ngày

https://repl.it/@Quang_HuyHuy/WanFarflungMigration

Game Khủng long :https://repl.it/@Quang_HuyHuy/HarmfulTediousQuadrilateral

Bài tập về nhà:

  1. Viết chương trình đọc truyện
    1. Bấm nút “Right” để đọc truyện tiếp theo
    2. Bấm nút “Left” để đọc truyện trước đó
    3. Bấm 0 để thoát chương trình
    4. Bấm Enter thì sẽ hiển thị danh sách câu chuyện
    5. Bài giải :https://repl.it/@Quang_HuyHuy/RequiredHappyBytecode
  2. Tìm đường qua sông:
    1. 1 Con sông
    2. 4,5 con cá sấu
    3. Cá sấu bơi qua lại trong con sông
    4. 1 người chơi
    5. các mũi tên di chuyển người chơi
    6. nếu người chơi qua sông, chiến thắng
    7. Nếu người chơi gặp cá mập game over

Buổi 5

Bài demo về class :

https://repl.it/@Quang_HuyHuy/AzureRingedProcedure

https://repl.it/@Quang_HuyHuy/OpenCreepyBacktick

Bài tập về nhà:

Class player 

  • Kế thừa từ class Turle
  • Có các thuộc tính sau : hp, name
  • phương thức set_move(self, screen)  : Với tham chiếu là screen (đối tượng được tạo từ turtle) để gán các hàm liên quan đến di chuyển (lên,xuống,trái,phải ) cho đối tượng người chơi
  • phương thức down_hp (self, value) : Khiến máu nhân vật bị giảm
  • phương thức up_hp(self,value) : Tăng máu của người chơi
  • phương thức is_die (self) : Kiểm tra xem máu < 0 , nếu <0 thì return die

Class enemy 

  • Kế thừa từ class Turtle
  • Có thuộc tính hp,name
  • Có phương thức  move_random(self ) : giúp kẻ địch di chuyển ngẫu nhiên
  • Có phương thức run_per_frame (self): hàm sẽ chạy hàm self.move_random , Giúp nhân vật di chuyển ngẫu nhiên trong mỗi khung hình
  • Có phương thức move_to_player() : Khiến kẻ địch tập trung hướng về người chơi

Buổi 6

https://repl.it/@Quang_HuyHuy/VibrantWarpedConfigfiles

Bổ sung phần bài tập về nhà

  • Class bullet
    • có phương thức __init__(self, player) :
      • Việc truyền này sẽ lưu self.player = player (player là đối tượng từ class Player đã tạo từ trước). Để sử dụng cho các mục tiêu về sau
    • có phương thức fly(self):
      • viên đạn sẽ bay thẳng 1 đoạn
    • có phương thức fire (self):
      • Đưa viên đạn về self.player
      • Xoay viên đạn theo hướng xoay của self.player
    • phương thức on_fly(self, enemyList, on_touch):
      • Kiểm tra vị trí của viên đạn có nằm ngoài khung của trò chơi hay không
      • Kiểm tra vị trí của viên đạn với các enemy trong enemyList được truyền vào
      • on_touch là 1 hàm được truyền vào và sẽ được gọi ra khi viên đạn chạm 1, trong các enemy

Buổi 7

https://www.tutorialspoint.com/python/python_gui_programming.htm

https://repl.it/@Quang_HuyHuy/Ung-dung-x

Bài tập về nhà :

  • Tạo form Đăng nhập theo mẫu
  • Tạo form Đăng ký (bỏ qua phần giới tính)
  • Một số yêu cầu
    • Làm đúng layout
    • Không cần có chữ bên trong
    • Nhưng phải có đủ label

Buổi 8

Đọc ghi file, các mode chính:

Mode Description
‘r’ This is the default mode. It Opens file for reading.
‘w’ This Mode Opens file for writing. 
If file does not exist, it creates a new file.
If file exists it truncates the file.
‘x’ Creates a new file. If file already exists, the operation fails.
‘a’ Open file in append mode. 
If file does not exist, it creates a new file.
‘t’ This is the default mode. It opens in text mode.
‘b’ This opens in binary mode.
‘+’ This will open a file for reading and writing (updating)

Code lưu file dữ liệu json


import json
data = {}  
data['people'] = []  
data['people'].append({  
    'name': 'Scott',
    'website': 'stackabuse.com',
    'from': 'Nebraska'
})
data['people'].append({  
    'name': 'Larry',
    'website': 'google.com',
    'from': 'Michigan'
})
data['people'].append({  
    'name': 'Tim',
    'website': 'apple.com',
    'from': 'Alabama'
})

with open('data.json', 'w') as outfile:  
    json.dump(data, outfile)
Python

Buổi 9

  • Hoàng : Cờ vua
  • Hân : Game giải đố, trắc nghiệm ,  Hướng dẫn
  • Minh : Game giải đố
  • Kiên : Game răn săn mồi
  • Dương : Phần mềm đọc truyện
  • Hải : Game mê cung
  • Hưng : IDK
  • Phương :turtle dodge

Cách thêm hình vào python turtle


from turtle import *
sc = Screen()
#Lưu ý file ảnh phải cùng thư mục với file code
sc.bgpic("source.gif")
sc.register_shape("rockman.gif")
t = Turtle()
t.shape("rockman.gif")
Python

Sheet các bài tập

Link

Buổi 10

Dùng text entry


from tkinter import *
from tkinter import messagebox
top = Tk()
v = StringVar()

L1 = Label(top, text="User Name")
L1.pack( side = LEFT)
E1 = Entry(top, bd =5,textvariable=v)
E1.pack(side = LEFT)
def showtext():
    messagebox.showinfo("Say Hello", "Your name: {}".format(E1.get()))
B = Button(top, text ="Hello", command = showtext)
B.pack(side = RIGHT)
top.mainloop()


Hướng dẫn trả lời câu hỏi

Link source

from QnA import question_Sets
from tkinter import *
from turtle import *

root = Tk()

quesnum= 0
currentQuestion =  question_Sets[quesnum]
content = StringVar()
content.set(currentQuestion.get("content"))
trueAnswer = currentQuestion.get('correct_answer')
question = Label (root,textvariable = content,font=("arial",45),bg = "#EEB2D8",fg = "#1216AC")
question.pack()

def setOnlickAnswer(answer):
  def checkTrueFalse():
    if trueAnswer == answer.get():
      print("Ban tra loi dung")
      nextQuestion()
    else:
      print("Ban tra loi sai")
    pass
  return checkTrueFalse

lsStringVar =[StringVar(),StringVar(),StringVar(),StringVar()]

    

for i in range(len(currentQuestion.get("answers"))):
  ans = currentQuestion.get("answers")[i]
  strvar = lsStringVar[i]
  strvar.set(ans)
  ans1 = Button (root,
                 textvariable = strvar,font=("Arial",35),
                 width=9,bg = "pink",
                 fg = "#4667EF",
                 command = setOnlickAnswer(strvar)
                 )
  ans1.pack()

def nextQuestion():
    global quesnum,trueAnswer
    quesnum += 1
    currentQuestion = question_Sets[quesnum]
    content.set(currentQuestion.get("content"))
    trueAnswer = currentQuestion.get('correct_answer')
    for i in range(len(currentQuestion.get("answers"))):
      ans = currentQuestion.get("answers")[i]
      strvar = lsStringVar[i]
      strvar.set(ans)
        
root.mainloop()


Kết hợp Tkinter và turtle


from turtle import  * 
from tkinter import *
root = Tk()
canvas = Canvas(root)
canvas.pack(side=LEFT)
screen = TurtleScreen(canvas)
turtle = RawTurtle(canvas)
turtle.up()
f=  Frame(root)
f.pack(side= RIGHT)
redbutton = Button(f, text="Red", fg="red")
redbutton.pack()

screen.mainloop()


Buổi 11

Các nội dung thuyết trình cơ bản:

  1. Giới thiệu về bản thân : Tên, tuổi, lớp
  2. Giới thiệu về sản phẩm : Sản phẩm trình cho chương trình python2 cuối khóa, tên sản phẩm, tính năng chính
  3. Trình bày cách sử dụng
  4. Trình bày giao diện cơ bản, bao gồm những phần nào ví dụ:
    1. Màn hình chào
    2. Màn hình ứng dụng : phần chi tiết, phần menu
    3. Màn hình kết thúc
  5. Kết hợp với từng màn hình có thể giải thích ngắn gọn về các thư viện, nội dung code đã dùng
  6. Trình bày xong sẽ chạy thử demo các phần nội dung cơ bản
  7. Trình bày kế hoạch nâng cấp (nếu có)
  8. Cảm ơn và chuyển sang Q&A
  9. Các nội dung câu hỏi sẽ có thể hỏi trong Q&A :
    1. Tại sao em lựa chọn chủ đề này
    2. Phần nào em làm thấy khó nhất
    3. Em làm gì khi gặp khó khăn trong quá trình code
    4. Việc sử dụng thư viện tkinter có khó không
    5. Cách hoạt động của một màn hình giao diện gui Tkinter hoạt động như thế nào (từ khai báo root, đến đưa widget, và chỉnh layout)
    6. Cách đọc ghi file
    7. Đọc ghi file thì cần lưu ý những gì

4 Replies to “Python level 2 chiều chủ nhật”

  1. btvn gui vao dau ha thay?

    1. Thầy quên mất, thầy cập nhật đây rồi nhé

  2. Chương trình của con 1 ngày trước chạy được nhưng 1 ngày sau, vẫn y hệt như thế nhưng lại không chạy được nữa ạ!? Link : https://repl.it/@baohan06/Quiz-Project-Lv2-3 Con đã thử copy chương trình của thầy và chạy nhưng nó cũng bị lỗi -w-

Trả lời