python基础——经营第一个项目,如何将python学得更6 ?

article/2025/11/6 16:17:24

python基础——经营第一个项目,如何将python学得更6 ?


  hello!我是wakeyo_J,每天一个konwledge point,一起学python,让技术无限发散。

经营第一个项目,如何将python学得更6 ?

  • python基础——经营第一个项目,如何将python学得更6 ?
  • 1. 明确项目目的
    • 1.1 项目实现步骤
    • 1.2 明确项目目的
  • 2. 分词流程,拆解项目
  • 3. 逐步解决,逐渐完善
    • 3.1 版本1.0
    • 3.2 版本2.0
    • 3.3 版本3.0
  • 总结

  想要学好一门技术,最重要的是兴趣,兴趣是支持你前进的动力。
在这里插入图片描述

1. 明确项目目的

学了python的基础后,怎样编写出“人类高质量”的程序 ?一是自己的思维,二是循环往复+举一反三的练习。才能把python学得更6,进入正题:
在这里插入图片描述
古人云,“纸上得来终觉浅,绝知此事要躬行”,编程更是如此,要想编好程序,项目实战是成长最快的途径。我依稀记得当我第一次完成一个项目,有种“会当凌绝顶”的感觉,强大的成就感让自己有点膨胀。

学习python必不可少的是要做几个让自己满意的项目。

项目的设置,主要带大家了解专业程序员一般是如何思考和解决问题的,再一遍遍分析问题、拆解问题及解决问题,在整个过程中充分理解所学知识。运用所学知识,也会适当补充一些新知识,一起完成一个文字版的「奥特曼大战怪兽」。
在这里插入图片描述

好了,在开始我们的项目之前,我们先说一说一个项目一般是怎么完成的,说白了就是程序员是如何思考的。

1.1 项目实现步骤

(1)问题拆解
问题拆解就是说,在面对一个问题时,将一个大问题拆解成多个步骤或者多个方面,逐步解决,最后完成整个问题,达到所要结果。

其实,这种拆解问题的思维很常见,你也遇到过。比如,你需要洗衣服,怎么完成洗衣服呢? 1.把衣服放进洗衣机;2.倒入洗衣液;3.然后点击开始按钮;4.洗衣机洗衣服;5.晾衣服。

在编程中,我们拆解问题就需要按照编写代码的思维方式来拆解。
如:
在这里插入图片描述
在这里插入图片描述
明确项目目的,指的就是我们希望这个程序干什么,达到什么样的效果,从而帮助我们分析整个项目流程,拆解项目;然而,一个完美的拆解方案,应当是按照从上往下的逻辑自然拆解,难度逐渐增加;逐步解决问题,逐渐完善整个项目功能。

1.2 明确项目目的

这次我们要实现的是「奥特曼大战怪兽」,具体效果参考如下:
请添加图片描述

用文字描述一下,在这个游戏中,奥特曼(ATM)大战怪兽(BOSS),在这个游戏中,会随机生成奥特曼与怪兽的属性,相互攻击,直到有一方的血量为0。并且,这样的战斗采取三局两胜制,最后显示战斗结果,公布获胜方。
在这里插入图片描述

2. 分词流程,拆解项目

编写代码,谁都不能一步到位,尤其对于初入门的来说,逐步解决,逐渐完善才是最好的过程,按照“难度递增,功能叠加”的思路,将这个游戏拆解成三个版本。
在这里插入图片描述
版本1.0主要是帮我们理清战斗逻辑,而版本2.0与3.0会涉及到新的知识点,到时候再讲解。

3. 逐步解决,逐渐完善

3.1 版本1.0

理清战斗逻辑
在这里插入图片描述
在游戏中,都有哪些基础元素?
在这里插入图片描述
根据这些元素,我们要做的主要有三步:
1、规定奥尔特曼和怪兽的属性。
2、双方攻击时,失血量根据对方的攻击来计算。
3、如果有一方的血量减少到0以下,GAMEu3000OVER。

版本1.0流程图
在这里插入图片描述

  1. 设定【奥特曼】和【BOSS】的属性,及【血量】和【攻击力】。
print('【奥特曼】血量:100攻击力:25')   # 自定义奥特曼角色的血量和攻击
print('【怪兽】血量:100攻击力:20')   # 自定义怪兽角色的血量和攻击
  1. 双方攻击人工计算各自剩余血量。
print('奥特曼发起了攻击,【怪兽】剩余血量75') #人工计算怪兽剩余血量100-25 = 75
print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量80') #人工计算奥特曼剩余血量100-20 = 80
  1. 继续攻击,人工计算各自剩余血量。
print('奥特曼发起了攻击,【怪兽】剩余血量50') #人工计算怪兽剩余血量75-25 = 50
print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量60') #人工计算奥特曼剩余血量80-20= 60
  1. 继续攻击,人工计算各自剩余血量。
print('奥特曼发起了攻击,【怪兽】剩余血量25') #人工计算怪兽剩余血量50-25= 25
print('怪兽向李逍遥发起了攻击,【奥特曼】剩余血量40') #人工计算奥特曼剩余血量60-20=40
  1. 继续攻击,人工计算各自剩余血量。
print('奥特曼发起了攻击,【怪兽】剩余血量0') #人工计算怪兽剩余血量25-25=0,此时怪兽血量为0,怪兽死亡,游戏结束。
print('怪兽向李逍遥发起了攻击,【奥特曼】剩余血量20') #人工计算奥特曼剩余血量40-20=20
print('怪兽死了,奥特曼赢了')

完整代码
time.sleep()就是制作延迟效果的,让代码能够延迟出现,那我们就让代码延迟2s出现。

import time  #调用time模块print('【奥特曼】血量:100攻击力:25')   # 自定义奥特曼角色的血量和攻击
print('【怪兽】血量:100攻击力:20')   # 自定义怪兽角色的血量和攻击
print('-----------------------')
time.sleep(2)print('奥特曼发起了攻击,【怪兽】剩余血量75') #人工计算怪兽剩余血量100-25 = 75
print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量80') #人工计算奥特曼剩余血量100-20 = 80
print('-----------------------')
time.sleep(2)print('奥特曼发起了攻击,【怪兽】剩余血量50') #人工计算怪兽剩余血量75-25 = 50
print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量60') #人工计算奥特曼剩余血量80-20= 60
print('-----------------------')
time.sleep(2)print('奥特曼发起了攻击,【怪兽】剩余血量25') #人工计算怪兽剩余血量50-25= 25
print('怪兽向李逍遥发起了攻击,【奥特曼】剩余血量40') #人工计算奥特曼剩余血量60-20=40
print('-----------------------')
time.sleep(2)print('奥特曼发起了攻击,【怪兽】剩余血量0') #人工计算怪兽剩余血量25-25=0,此时怪兽血量为0,怪兽死亡,游戏结束。
print('怪兽向李逍遥发起了攻击,【奥特曼】剩余血量20') #人工计算奥特曼剩余血量40-20=20
print('-----------------------')
time.sleep(2)print('怪兽死了,奥特曼赢了')

3.2 版本2.0

随机属性,自动PK
在这里插入图片描述
这个阶段,我们主要增加【随机属性】和【自动战斗】两个功能,画出流程图:
在这里插入图片描述
版本1.0中,我们自定义双方属性,这不等于暗箱操作吗。所以,为了公平起见,我们要让计算机随机生成双方属性。

授人以鱼不如授人以渔,我们要养成独立思考的习惯。遇到问题,问问度娘吗?看看度娘怎么说?
在这里插入图片描述
度娘有好多答案,点进第一个进去看看。
在这里插入图片描述
度娘告诉我们的答案。看到教程中,要生成随机数,要使用random随机数模块中的randint(a,b)函数,括号内为a,b两个数字为生成随机数的范围,a是小数字,b是大数字。

import random 
#调用random模块
num = random.randint(1,100)
# 随机生成1-100范围内(含1和100)的一个整数,并赋值给变量a
print(num)

版本2.0要求
1、定义两个变量,用来存储奥特曼的血量和攻击力。
2、血量是100-150之间的随机数,攻击力是20-30之间的随机数。
3、打印两个变量。

import random
ATM_life = random.randint(100,150)
#表示奥特曼血量
ATM_attack = random.randint(20,30)
#表示奥特曼攻击
print(ATM_life )
print(ATM_attack)
import time
import random
#也可合并写成一行:import time,random# 生成随机属性
ATM_life = random.randint(100,150) # “freeLi_life” 代表奥特曼血量
ATM_attack = random.randint(20,30) # “freeLi_attack” 代表奥特曼攻击
BOSS_life = random.randint(100,150) # “BOSS_life” 代表怪兽血量
BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表怪兽攻击# 展示双方角色的属性
print('【奥特曼】\n'+'血量:'+str(ATM_life)+'\n攻击:'+str(ATM_attack))
#ATM_life和ATM_attack的数据类型都是整数,所以拼接时需要先用str()转换
print('------------------------')
time.sleep(1)
#暂停一秒再执行后续代码
print('【怪兽】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack))
print('------------------------')

实现“自动PK”

发现5-7这三行代码是重复出现的结构,除了数字是变化的,其余的一模一样。并且这3行代码出现了4次,解决重复工作用什么?

现在是奥特曼和怪兽双方互相攻击,到底要打斗多少次,我们不知道,打斗多长时间我们也不知道,我们只知道,有一个的血量为0时,战斗结束。也就是我们只知道循环的条件。OK。如何让这个循环一直执行,也就是双方的血量都大于0嘛。
在这里插入图片描述

while(ATM_life>0) and (BOSS_life>0) #and两边用()括起来,更方便大家阅读。

条件找到了,接下来就是while的循环体,双方互相攻击:

print('奥特曼发起了攻击,【怪兽】剩余血量XXX')
print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量XXX')

其中【怪兽】剩余血量=怪兽当前血量-奥特曼攻击力,【奥特曼】剩余血量=奥特曼当前血量-怪兽攻击力

ATM_life = ATM_life - BOSS_attack 
BOSS_life = BOSS_life - ATM_attack 
#赋值语句的执行顺序是先计算等号右边,再赋值给左边的变量

版本2.0 完整代码

import time
import random
#也可合并写成一行:import time,random# 生成随机属性
ATM_life = random.randint(100,150) # “ATM_life” 代表奥特曼血量
ATM_attack = random.randint(20,30) # “ATM_attack” 代表奥特曼攻击
BOSS_life = random.randint(100,150) # “BOSS_life” 代表怪兽血量
BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表怪兽攻击# 展示双方角色的属性
print('【奥特曼】\n'+'血量:'+str(ATM_life)+'\n攻击:'+str(ATM_attack))
#ATM_life和ATM_attack的数据类型都是整数,所以拼接时需要先用str()转换
print('------------------------')
time.sleep(1)
#暂停一秒再执行后续代码
print('【怪兽】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack))
print('------------------------')# 自动PK阶段
while(ATM_life>0) and (BOSS_life>0):ATM_life = ATM_life - BOSS_attack BOSS_life = BOSS_life - ATM_attack print('奥特曼发起了攻击,【怪兽】剩余血量'+str(BOSS_life))#ATM_life是整数,所以拼接时要先用str()转换print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量'+str(ATM_life))print('------------------------')time.sleep(2)# 为了体现出战斗回合,这里停顿2秒 

3.3 版本3.0

打印出每局结果,三局两胜打印最终战果。这就是版本3.0需要做的事情

打印战果,三局两胜。
在这里插入图片描述
版本3.0 新增功能
1、打印战果:每局战斗后,根据胜负平的结果打印出不同的提示。
2、三局两胜:双方战斗三局,胜局多的为最终赢家。
在这里插入图片描述
当奥特曼与怪兽PK的时候,血量都会开始递减,经过多次攻击,会出现如下结果。
在这里插入图片描述
增加这次战局结果的判定。

import time
import random
#也可合并写成一行:import time,random# 生成随机属性
ATM_life = random.randint(100,150) # “ATM_life” 代表奥特曼血量
ATM_attack = random.randint(20,30) # “ATM_attack” 代表奥特曼攻击
BOSS_life = random.randint(100,150) # “BOSS_life” 代表怪兽血量
BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表怪兽攻击# 展示双方角色的属性
print('【奥特曼】\n'+'血量:'+str(ATM_life)+'\n攻击:'+str(ATM_attack))
#ATM_life和ATM_attack的数据类型都是整数,所以拼接时需要先用str()转换
print('------------------------')
time.sleep(1)
#暂停一秒再执行后续代码
print('【怪兽】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack))
print('------------------------')# 自动PK阶段
while(ATM_life>0) and (BOSS_life>0):ATM_life = ATM_life - BOSS_attack BOSS_life = BOSS_life - ATM_attack print('奥特曼发起了攻击,【怪兽】剩余血量'+str(BOSS_life))#ATM_life是整数,所以拼接时要先用str()转换print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量'+str(ATM_life))print('------------------------')time.sleep(2)# 为了体现出战斗回合,这里停顿2秒 # 打印战果
if ATM_life > 0 and BOSS_life <= 0:print('怪兽挂了,奥特曼赢了')
elif ATM_life <= 0 and BOSS_life > 0:print('悲催,怪兽把奥特曼干掉了!')
else:print('哎呀,奥特曼和怪兽同归于尽了!') 

三局两胜,怎么办?

在这里插入图片描述
双方3局2胜,得记录胜负的结果,那我们引入一个变量,来记录胜负得分结果,最后进行判断,输出战果。

import time
import random# 也可合并写成一行:import time,random
for i in range(1, 4):time.sleep(1)  # 让局与局之间有较明显的有时间间隔print(' \n——————现在进行第' + str(i) + '局,3,2,1,go!——————')  # 作为局的标记# 生成随机属性ATM_life = random.randint(100, 150)  # “ATM_life” 代表奥特曼血量ATM_attack = random.randint(20, 30)  # “ATM_attack” 代表奥特曼攻击BOSS_life = random.randint(100, 150)  # “BOSS_life” 代表怪兽血量BOSS_attack = random.randint(20, 30)  # “BOSS_attack” 代表怪兽攻击# 展示双方角色的属性print('【奥特曼】\n' + '血量:' + str(ATM_life) + '\n攻击:' + str(ATM_attack))# ATM_life和ATM_attack的数据类型都是整数,所以拼接时需要先用str()转换print('------------------------')time.sleep(1)# 暂停一秒再执行后续代码print('【怪兽】\n' + '血量:' + str(BOSS_life) + '\n攻击:' + str(BOSS_attack))print('------------------------')# 自动PK阶段while (ATM_life > 0) and (BOSS_life > 0):ATM_life = ATM_life - BOSS_attackBOSS_life = BOSS_life - ATM_attackprint('奥特曼发起了攻击,【怪兽】剩余血量' + str(BOSS_life))# ATM_life是整数,所以拼接时要先用str()转换print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量' + str(ATM_life))print('------------------------')time.sleep(2)# 为了体现出战斗回合,这里停顿2秒# 打印战果if ATM_life > 0 and BOSS_life <= 0:print('怪兽挂了,奥特曼赢了')elif ATM_life <= 0 and BOSS_life > 0:print('悲催,怪兽把奥特曼干掉了!')else:print('哎呀,奥特曼和怪兽同归于尽了!')

给计算机制定“计分牌”, 用于存放【奥特曼】和【怪兽】的每一局得分。

import time
import randomATM_score = 0
# 存放奥特曼赢的局数。
BOSS_score = 0
# 存放怪兽赢的局数for i in range(1, 4):time.sleep(1)  # 让局与局之间有较明显的有时间间隔print(' \n——————现在进行第' + str(i) + '局,3,2,1,go!——————')  # 作为局的标记# 生成随机属性ATM_life = random.randint(100, 150)  # “ATM_life” 代表奥特曼血量ATM_attack = random.randint(20, 30)  # “ATM_attack” 代表奥特曼攻击BOSS_life = random.randint(100, 150)  # “BOSS_life” 代表怪兽血量BOSS_attack = random.randint(20, 30)  # “BOSS_attack” 代表怪兽攻击# 展示双方角色的属性print('【奥特曼】\n' + '血量:' + str(ATM_life) + '\n攻击:' + str(ATM_attack))# ATM_life和ATM_attack的数据类型都是整数,所以拼接时需要先用str()转换print('------------------------')time.sleep(1)# 暂停一秒再执行后续代码print('【怪兽】\n' + '血量:' + str(BOSS_life) + '\n攻击:' + str(BOSS_attack))print('------------------------')# 自动PK阶段while (ATM_life > 0) and (BOSS_life > 0):ATM_life = ATM_life - BOSS_attackBOSS_life = BOSS_life - ATM_attackprint('奥特曼发起了攻击,【怪兽】剩余血量' + str(BOSS_life))# ATM_life是整数,所以拼接时要先用str()转换print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量' + str(ATM_life))print('------------------------')time.sleep(2)# 为了体现出战斗回合,这里停顿2秒# 打印战果if ATM_life > 0 and BOSS_life <= 0:ATM_score = ATM_score + 1print('怪兽挂了,奥特曼赢了')elif ATM_life <= 0 and BOSS_life > 0:BOSS_score = BOSS_score + 1print('悲催,怪兽把奥特曼干掉了!')else:print('哎呀,奥特曼和怪兽同归于尽了!')

最后,再做一次判断,比较一下奥特曼赢得局数和怪兽赢得局数。
在这里插入图片描述

import time
import randomATM_score = 0
#存放奥特曼赢的局数。
BOSS_score = 0
#存放怪兽赢的局数

将奥特曼和怪兽各自赢得局数算出来。

import time
import randomATM_score = 0
# 存放奥特曼赢的局数。
BOSS_score = 0
# 存放怪兽赢的局数for i in range(1, 4):time.sleep(1)  # 让局与局之间有较明显的有时间间隔print(' \n——————现在进行第' + str(i) + '局,3,2,1,go!——————')  # 作为局的标记# 生成随机属性ATM_life = random.randint(100, 150)  # “ATM_life” 代表奥特曼血量ATM_attack = random.randint(20, 30)  # “ATM_attack” 代表奥特曼攻击BOSS_life = random.randint(100, 150)  # “BOSS_life” 代表怪兽血量BOSS_attack = random.randint(20, 30)  # “BOSS_attack” 代表怪兽攻击# 展示双方角色的属性print('【奥特曼】\n' + '血量:' + str(ATM_life) + '\n攻击:' + str(ATM_attack))# ATM_life和ATM_attack的数据类型都是整数,所以拼接时需要先用str()转换print('------------------------')time.sleep(1)# 暂停一秒再执行后续代码print('【怪兽】\n' + '血量:' + str(BOSS_life) + '\n攻击:' + str(BOSS_attack))print('------------------------')# 自动PK阶段while (ATM_life > 0) and (BOSS_life > 0):ATM_life = ATM_life - BOSS_attackBOSS_life = BOSS_life - ATM_attackprint('奥特曼发起了攻击,【怪兽】剩余血量' + str(BOSS_life))# ATM_life是整数,所以拼接时要先用str()转换print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量' + str(ATM_life))print('------------------------')time.sleep(2)# 为了体现出战斗回合,这里停顿2秒# 打印战果if ATM_life > 0 and BOSS_life <= 0:ATM_score = ATM_score + 1print('怪兽挂了,奥特曼赢了')elif ATM_life <= 0 and BOSS_life > 0:BOSS_score = BOSS_score + 1print('悲催,怪兽把奥特曼干掉了!')else:print('哎呀,奥特曼和怪兽同归于尽了!')if ATM_score > BOSS_score:time.sleep(1)print('【 大战3个回合:奥特曼赢了!】')
elif BOSS_score > ATM_score:print('【大战3个回合:奥特曼输了!】')
else:print('【大战3个回合:平局!】')

终于做完项目了。做完人生中的第一个Python项目,开心不?为自己鼓掌,仅仅不到50行的代码,完成了奥特曼大战怪兽游戏,感觉Python是不是很简单?还是那一句,人生苦短,我学Python!

项目已经做完了,但还是要追求尽善尽美。有个地方需要【格式化字符串】
在这里插入图片描述

import time
import random
#也可合并写成一行:import time,randomATM_score = 0
#存放奥特曼赢的局数。
BOSS_score = 0
#存放怪兽赢的局数for i in range(1,4):time.sleep(1)  # 让局与局之间有较明显的有时间间隔print(' \n——————现在进行第'+str(i)+'局,3,2,1,go!——————')  # 作为局的标记# 生成随机属性ATM_life = random.randint(100,150) # “ATM_life” 代表奥特曼血量ATM_attack = random.randint(20,30) # “ATM_attack” 代表奥特曼攻击BOSS_life = random.randint(100,150) # “BOSS_life” 代表怪兽血量BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表怪兽攻击# 展示双方角色的属性print('【怪兽】\n血量:%s\n攻击力:%s' %( ATM_life, ATM_attack))#fATM_life和ATM_attack的数据类型都是整数,所以拼接时需要先用str()转换print('------------------------')time.sleep(1)#暂停一秒再执行后续代码print('【怪兽】\n血量:%s\n攻击力:%s' %(BOSS_life, BOSS_attack))print('------------------------')# 自动PK阶段while(ATM_life>0) and (BOSS_life>0):ATM_life = ATM_life - BOSS_attack BOSS_life = BOSS_life - ATM_attack print('奥特曼发起了攻击,【怪兽】剩余血量'+str(BOSS_life))#ATM_life是整数,所以拼接时要先用str()转换print('怪兽向奥特曼发起了攻击,【奥特曼】剩余血量'+str(ATM_life))print('------------------------')time.sleep(2)# 为了体现出战斗回合,这里停顿2秒  # 打印战果if ATM_life > 0 and BOSS_life <= 0:freeLi_score=ATM_score+1print('怪兽挂了,奥特曼赢了')elif ATM_life <= 0 and BOSS_life > 0:BOSS_score = BOSS_score +1print('悲催,怪兽把奥特曼干掉了!')else:print('哎呀,奥特曼和怪兽同归于尽了!')if ATM_score > BOSS_score  :time.sleep(1)print('【 大战3个回合:奥特曼赢了!】')
elif BOSS_score  > ATM_score:print('【大战3个回合:奥特曼输了!】')
else: print('【大战3个回合:平局!】')

总结

  本文属于作者原创,转载请注明出处,不足之处,希望大家能过给予宝贵的意见,如有侵权,请私信。每天一个knowledge point,一起学python,让技术无限发散。


http://chatgpt.dhexx.cn/article/mEe5la3X.shtml

相关文章

5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧

最近在做python项目开发的时候发现了好多好玩的小项目&#xff0c;并且都是代码量较少容易上手&#xff0c;对新手十分友好。所以今天就来和小伙伴分享一些Python从一行代码到三十行代码的好玩项目&#xff0c;之后博主也会在这里持续更新更多好玩的项目&#xff0c;记得关注哦…

70个Python练手项目列表,看了让你茅塞顿开~

前言&#xff1a; 不管学习哪门语言都希望能做出实际的东西来&#xff0c;这个实际的东西当然就是项目啦&#xff0c;不用多说大家都知道学编程语言一定要做项目才行。 这里整理了70个Python实战项目列表&#xff0c;都有完整且详细的教程&#xff0c;你可以从中选择自己想做的…

Python 小型项目大全 36~40

三十六、沙漏 原文&#xff1a;http://inventwithpython.com/bigbookpython/project36.html 这个可视化程序有一个粗糙的物理引擎&#xff0c;模拟沙子通过沙漏的小孔落下。沙子堆积在沙漏的下半部分&#xff1b;然后把沙漏翻过来&#xff0c;重复这个过程。 运行示例 图 36-…

7 年 Python 的我,总结了这 90 条写 Python 程序的建议

本文于网络整理&#xff0c;版权归原作者所有 自己写 Python 也有四五年了&#xff0c;一直是用自己的“强迫症”在维持自己代码的质量。都有去看Google的Python代码规范&#xff0c;对这几年的工作经验&#xff0c;做个简单的笔记&#xff0c;如果你也在学pythpn&#xff0c;准…

pot lib:optimal transport python库

文章目录 transport1. [计算最优传输&#xff08;Computational Optimal Transport&#xff09;](https://zhuanlan.zhihu.com/p/94978686)2. 离散测度 (Discrete measures), 蒙日(Monge)问题, Kantorovich Relaxation (松弛的蒙日问题)3. scipy.stats.wasserstein_distance 距…

Python 小型项目大全 46~50

# 四十六、百万骰子投掷统计模拟器 原文&#xff1a;http://inventwithpython.com/bigbookpython/project46.html 当你掷出两个六面骰子时&#xff0c;有 17%的机会掷出 7。这比掷出 2 的几率好得多&#xff1a;只有 3%。这是因为只有一种掷骰子的组合给你 2&#xff08;当两个…

在 Python 中完成的一些大型项目有哪些?

在本文中&#xff0c;我们将了解一些在 Python 中完成的大型项目。 Python是目前最流行的编程语言之一。这一趋势似乎将在 2022 年及以后继续下去。所以&#xff0c;如果你刚刚开始使用Python&#xff0c;你能做的最好的事情就是研究一些现实世界的Python项目想法。 Python 是…

PBL Python 学习——第0天

一个月PBL Python学习 第一章 Python环境的基本搭建 文章目录 一个月PBL Python学习前言一、Python下载二、Pycharm下载和配置1.Pycharm下载macOS查看方法第一步第二步第三步 Windows 2.Pycharm配置macOSWindows 总结 前言 本人是一位中学生&#xff0c;python新手&#xff0…

Python 小型项目大全 61~65

六十一、ROT13 密码 原文&#xff1a;http://inventwithpython.com/bigbookpython/project61.html ROT13 密码是最简单的加密算法之一&#xff0c;代表“旋转 13 个空格”密码将字母A到Z表示为数字 0 到 25&#xff0c;加密后的字母距离明文字母 13 个空格&#xff1a; A变成N&…

7个Python实战项目代码,让你分分钟晋级大老

关于Python有一句名言&#xff1a;不要重复造轮子。 但是问题有三个&#xff1a; 1、你不知道已经有哪些轮子已经造好了&#xff0c;哪个适合你用。有名有姓的的著名轮子就400多个&#xff0c;更别说没名没姓自己在制造中的轮子。 2、确实没重复造轮子&#xff0c;但是在重复…

Python 小型项目大全 76~81

七十六、井字棋 原文&#xff1a;http://inventwithpython.com/bigbookpython/project76.html 井字棋是一种在3 3网格上玩的经典纸笔游戏。玩家轮流放置 X 或 O 标记&#xff0c;试图连续获得三个。大多数井字棋都以平局告终&#xff0c;但如果你的对手不小心&#xff0c;你也…

Python 小型项目大全 66~70

六十六、简单替换密码 原文&#xff1a;http://inventwithpython.com/bigbookpython/project66.html 简单替换密码用一个字母代替另一个字母。由于字母A有 26 种可能的替换&#xff0c;B有 25 种可能的替换&#xff0c;C有 24 种可能的替换&#xff0c;等等&#xff0c;所以可能…

河北软件职业技术学院05级NIIT班第四学习小组——流氓山好汉一览

李大毛&#xff1a;只所以叫大毛&#xff0c;并不是因为这家伙浑身长毛&#xff0c;而是因为这家伙天天下载毛片&#xff0c;使毛片比病毒还疯狂地通过QQ在班里乱窜。 王狗狗&#xff1a;只所以叫狗狗是因为这家伙特别坏&#xff0c;在女生面前常常装成一正人君子面&#xff0…

软件精英齐聚张江 “校园之星”闪亮沪上——微软院校IT课程“校园之星”大赛决赛结果揭晓

2007年8月10日&#xff0c;微软院校IT课程“校园之星”大赛总决赛和颁奖仪式在上海张江软件园举行。自活动开展以来&#xff0c;备受人们关注的冠军获得者终于水落石 出&#xff0c;冠军组成员为湖北武汉商贸职业学院陶泽华、江苏南通农业职业技术学院王珍勇、辽宁沈阳理工大学…

重磅:吴晟当选 Apache 软件基金会 2021年董事

点击上方“开源社”关注我们 | 作者&#xff1a;刘天栋 | 编辑&#xff1a;王玥敏 | 设计&#xff1a;王福政 宣布新一届 ASF 董事会成员名单 在本周举行的 Apache 软件基金会&#xff08;ASF&#xff09;年度会员大会上&#xff0c;以下人员当选为ASF董事会成员。 Bertrand De…

科东软件Intewell操作系统获2023数字中国创新大赛·信创赛道全国总决赛三等奖

深耕信创生态&#xff0c;科东软件捷报频传 科东软件Intewell操作系统获2023数字中国创新大赛信创赛道全国总决赛三等奖 4月27日&#xff0c;2023数字中国创新大赛信创赛道全国总决赛(以下简称“大赛”)落下帷幕&#xff0c;历时2个多月&#xff0c;全国282支队伍&#xff0c;…

麦聪软件喜获双软认证

近日&#xff0c;北京麦聪软件有限公司&#xff08;以下简称&#xff1a;麦聪软件&#xff09;喜获由中国软件行业协会颁发并由北京软件和信息服务业协会评估的“软件产品证书”和“软件企业证书”&#xff0c;即业界公认的“双软认证”。 据了解&#xff0c;获得“双软认证”…

清华学姐熬了一个月肝出这份32W字软件测试知识手册,在 Github标星31K+

前言 金三银四即将过去&#xff0c;后面迎来的便是金九银十&#xff0c;一直想着说分享一些软件测试的面试题&#xff0c;这段时间做了一些收集和整理&#xff0c;大家可以试着做一下&#xff0c;希望能帮助到大家。 包括测试理论、Linux基础、MySQL基础、Web测试、接口测试、…

MFC学生成绩管理系统

MFC学生成绩管理系统 程序使用MFC框架编写&#xff0c;开发工具是VC6.0。 要求完成以下功能&#xff1a; 添加学生信息&#xff08;学生信息包含学号、姓名、班级、密码、各科成绩等&#xff09;&#xff1b;删除学生信息&#xff08;指定学号删除&#xff09;&#xff1b;修…