报名了阿里大学的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基础实战的更多相关文章

  1. python基础 实战作业 ---Excel基本读写与数据处理

    代码地址如下:http://www.demodashi.com/demo/11650.html 看完本篇需要: 10min 作业练习需要: 0.5h~3h(依练习者对python熟悉程度而定) 看完本 ...

  2. python基础实战之猜年龄游戏

    目录 一.Python基础实战之猜年龄游戏 给定年龄,用户可以猜三次年龄 年龄猜对,让用户选择两次奖励 用户选择两次奖励后可以退出 age = 18 # 答案 count = 0 # 游戏次数控制 p ...

  3. python基础实战

    字符串的互相转换 字典的排序 字典的排序可以直接把,key值或者,values拿出来排序 也可以用dict.items拿出所有的key,value的值再加key=lambda x:x[1] 来排序. ...

  4. 五、Python基础(2)

    五,Python基础(2) 1.数据类型基础 (一)什么是数据类型? 用于区分变量值的不同类型. (二)为何对数据分类? 针对不同状态就应该用不同类型的数据去标识. (三)数据类型分类 1.数字类型 ...

  5. python基础篇(完整版)

    目录 计算机基础之编程和计算机组成 什么是编程语言 什么是编程 为什么要编程 编程语言的分类 机器语言(低级语言) 汇编语言 高级语言 计算机的五大组成 CPU(相当于人类的大脑) 多核CPU(多个大 ...

  6. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  7. 第四章:Python基础の快速认识內置函数和操作实战

    本課主題 內置函数介紹和操作实战 装饰器介紹和操作实战 本周作业 內置函数介紹和操作实战 返回Boolean值的內置函数 all( ): 接受一個可以被迭代的對象,如果函数裡所有為真,才會真:有一個是 ...

  8. python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...

  9. python基础语法和实战练习

    (一)Python基础学习 Num01:python的基本数据类型 ①字符串:可进行拼接和截取 ②数字:int,float,complex(复数) 涉及到格式转换:int(x)转换为整数,float( ...

随机推荐

  1. ☆ [HNOI2012] 永无乡 「平衡树启发式合并」

    题目类型:平衡树启发式合并 传送门:>Here< 题意:节点可以连边(不能断边),询问任意两个节点的连通性与一个连通块中排名第\(k\)的节点 解题思路 如果不需要询问排名,那么并查集即可 ...

  2. python学习日记(OOP——类的内置方法)

    __str__和__repr__ 改变对象的字符串显示__str__,__repr__ 我们先定义一个Student类,打印一个实例: class Student(object): def __ini ...

  3. linux下将普通用户加入到docker组,使它可以运行docker命令

    方法特别简单 gpasswd -a ${USER} docker eg: gpasswd -a jenkins docker 然后使用jenkins用户就可以执行docker命令了

  4. python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码

    python2#print() print'abc'#range() xrange()生成器#raw_input() python3# print('abc')# range()# input() = ...

  5. nowcoder16450 托米的简单表示法

    题目链接 思路 仔细理解一下题意可以发现. 对于每个完整的括号序列都是独立的,然后就想到分治.高度是序列中所有括号序列的最大值,宽度是所有括号序列宽度和\(+1\). 然后仔细想了一下,这种分治应该是 ...

  6. Hibernate报错,关于配置的SessionFactory找不到问题

    最近写项目使用hibernate默认的dtd,在启动项目时经常会出现这个问题,hibernate报错,配置factory的id找不到,找不到mapping配置文件, 不能读取配置的xml文件 Coul ...

  7. windows telnet 模拟 http请求

    1. 开启windows自带的telnet客户端(控制面板 --> 程序 --> 启用或关闭windows功能 --> ) 2. 打开cmd,使用Telnet客户端 3. 按ctrl ...

  8. JProfiler性能分析工具

    1.简介 JProfiler是一个商业授权的Java剖析工具,用于分析Java EE和Java SE应用程序. 2.JVMTI JDK本身定义了目标明确并功能完善的JNI(Java Native In ...

  9. js值类型转换(boolean/String/number),js运算符,if条件,循环结构,函数,三种弹出框

    js值类型转换 number | string | boolean boolean类型转换 num = 0; var b1 = Boolean(num); console.log(b1) 转化为数字类 ...

  10. django的一些常用指令

    生成Django项目 django-admin startproject mysite 启动服务 python manage.py runserver 本地化中间件 'django.mididdlew ...