python爬虫小白入门笔记

一、Python爬虫小白入门笔记

Python是现在非常流行的编程语言之一,而Python爬虫更是其独特的应用之一。Python爬虫可以用于爬取各种网站的信息和数据,实现数据分析和业务应用,尤其是对于数据分析和数据挖掘的人员,学会Python爬虫是非常有帮助的。

以下是Python爬虫小白入门笔记,希望对初学者有所帮助:

1. Python基础语法学习

在学习Python爬虫之前,首先需要学习Python基础语法。Python语言可以比较快速地学习,但是基础语法的掌握是非常重要的。

2. 爬虫相关知识学习

爬虫涉及到的知识比较多,包括HTTP协议、HTML、CSS、JavaScript等技术,需要花费一定的时间学习。

3. 爬虫工具学习

爬虫工具的选择也非常重要,常用的爬虫工具有BeautifulSoup、Scrapy等,在学习Python爬虫时需要尝试选择合适的工具。

4. 实战演练

在学习过程中需要多进行一些实战演练,尝试从网站上爬取数据,进行数据分析和业务应用。

二、Python五子棋游戏代码大全

五子棋游戏是一款经典的益智游戏,在Python中也有很多五子棋游戏的相关代码。以下是Python五子棋游戏代码大全:

1. 传统五子棋

```

import numpy as np

class Board:

def __init__(self, n):

self.n = n

self.board = np.zeros((n, n))

self.winner = None

def place(self, row, col, player):

assert self.board[row, col] == 0, "Board position not empty!"

self.board[row, col] = player

self.check_winner(row, col)

def as_string(self):

rows = []

for row in self.board:

row_str = " ".join([str(int(x)) for x in row])

row_str = row_str.replace("0", ".")

rows.append(row_str)

return "\n".join(rows)

def check_winner(self, row, col):

directions = [(0,1),(1,0),(1,1),(1,-1)]

for dr, dc in directions:

r, c = row, col

count = 0

while (0 <= r < self.n and 0 <= c < self.n

and self.board[r, c] == self.board[row, col]):

count += 1

r, c = r + dr, c + dc

r, c = row - dr, col - dc

while (0 <= r < self.n and 0 <= c < self.n

and self.board[r, c] == self.board[row, col]):

count += 1

r, c = r - dr, c - dc

count -= 1

if count >= 5:

self.winner = self.board[row, col]

class Game:

def __init__(self, n):

self.n = n

self.players = [1, 2]

self.board = Board(n)

self.current_player = self.players[0]

def next_player(self):

if self.current_player == self.players[0]:

self.current_player = self.players[1]

else:

self.current_player = self.players[0]

def play(self):

while not self.board.winner:

print("Current board:\n", self.board.as_string())

print("Current player:", self.current_player)

x, y = input("Enter row and col separated by a space: ").split()

x, y = int(x), int(y)

self.board.place(x, y, self.current_player)

self.next_player()

print("Winner is player", self.board.winner)

game = Game(15)

game.play()

```

2. 界面版五子棋

```

from tkinter import *

from tkinter.messagebox import *

import random

# 定义常量

BLACK_CHESS = 1

WHITE_CHESS = -1

EMPTY_CHESS = 0

SPACE_SIZE = 30

MARGIN = 50

GRID_SIZE = SPACE_SIZE * 2

CHESS_SIZE = 24

WIN_SIZE = 5

class Chessboard():

def __init__(self):

self.chess_map = [[EMPTY_CHESS for i in range(15)] for j in range(15)] # 15*15 的棋盘

self.player = BLACK_CHESS

# 悔棋

def withdraw(self):

pass

# 判断胜负

def check_win(self, row, col, player):

directions = [(1, 1), (1, 0), (1, -1), (0, 1)]

sum = 0

for r, c in directions:

for i in range(WIN_SIZE):

x, y = row + r * i, col + c * i

if 0 <= x < 15 and 0 <= y < 15 and self.chess_map[x][y] == player:

sum += 1

else:

break

return sum >= 5

# 判断棋盘是否已满

def full(self):

for i in range(15):

for j in range(15):

if self.chess_map[i][j] == EMPTY_CHESS:

return False

return True

class ChessGame(Chessboard):

def __init__(self, canvas):

super().__init__()

self.chess_list = []

self.surrond_list = [] # 用于判断是否更新(显示)重复的棋子

self.canvas = canvas

self.init_chessboard()

# 点击事件

def click_chess(self, event):

if self.check_win or self.full():

showinfo("游戏结束","游戏已结束")

return

# 计算点击的位置

x, y = event.x, event.y

row, col = int((y - MARGIN) / SPACE_SIZE), int((x - MARGIN) / SPACE_SIZE)

# 判断是否越界

if not(0 <= row < 15 and 0 <= col < 15):

return

# 判断该位置是否已有棋子

if self.chess_map[row][col] != EMPTY_CHESS:

return

# 更新棋盘和棋子的列表

self.chess_map[row][col] = self.player

self.chess_list.append((row, col, self.player))

# 绘制棋子(黑棋或白棋)

color = 'black' if self.player == BLACK_CHESS else 'white'

self.canvas.create_oval(

MARGIN + col * SPACE_SIZE - CHESS_SIZE,

MARGIN + row * SPACE_SIZE - CHESS_SIZE,

MARGIN + col * SPACE_SIZE + CHESS_SIZE,

MARGIN + row * SPACE_SIZE + CHESS_SIZE,

fill=color, outline=color)

# 判断胜负

if self.check_win(row, col, self.player):

who = "黑" if self.player == BLACK_CHESS else "白"

showinfo("胜利","{}棋获胜!".format(who))

self.reset() # 重置棋盘

return

# 判断是否和棋

if self.full():

showwarning("平局", "平局!")

self.reset()

return

# 切换玩家

self.player = WHITE_CHESS if self.player == BLACK_CHESS else BLACK_CHESS

# 更新悔棋区域

def update_withdraw(self):

pass

# 重置棋盘

def reset(self):

for i in range(len(self.chess_list)):

row, col, player = self.chess_list[i]

self.chess_map[row][col] = EMPTY_CHESS

self.chess_list = []

self.surrond_list = []

self.player = BLACK_CHESS

self.canvas.delete('all')

self.init_chessboard()

# 绘制棋盘

def init_chessboard(self):

for i in range(15):

self.canvas.create_text(MARGIN/2, MARGIN+i*SPACE_SIZE, text=str(i))

self.canvas.create_text(MARGIN+i*SPACE_SIZE, MARGIN/2, text=str(i))

self.canvas.create_text(MARGIN/2, MARGIN/2, text='五子棋')

for i in range(15):

self.canvas.create_line(MARGIN, MARGIN+i*SPACE_SIZE, MARGIN+GRID_SIZE*14, MARGIN+i*SPACE_SIZE)

self.canvas.create_line(MARGIN+i*SPACE_SIZE, MARGIN, MARGIN+i*SPACE_SIZE, MARGIN+GRID_SIZE*14)

# 绘制中心圆

self.canvas.create_oval(MARGIN+3*SPACE_SIZE-CHESS_SIZE,

MARGIN+3*SPACE_SIZE-CHESS_SIZE,

MARGIN+3*SPACE_SIZE+CHESS_SIZE,

MARGIN+3*SPACE_SIZE+CHESS_SIZE,

fill='black', outline='black')

self.canvas.create_oval(MARGIN+11*SPACE_SIZE-CHESS_SIZE,

MARGIN+3*SPACE_SIZE-CHESS_SIZE,

MARGIN+11*SPACE_SIZE+CHESS_SIZE,

MARGIN+3*SPACE_SIZE+CHESS_SIZE,

fill='black', outline='black')

self.canvas.create_oval(MARGIN+3*SPACE_SIZE-CHESS_SIZE,

MARGIN+11*SPACE_SIZE-CHESS_SIZE,

MARGIN+3*SPACE_SIZE+CHESS_SIZE,

MARGIN+11*SPACE_SIZE+CHESS_SIZE,

fill='black', outline='black')

self.canvas.create_oval(MARGIN+11*SPACE_SIZE-CHESS_SIZE,

MARGIN+11*SPACE_SIZE-CHESS_SIZE,

MARGIN+11*SPACE_SIZE+CHESS_SIZE,

MARGIN+11*SPACE_SIZE+CHESS_SIZE,

fill='black', outline='black')

if __name__ == "__main__":

window = Tk()

window.title("五子棋")

canvas = Canvas(window,width=15*SPACE_SIZE+MARGIN*2, height=15*SPACE_SIZE+MARGIN*2)

canvas.bind("", ChessGame(canvas).click_chess)

canvas.pack()

ChessGame(canvas).init_chessboard()

window.mainloop()

```

以上是Python五子棋游戏代码大全,这些代码都是可以直接运行的,对于爱好编程或是五子棋游戏的爱好者,可以修改和完善这些代码,让其更加符合自己的喜好。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(12) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部