001 python基础实战
报名了阿里大学的AI,一直没有学习,今天开始正式学习。
今天是第一节,Python的基础编程实战,里面包含两个示例。
一:任务实现文件的批量重命名。
1.创建一个目录

2.程序
#!/usr/bin/python
#-*- coding:UTF-8 -*-
import os
def remove_ad_text(dir2,text):
"""
用来删除特定广告文本的函数
该函数会检索指定根目录下的所有文件和目录,并递归,使得所有的广告词都删除
:param dir2: 指定要检查的根目录
:param text: 指定特定的广告词
:return:
"""
#如果不是目录,则返回
if not os.path.isdir(dir2):
return
#如果传递的dir2末尾没有路径分隔符,则加入路径分割符
if not dir2.endswith(os.path.sep):
dir2+=os.path.sep #获取该目录下的所有文件或者文件夹,返回列表
names=os.listdir(dir2)
#依次遍历目录或者文件名 #对文件与子目录的处理方式不同
for name in names:
#拼接操作,路径和文件名
sub_path=os.path.join(dir2,name)
#是否为目录
if(os.path.isdir(sub_path)):
remove_ad_text(sub_path,text)
##都要重命名
name=name.replace(text,"")
#组合新路劲
new_path=os.path.join(dir2,name)
os.rename(sub_path,new_path) remove_ad_text(r"D:\下载的文件","[www.baidu.com]")
二:21点小游戏
1.题目规则
规则:2-9代表2-9,10-k代表10点,A可代表1点或者10点。
庄家或者玩家各发两张牌,庄家只显示一张牌。
1.玩家可以根据自己牌面的点数,选择是否再要下一张牌,可多次要牌,如果玩家的牌点数超过21点,则玩家负
2.如果玩家没有超过21点,并且选择停牌,则庄家开始发牌,庄家如果没有达到17点,则一直要牌,如果达到17点,则必须停止。如果庄家牌面点数超过21点,则庄家负
3.如果都没有达到21点,点数多着胜利。
2.程序分析
创建一副扑克牌
创建庄家和玩家
发牌,给庄家一张牌,给玩家发两张牌
玩家根据自己的牌面与庄家的牌面来选择是否要牌,这里要咨询
循环:
如果玩家要牌,则继续发牌。发牌之后,判断玩家是否爆牌,如果爆牌,则玩家负。
循环;
如果玩家停牌,则庄家开始要牌,如果庄家小于17,则无条件要牌,如果大于17,小于21,则必须停牌。如果庄家大于21,则庄家负。
如果都没有爆牌,则比较大小的点数。
3.程序
#!/usr/bin/python
#-*- coding:UTF-8 -*-
import sys
import random
import time
class Card:
"""
定义扑克牌,每个对象是一个牌
"""
def __init__(self,card_type,card_text,card_value):
"""
初始化方法
:param card_type: 扑克牌类型
:param card_text: 扑克牌显示的文本
:param card_value: 扑克牌的真实值
"""
self.card_type=card_type
self.card_text=card_text
self.card_value=card_value class Role:
"""
定义角色类,用来表示庄家与玩家,庄家是电脑,玩家是用户
"""
def __init__(self):
"""
初始化方法
"""
#定义列表,用来保存当前角色手中的牌,初始化为空
self.cards=[] def show_card(self):
"""
向控制台上打印所有的牌
:return:
"""
for card in self.cards:
print(card.card_type,card.card_text,sep="",end="")
##换行
print() def get_value(self,min_or_max):
"""
获得当前角色手中牌的点数,这里重要的是知道最大最小点数的计算方式
:param min_or_max: str类型的,值为min或者max
当值为min,返回最小点数。即所有的A都是1,用来判断是否爆牌
当值为max,返回在不爆牌的时候的最大点数。即A可能表示为1或者11。
:return:返回手中牌的点数
"""
#总的点数
sum2=0
#A的数量
A=0
for card in self.cards:
#累加牌面所有的点数
sum2+=card.card_value
if card.card_text=='A':
A+=1
if min_or_max=='max':
#逐渐减少A的数量
for i in range(A):
value=sum2-i*10
if value<=21:
return value
return sum2-A*10 def burst(self):
"""
判断是否爆牌,是则返回True,否则返回False
:return: 返回bool
"""
return self.get_value("min")>21 class CardManager:
"""
扑克牌的管理者,管理一整套牌,并且可以发牌
"""
def __init__(self):
#保存一整套扑克牌
self.cards=[]
#定义牌的类型
all_card_type="♥♠♣♦"
#定义牌面的文本
all_card_text=['A','K','Q','J','','','','','','','','','']
#定义真实值
all_card_value=[11,10,10,10,10,9,8,7,6,5,4,3,2]
#一个嵌套循环,创建一个扑克牌
for card_type in all_card_type:
for index,card_text in enumerate(all_card_text):
card=Card(card_type,card_text,all_card_value[index])
##加到整副扑克牌
self.cards.append(card)
##洗牌,方便发牌
random.shuffle(self.cards) def send_card(self,role,num=1):
"""
给电脑或者玩家发牌,不能重复的发牌
:param role: 角色
:param num: 发牌的张数,默认为1张
:return:
"""
for i in range(num):
card=self.cards.pop()
role.cards.append(card) ##测试
#创建扑克牌管理器
cards=CardManager()
#创建角色
computer=Role()
player=Role()
#初始化
cards.send_card(computer)
cards.send_card(player,2)
##显示
computer.show_card()
player.show_card() ##询问玩家是否要牌
while True:
choice=input("是否再要一张牌?【y/n】")
if choice=='y':
cards.send_card(player)
player.show_card()
computer.show_card()
#判断,玩家是否爆牌
if player.burst():
print("爆牌,输了")
sys.exit()
else:
break ##庄家发牌
while True:
print("庄家发牌中----")
#产生一个间隔
time.sleep(1)
cards.send_card(computer)
player.show_card()
computer.show_card()
##判断,是否爆牌
if computer.burst():
print("庄家爆牌,你赢了")
sys.exit()
elif computer.get_value("max")>=17:
break ##做判断,前提是没有爆牌
play_value=player.get_value("max")
computer_value=computer.get_value("max")
if play_value>computer_value:
print("你赢了")
elif play_value== computer_value:
print("平局")
else:
print("你输了")
4.效果

001 python基础实战的更多相关文章
- python基础 实战作业 ---Excel基本读写与数据处理
代码地址如下:http://www.demodashi.com/demo/11650.html 看完本篇需要: 10min 作业练习需要: 0.5h~3h(依练习者对python熟悉程度而定) 看完本 ...
- python基础实战之猜年龄游戏
目录 一.Python基础实战之猜年龄游戏 给定年龄,用户可以猜三次年龄 年龄猜对,让用户选择两次奖励 用户选择两次奖励后可以退出 age = 18 # 答案 count = 0 # 游戏次数控制 p ...
- python基础实战
字符串的互相转换 字典的排序 字典的排序可以直接把,key值或者,values拿出来排序 也可以用dict.items拿出所有的key,value的值再加key=lambda x:x[1] 来排序. ...
- 五、Python基础(2)
五,Python基础(2) 1.数据类型基础 (一)什么是数据类型? 用于区分变量值的不同类型. (二)为何对数据分类? 针对不同状态就应该用不同类型的数据去标识. (三)数据类型分类 1.数字类型 ...
- python基础篇(完整版)
目录 计算机基础之编程和计算机组成 什么是编程语言 什么是编程 为什么要编程 编程语言的分类 机器语言(低级语言) 汇编语言 高级语言 计算机的五大组成 CPU(相当于人类的大脑) 多核CPU(多个大 ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- 第四章:Python基础の快速认识內置函数和操作实战
本課主題 內置函数介紹和操作实战 装饰器介紹和操作实战 本周作业 內置函数介紹和操作实战 返回Boolean值的內置函数 all( ): 接受一個可以被迭代的對象,如果函数裡所有為真,才會真:有一個是 ...
- python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...
- python基础语法和实战练习
(一)Python基础学习 Num01:python的基本数据类型 ①字符串:可进行拼接和截取 ②数字:int,float,complex(复数) 涉及到格式转换:int(x)转换为整数,float( ...
随机推荐
- centos7.4 linux 指令
1.查看版本 lsb_release -a 2.查看mysql路径 whereis mysql 3.查看编码 locale 修改语言编码 经过在网上查找资料发现,Centos 7已经不采用/etc/s ...
- BZOJ3028食物——生成函数+泰勒展开
题目描述 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这次又准备带一些 ...
- Could not find package vendor/name in a version matching v-Number 是坑!
当我遇到这个问题的时候曾去发布了issue -https://github.com/composer/packagist/issues/934 主要的问题是,composer require vend ...
- 添加sudo免密码
visudo 添加如下内容即可: lizhaojun ALL=(ALL) NOPASSWD: ALL
- 彻底理解cookie,session,token
发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用 ...
- NLP相关问题中文本数据特征表达初探
1. NLP问题简介 0x1:NLP问题都包括哪些内涵 人们对真实世界的感知被成为感知世界,而人们用语言表达出自己的感知视为文本数据.那么反过来,NLP,或者更精确地表达为文本挖掘,则是从文本数据出发 ...
- 金融量化分析【day111】:Matplotib-图标标注
一.图像标注 1.股票 df = pd.read_csv('601318.csv') df.plot() plt.plot([1,3,4,5]) plt.plot([5,8,7,9]) plt.tit ...
- tomcat 线程池
web server允许的最大线程连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右. 1.编辑tomcat安装目录下的conf目录下的server. ...
- TCP和UDP
目录: TCP流式协议 TCP模板 TCP聊天室 TCP通信与连接循环 TCP粘包 socketserver实现并发 UDP数据报协议 UDP模板 UDP传输 socketserver实现并发 TCP ...
- 在centos7下安装.net core
在这里记录下安装的过程: 一开始需要去官网下载centos相关的dotnetcore的sdk 上传到linux,解压,发现需要安装libunwind, 安装libunwind:yum install ...