一摞Python风格的纸牌 后端开发
import collections
from random import choice
# namedtuple 是一个可命名的元祖,它可以让你使用属性式的标签来访问元祖中的元素,而不是通过索引
Card = collections.namedtuple('Card', ['rank', 'suit'])
class FrenchDesk:
ranks = [str(n) for n in range(2, 11)] + list('JQKA')
suite = '黑桃 方块 梅花 红星'.split()
def __init__(self):
self._cards = [Card(rank, suit) for suit in self.suite
for rank in self.ranks]
def __len__(self):
return len(self._cards)
def __getitem__(self, position):
return self._cards[position]
# 手工设置一张牌
beer_card = Card('7', '方块')
print("手工设置一张牌:")
print(beer_card.rank, beer_card.suit)
deck = FrenchDesk()
print(f"总共有 {len(deck)} 张牌。")
print(deck[0])
print(deck[-1])
# 随机选一张牌
# 函数random.choice 可以从序列中随机获取一项的函数
print("随机获取的牌:")
print(choice(deck))
print(choice(deck))
print(choice(deck))
Fluent Python 1-1
打印输出所有事件 游戏开发
在pygame窗口中输出事件队列中的所有事件。
import random
import pygame
import sys
SIZE = WIDTH, HEIGHT = 640, 396
FPS = 60
pygame.init()
screen = pygame.display.set_mode(SIZE, 0, 32)
pygame.display.set_caption("Event")
clock = pygame.time.Clock()
font = pygame.font.SysFont(None, 25)
font_height = font.get_linesize()
event_list = []
line_num = SIZE[1]
running = True
while running:
event = pygame.event.wait()
event_list.append(str(event))
event_text = event_list[-line_num:]
if event.type == pygame.QUIT:
sys.exit()
screen.fill((54, 59, 64))
y = SIZE[1] - font_height
for text in reversed(event_list):
rgb = tuple((random.randint(0,255) for i in range(3)))
screen.blit(font.render(text, True, rgb), (0, y))
y -= font_height
pygame.display.update()
pygame最小开发框架 游戏开发
使用pygame开发,有一个最小的开发框架,可以帮助我们开发pygame时能快速看到程序运行结果,提高开发效率。
pygame最小开发框架代码如下:
import sys
# 导入pygame及常量库
import pygame
from pygame.locals import *
# 游戏中的一些常量定义
SIZE = WIDTH, HEIGHT = 640, 396
FPS = 60
TITLE = "Hello_明算"
# 颜色常量定义
BG_COLOR = 25, 102, 173
# 初始化
pygame.init()
pygame.mixer.init()
# 创建游戏窗口
screen = pygame.display.set_mode(SIZE)
# 设置窗口标题
pygame.display.set_caption(TITLE)
# 创建时间管理对象
clock = pygame.time.Clock()
# 创建字体对象
font = pygame.font.SysFont(None, 60,)
running = True
# 程序运行主体循环
while running:
# 清屏(窗口纯背景色画纸绘制)
screen.fill(BG_COLOR) # 准备一个画布
# 绘制
for event in pygame.event.get(): # 事件索取
if event.type == QUIT: # 判断点击窗口右上角 “×”
pygame.quit()
sys.exit()
# 刷新
pygame.display.update()
# 设置帧数
clock.tick(FPS)
# 循环结束后,退出游戏
pygame.quit()
stable diffusion WebUI手动安装 Ai绘画
优点:最纯正的Stable Diffusion WebUI程序,可以按需按需安装插件,一步步了解Stable Diffusion的部署和插件安装过程,对于每个部件和后续出现问题更容易找到根源和处理方法。
缺点:麻烦,要找到模型和插件一个个下载安装。
-
安装python
建议安装3.10.6版本,这个是Stable Diffusion WebUI作者推荐安装版本,打开python.org/downloads/页面找到3.10.6版本下载,然后安装,安装没有什么难度,唯一需要注意的是安装时要勾选add python 3.10 to PATH。 -
安装git
Git官网:https://git-scm.com/download ,找到64-bit Git windows Setup进行下载。安装一直下一步就可以。 -
安装Stable Diffusion WebUI
接着安装Stable Diffusion WebUI,在硬盘空间充足,并且没有中文路径的文件夹导航栏,输入cmd,复制下面代码
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
回车,等待安装结束,就可以看到stable-diffusion-webui文件夹了,点击进入打开webui-user.bat,等待安装必要的启动项,然后就可以在浏览器打开127.0.0.1:7860进入Stable Diffusion WebUI界面了。
Blender 十大操作快捷键 游戏开发
- 挤出:E
连续挤出:CTRL + 右键 - 向内挤出:I
- 倒角:CTRL + B
- 循环切割:CTRL + R
- 合并:M
- 断开:V
- 填充:F
栅格填充:CTRL + F
栅格填充必需是偶数面 - 切刀:K
按鼠标右键或者空格键退出
桥接必须是同一个物体 - 合并物体:CTRL + J
- 分离:P
第一个Pygame程序 游戏开发
Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它。
# 导入pygame模块。
import sys
import pygame
# pygame初始化。
pygame.init()
# 设置主屏幕
screen = pygame.display.set_mode((800, 600))
# 设置窗口标题名称。
pygame.display.set_caption('hamcheese')
# 导入字体。
font_name = pygame.font.Font("c:/Windows/Fonts/simhei.ttf", 50)
# 生成文本信息,参数一文本内容,参数二字体平滑,参数三字体颜色,参数四背景颜色。
text = font_name.render("火腿芝士", True, (255,0,0), (0,0,0))
# 获取显示对象的坐标区域。
textRect = text.get_rect()
# 设置居中。
textRect.center = (400, 300)
# 将文本信息绘制到主屏幕sreeen上。
screen.blit(text, textRect)
# 游戏主循环
while True:
# 获取鼠标键盘事件
for event in pygame.event.get():
# 点×退出游戏
if event.type == pygame.QUIT:
pygame.QUIT
sys.exit()
# 更新屏幕内容,删除上一帧,绘制这一帧
pygame.display.flip()
FastAPI请求体模型内的属性验证 后端开发
使用pydantic.Field
class UserModel(BaseModel):
username: str = Field(..., min_length=3)
description: Optional[str] = Field(None, max_lenght=128)
gender: Gender
FastAPI路径参数的验证 后端开发
路径参数都是必须项
@app.get('/users/{user_id}')
async def get_user(user_id: int = Path(...,
title="The user id"
ge=1,
le=10000)):
return {'user': f'This isi the user for {user_id}'}
FastAPI函数的参数识别规则 后端开发
- 如果在路径参数中定义了,那么匹配为路径参数;
- 如果参数的类型为int,str之类的基本类型,则为查询参数;
- 如果是pydantic的模型类型,则为请求体。