Skip to content

Commit 83eff5f

Browse files
committed
更新了公开课相关资源
1 parent ad14971 commit 83eff5f

25 files changed

+45740
-0
lines changed
Binary file not shown.

公开课/文档/第05次公开课/code/dictionary.txt

Lines changed: 45333 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
nums = []
2+
for i in range(100000):
3+
nums.append(i)
4+
nums.reverse()
5+
print(nums)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
nums = []
2+
for i in range(100000):
3+
nums.insert(0, i)
4+
print(nums)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
a, b = 0, 1
2+
for num in range(1, 101):
3+
a, b = b, a + b
4+
print(f'{num}: {a}')
5+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from functools import lru_cache
2+
3+
4+
@lru_cache()
5+
def fib(num):
6+
if num in (1, 2):
7+
return 1
8+
return fib(num - 1) + fib(num - 2)
9+
10+
11+
for num in range(1, 101):
12+
print(f'{num}: {fib(num)}')
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"""
2+
公鸡5元一只,母鸡3元一只,小鸡1元三只,用100元买一百只鸡,问公鸡、母鸡、小鸡各有多少只?
3+
"""
4+
for x in range(21):
5+
for y in range(34):
6+
z = 100 - x - y
7+
if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
8+
print(x, y, z)
9+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import re
2+
3+
import PyPDF2
4+
5+
with open('Python_Tricks_encrypted.pdf', 'rb') as pdf_file_stream:
6+
reader = PyPDF2.PdfFileReader(pdf_file_stream)
7+
with open('dictionary.txt', 'r') as txt_file_stream:
8+
file_iter = iter(lambda: txt_file_stream.readline(), '')
9+
for word in file_iter:
10+
word = re.sub(r'\s', '', word)
11+
if reader.decrypt(word):
12+
print(word)
13+
break
14+
Binary file not shown.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import sys
2+
3+
4+
def fac(num):
5+
if num == 0:
6+
return 1
7+
return num * fac(num - 1)
8+
9+
10+
def main():
11+
print(fac(59996))
12+
13+
14+
if __name__ == '__main__':
15+
sys.setrecursionlimit(60000)
16+
main()
17+
# for i in range(1000):
18+
# print(f'{i}:'.rjust(3), fac(i))
19+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
def climb(num):
2+
a, b, c = 1, 2, 4
3+
for _ in range(num - 1):
4+
a, b, c = b, c, a + b + c
5+
return a
6+
7+
8+
def main():
9+
n = int(input('台阶数量: '))
10+
print(climb(n))
11+
12+
13+
if __name__ == '__main__':
14+
main()
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""
2+
迷宫寻路
3+
"""
4+
import random
5+
import sys
6+
7+
WALL = -1
8+
ROAD = 0
9+
10+
ROWS = 10
11+
COLS = 10
12+
13+
14+
def find_way(maze, i=0, j=0, step=1):
15+
"""走迷宫"""
16+
if 0 <= i < ROWS and 0 <= j < COLS and maze[i][j] == 0:
17+
maze[i][j] = step
18+
if i == ROWS - 1 and j == COLS - 1:
19+
print('=' * 20)
20+
display(maze)
21+
sys.exit(0)
22+
find_way(maze, i + 1, j, step + 1)
23+
find_way(maze, i, j + 1, step + 1)
24+
find_way(maze, i - 1, j, step + 1)
25+
find_way(maze, i, j - 1, step + 1)
26+
maze[i][j] = ROAD
27+
28+
29+
def reset(maze):
30+
"""重置迷宫"""
31+
for i in range(ROWS):
32+
for j in range(COLS):
33+
num = random.randint(1, 10)
34+
maze[i][j] = WALL if num > 7 else ROAD
35+
maze[0][0] = maze[ROWS - 1][COLS - 1] = ROAD
36+
37+
38+
def display(maze):
39+
"""显示迷宫"""
40+
for row in maze:
41+
for col in row:
42+
if col == -1:
43+
print('■', end=' ')
44+
elif col == 0:
45+
print('□', end=' ')
46+
else:
47+
print(f'{col}'.ljust(2), end='')
48+
print()
49+
50+
51+
def main():
52+
"""主函数"""
53+
maze = [[0] * COLS for _ in range(ROWS)]
54+
reset(maze)
55+
display(maze)
56+
find_way(maze)
57+
print('没有出路!!!')
58+
59+
60+
if __name__ == '__main__':
61+
main()
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
"""
2+
骑士巡逻
3+
"""
4+
import sys
5+
6+
SIZE = 8
7+
8+
9+
def display(board):
10+
"""显示棋盘"""
11+
for row in board:
12+
for col in row:
13+
print(f'{col}'.rjust(2, '0'), end=' ')
14+
print()
15+
16+
17+
def patrol(board, i=0, j=0, step=1):
18+
"""巡逻"""
19+
if 0 <= i < SIZE and 0 <= j < SIZE and board[i][j] == 0:
20+
board[i][j] = step
21+
if step == SIZE * SIZE:
22+
display(board)
23+
sys.exit(0)
24+
patrol(board, i + 1, j + 2, step + 1)
25+
patrol(board, i + 2, j + 1, step + 1)
26+
patrol(board, i + 2, j - 1, step + 1)
27+
patrol(board, i + 1, j - 2, step + 1)
28+
patrol(board, i - 1, j - 2, step + 1)
29+
patrol(board, i - 2, j - 1, step + 1)
30+
patrol(board, i - 2, j + 1, step + 1)
31+
patrol(board, i - 1, j + 2, step + 1)
32+
board[i][j] = 0
33+
34+
35+
def main():
36+
"""主函数"""
37+
board = [[0] * SIZE for _ in range(SIZE)]
38+
patrol(board)
39+
40+
41+
if __name__ == '__main__':
42+
main()
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
size = 25
2+
3+
for i in range(size):
4+
for j in range(size):
5+
if i % 2 == 1 or j % 2 == 1:
6+
print('■', end='')
7+
else:
8+
print('□', end='')
9+
print()
10+
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)