Inspired by the Magic 8 Ball. 四十三、曼卡拉 原文:http://inventwithpython.com/bigbookpython/project43.html 棋盘游戏曼卡拉至少有 2000 年的历史,几乎和 63 号项目 S# # # # 3##**#**#**#**#**#**## 4# # # # # 5##**#**#**#**#**#**## 6# # # # # 7##**#**#**#**#**#**## 8# 项目 45“迷宫逃亡者 3D”使用了类似的迷宫字典表示。这两个项目的区别在于在屏幕上呈现迷宫的代码。由于迷宫逃亡者 2D 更简单,我推荐在进入迷宫逃亡者 3D 之前先熟悉这个程序。 你可以按照项目 44“迷宫逃亡者 2D”中的说明生成迷宫文件,或者从invpy.com/mazes下载迷宫文件。
在尝试这个项目之前,尝试项目 50“九十九瓶”是个好主意。 BIN: 100 DEC: 5 HEX: 5 BIN: 101 DEC: 6 HEX: 6 BIN: 110 DEC: 7 HEX: 7 BIN: 111 DEC: 8 HEX: 8 BIN: 1000 DEC: 9 HEX: 9 BIN: 1001 DEC: 10 HEX: A BIN: 1010 DEC: 11 HEX: B 你也可以自己想办法做到以下几点: 使用 Python 的oct()函数为基数为 8 的数字系统,八进制输入新的一行。 Read in all the data from periodictable.csv. elementsFile = open('periodictable.csv', encoding='utf-8'
第 174 到 177 行将canvas字典中的数据呈现在屏幕上,其方式类似于项目 13“康威的生命游戏”在屏幕上呈现单元格的方式。 十八、滚动骰子 原文:http://inventwithpython.com/bigbookpython/project18.html 地下城&龙和其他桌面角色扮演游戏使用特殊的骰子,可以有 4、8、 第六十四个项目的sevseg.py模块“七段显示模块”为每个数字生成图形,而不是直接呈现数字字符。 这个项目类似于项目 14,“倒计时” 运行示例 当您运行digitalclock.py时,输出将如下所示: __ __ __ __ __ __ | | |__| 工作原理 数字时钟程序看起来类似于项目 14,“倒计时。”他们不仅都导入了sevseg.py模块,还必须用splitlines()方法拆分由sevseg.getSevSegStr()返回的多行字符串。
. | 1 8 . 3 8 . . | . . . | . . 7 ------+-------+------ 4 . . 7 | 3 . 6 | 8 . . 5 4 5 . | 7 . 8 | 9 1 2 6 . . | 1 9 5 | . . . 6 7 2 | 1 9 5 | 3 4 8 . 9 8 | . . . | . 6 . 1 9 8 | 3 4 6 1 | 5 3 7 | 2 8 4 . . . | 4 1 9 | . . 5 2 8 7 | 4 1 9 | 6 3 5 . . . | . 8 . | . 7 9 第 28 到 43 行的displayCards()函数解释这些元组并在屏幕上显示 ASCII 艺术画表示,而不是直接打印出来,就像项目 4“21 点”一样。 你也可以自己想办法做到以下几点: 使用项目 57“进度条”中的退格打印技术,简单显示每条交换信息,然后打印\b字符,在打印下一条信息之前将其删除。 创建一个增加难度的四卡蒙特游戏。
83517 rolls - 8.4% 5 - 111526 rolls - 11.2% 6 - 139015 rolls - 13.9% 7 - 166327 rolls - 16.6% 8 你也可以自己想办法做到以下几点: 尝试掷出 8 面、10 面、12 面或 20 面骰子。 尝试模拟双面抛硬币。 探索程序 试着找出下列问题的答案。 9 10 11 12 2| 0 2 4 6 8 10 12 14 16 18 20 22 24 3| 0 3 6 9 12 15 18 21 24 27 30 33 36 4| 0 4 8 12 16 20 24 28 32 36 40 44 48 5| 0 5 10 15 20 这个程序的一个扩展版本在项目 51 中,“90 分钟启动” 运行示例 当您运行ninetyninebottles.py时,输出将如下所示: Ninety-Nine Bottles, by Al Sweigart
HOURGLASS.add((36, i + 19)) # Add walls for the bottom right. for i in range(8): HOURGLASS.add((19 # Set up the initial sand at the top of the hourglass: INITIAL_SAND = set() for y in range(8): for 如果把第 39 行的range(8)改成range(0)会怎么样? 三十九、兰顿的蚂蚁 原文:http://inventwithpython.com/bigbookpython/project39.html 兰顿的蚂蚁是二维网格上的元胞自动机模拟,类似于项目 13“
Pico Guess #2: > 456 Bagels Guess #3: > 178 Pico Pico `--snip--` Guess #7: > 791 Fermi Fermi Guess #8: (Max 100) > 23 Here are 23 birthdays: Oct 9, Sep 1, May 28, Jul 29, Feb 17, Jan 8, Aug 18, Feb 19, Dec
对于一台超级计算机来说,这对于暴力破解来说太多了,所以项目 7“凯撒破解”中使用的密码破解方法不能用于对抗简单的密码。不幸的是,狡猾的攻击者可以利用已知的弱点来破解代码。 keys to move the tiles back into their original order: 1 2 3 4 5 6 7 8 | | | +------+------+------+------+ | | | | | | 14 | 1 | 15 | 8 Max: 8 > 3 Enter snail #1's name: > Alice Enter snail #2's name: > Bob Enter snail #3's name: > Carol beginner, game, multiplayer""" import random, time, sys # Set up the constants: MAX_NUM_SNAILS = 8
clickbaitType == 7: headline = generateReasonsWhyHeadline() elif clickbaitType == 8: 起始数为 2 的幂(2、4、8、16、32、64、128 等等)的排序序列是否总是只由偶数组成(除了最后的 1)? 输入0作为起始整数会发生什么? 第六十四个项目的sevseg.py模块“七段显示模块”为每个数字生成图形,而不是直接呈现数字字符。您必须先创建这个文件,倒计时程序才能运行。然后,将倒计时设置为你喜欢的任何秒数、分钟数和小时数。 这个程序类似于项目 19,“数字钟。” 这个项目类似于 58 项目“彩虹” 运行示例 当您运行deepcave.py时,输出如下: Deep Cave, by Al Sweigart email@protected Press Ctrl-C
15“深坑”和项目 20“数字雨”类似,这个程序通过打印ROWS列表中的字符串来创建滚动动画。 :在蚀刻绘图器程序中绘制的图 工作原理 与项目 17“骰子数学”一样,这个程序使用存储在名为canvas的变量中的字典来记录绘图的线条。 你也可以让计算机用项目 56“质数”来计算它们 这个程序的数学并不太重,这使它成为初学者的理想项目。 但是,8 不是 21 的因数,因为 21 ÷ 8 = 2.625。分数余数部分告诉我们这个等式没有被均匀地划分。 %模数操作符将执行除法并告诉我们是否有余数:21 % 7计算为0,意味着没有余数,7 是 21 的因数,而21 % 8计算为1,一个非零值,意味着它不是一个因数。
如果你想了解这个项目,项目 24 是值得研究的。isPrime()函数本质上是寻找给定数字中的任何因子,如果找到任何因子,就返回False。 这个程序中的算法可以快速找到大质数。 这个项目创建了一个getProgressBar()函数,它根据传递给它的参数返回一个进度条字符串。它模拟了一个下载文件,但是你可以在你自己的项目中重复使用进度条。 这个项目对初学者来说很好,它类似于项目 15“深坑” 运行示例 图 58-1 显示了运行rainbow.py时的输出。 一旦获胜,玩家还可以承担“双倍或零”的风险,以可能在随后的回合中赢得 2、4、8、16 以及更多的点数。 探索程序 试着找出下列问题的答案。 一旦获胜,玩家还可以承担“双倍或零”的风险,以可能赢得 2、4、8、16 以及更多的点数。 探索程序 试着找出下列问题的答案。尝试对代码进行一些修改,然后重新运行程序,看看这些修改有什么影响。
这个序列永远继续下去: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 . . . number you wish to calculate (such as 5, 50, 1000, 9999), or QUIT to quit: > 50 0, 1, 1, 2, 3, 5, 8, The sequence continues forever: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987... 工作原理 本书中的棋盘游戏项目遵循类似的程序结构。 你可以查看本书中带有桌游标签的其他项目,并相互比较,尤其是当你想创建自己的原创桌游程序时。
这个项目对初学者来说很棒,不管你是聪明的还是。。。不太聪明。 如果把第 8 行的while True:改成while False:会怎么样? 这个游戏类似于项目 1,“百吉饼”,以及辐射系列视频游戏中的黑客迷你游戏。 这主要在大型软件应用中有用,但是您也可以将这些原则应用到较小的项目中。 这个项目的一个稍微复杂一点的变体是项目 65,“闪光地毯” 注意,这个程序使用原始字符串,它在开始的引号前面加上小写的r,这样字符串中的反斜杠就不会被解释为转义字符。
此外,如果您使用密钥 13 对消息进行加密,凯撒密码将与项目 61 的“ROT 13 密码”相同。在en.wikipedia.org/wiki/Caesar_cipher了解更多关于凯撒密码的信息。 八、日历制作器 原文:http://inventwithpython.com/bigbookpython/project8.html 这个程序为你输入的月份和年份生成可打印的月历文本文件。 代码中的 ASCII 艺术画使得输入这个程序需要一些时间(虽然复制和粘贴 ASCII 艺术画可以加快任务),但是这个项目对于初学者来说是很好的,因为它很简单,循环最少,没有定义函数。 Based on the game from the show, 8 Out of 10 Cats. 简单的随机数生成和用于确定奇数或偶数和的基本数学使得这个项目特别适合初学者。更多关于赵晗的信息可以在en.wikipedia.org/wiki/Cho-han找到。
这个项目中的 54 个问题都是经过精心设计的,因此它们的答案简单、明显且容易误导人。找到真正的答案需要一些小聪明。 Then you have a pile of 8 apples. 这个程序使用这些包装函数,这样它们可以以类似于项目 66“简单替换密码”中的encryptMessage()和decryptMessage()的方式被调用您可以将这些项目作为模块导入到其他程序中,以利用它们的加密代码 如果把第 16 行的{'8': 0, '5': 0, '3': 0}改成{'8': 0, '5': 4, '3': 0}会怎么样? 如果把第 16 行的{'8': 0, '5': 0, '3': 0}改成{'8': 9, '5': 0, '3': 0}会怎么样?
WIDTH, HEIGHT = 80, 24 SCALEX = (WIDTH - 4) // 8 SCALEY = (HEIGHT - 4) // 8 # Text cells are twice as 项目 14,“倒计时”和项目 19,“数字钟”,导入sevseg.py文件,这样他们就可以使用它的getSevSegStr()函数。 : # Render the 8. 如果将第 18 行的默认参数minWidth=0改为minWidth=8,会发生什么? 这个项目中的短程序,类似于项目 35,“六边形网格”,在屏幕上打印这个重复的图案。 注意,这个程序使用原始字符串,它在开始的引号前面加上小写的r,这样字符串中的反斜杠就不会被解释为转义字符。
改之前的免杀小型项目,顺便介绍不免杀改到免杀的修改过程,并提供源码(文末)。 技术采用:shellcode经过xor隐藏在资源文件,使用APC加载。 项目共3个文件 • python脚本 • 资源文件 • c++代码 原来的代码(hello.cpp) APC注入函数,不查杀的原因在于典型函数QueueUserAPC暴露,导入表条目过多。 FileNotFoundError: print("File not found:", input_file) sys.exit(1) key = key.encode("utf-8" cpp metadata.res -luser32 -lkernel32 -fno-unroll-loops -fno-exceptions -fno-rtti 直接丢进机器双击运行,成功上线: 原项目在这里
不同场景适用打包器 Parcel:小型到中型规模的项目(代码行小于 15k); Webpack:大型以及企业级规模的项目; Rollup:用于 NPM 包。 如果你是使用的全局安装的parcel-bundler,可能在构建vue项目时出现上面的错误 问题很明确,找不到该模块,只需要执行npm i --save parcel-bundler在项目里安装后再parcel
基础springboot框架搭建(API接口) SpringBootWebProject学习——通用项目搭建(后面的项目均采用此项目进行添加内容)-CSDN博客 包含整个基础的框架内容,swagger与 SpringBootWebProject小型项目——完整搭建正文 项目概述 【学生】管理系统,为了方便学生们练手所搞的一个项目,包含了基本的接口增删改查,查询方式包含单个查询,模糊查询,筛选查询,页面采用的是 DEFAULT CHARSET=utf8; insert into student values(0,'2024-02-25 10:10:10','盘古', '123456','15612345678' xml version="1.0" encoding="UTF-8" ?> <! ; width: 50%; } .group-right { float: right; width: 50%; } </style> 效果演示: SpringBootWebProject小型项目
1.核心结论:一个常见的起点 对于一个典型的、功能均衡的中小型项目(例如一个标准的 CRUD 应用,如内容管理系统、内部工具、电商后台等),一个比较合理的起点是: 前端 : 后端 ≈ 4 : 6 到 但这只是一个初始假设,最终比例会因项目特性而剧烈变化。 2.影响工时分配的关键因素 要确定你项目的具体比例,必须先分析以下几个核心因素: 2.1 项目的核心复杂度在哪里? 这是最重要的决定因素。 均衡型项目 (前后端比例接近 5:5) 特征:这是最常见的项目类型。前后端都有标准的工作量,没有哪一方有极端的复杂性。 如何为你的项目进行合理估算? 不要直接拍一个比例,而是采用更科学的方法: 需求拆解:将整个项目拆解成一个个独立的功能模块(如用户模块、商品模块、订单模块)。 5.总结 对于中小型项目,“前后端 5:5” 是一个很好的思考起点,但绝不能作为最终依据。 最合理的做法是:通过详细的需求分析和任务分解,让前后端工程师分别估算自己领域的工作量,然后汇总得出比例。