一、系列缘由
作为一名运维工程师,也一直有一个学习开发的想法,值此之际,不知道博客的下一期目标在哪里,在这思考和犹豫的间隙想着学习和充实一下自己,学习一下python语言,python随着大数据和人工智能的兴起而日益火爆。边学习边实践的原则学习python,希望自己更上一层楼。我的目标是创建一个自己的网站——太阳站点(sun-site.com),一个自娱自乐的自由空间。
二、学习笔记
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
内置函数 | 含义 |
---|---|
len(dict) | 计算字典元素个数,即键的总数。 |
str(dict) | 输出字典,可以打印的字符串表示。 |
type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
内置方法 | 含义 |
---|---|
radiansdict.clear() | 删除字典内所有元素 |
radiansdict.copy() | 返回一个字典的浅复制 |
radiansdict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
radiansdict.get(key, default=None) | 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
radiansdict.items() | 以列表返回一个视图对象 |
radiansdict.keys() | 返回一个视图对象 |
radiansdict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
radiansdict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
radiansdict.values() | 返回一个视图对象 |
pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
popitem() | 随机返回并删除字典中的最后一对键和值。 |
三、实践练习
1、游戏代码
#!/root/anaconda3/bin/python
# This is a python program.
'''
这是一个扑克牌比大小的游戏,在一副扑克牌中随机抽取一张
电脑同样随机抽取一张,根据抽取到的牌面比较大小。
只比较大小,不比较花色,同样花色的大小一致视为平局。
'''
import random
#扑克花色
cardColour = ['黑桃','红桃','梅花','方块']
#扑克字符
cardChr = [str(num) for num in range (2,11)]+['J','Q','K','A']
#生成52张花色牌
cardDict = {s+t:cardChr.index(t) for t in cardChr for s in cardColour}
#加入大小鬼
cardDict.update({'小鬼':13,'大鬼':14})
#生成一副顺牌
oneSetCard = [s+t for t in cardChr for s in cardColour] + ['小鬼','大鬼']
#洗牌
for c in range(len(oneSetCard)):
oneSetCard.append(oneSetCard.pop(random.randint(0,len(oneSetCard)-1)))
#请切牌选牌
myCard = oneSetCard[int(input('牌已洗好,请输入您选择第几张(0-53):'))]
#剔除你已经选择的卡牌
oneSetCard.remove(myCard)
#计算机选牌
robotCard = oneSetCard[random.randint(0,len(oneSetCard)-1)]
#显示双方抽中的卡牌
print('您抽中的%s,计算机抽中的%s'%(myCard,robotCard))
#判断输赢,根据字典中定义的大小进行判断
if cardDict[myCard] > cardDict[robotCard]:
print('恭喜,您赢了')
elif cardDict[myCard] > cardDict[robotCard]:
print('平局')
else:
print('很遗憾,您输了')
2、设计说明
- 首先定义牌的花色和字符,这是一副牌的2个组成部分;
- 定义一个字典,键为每一张独立的牌,值对应牌面大小的值;
- 生产一个列表,对应54张扑克牌;
- 利用随机函数和列表方法打乱扑克牌的顺序;
- 游戏者和计算机各抽取一张卡牌
- 查询扑克牌字典比较卡牌大小,判断输赢