关于切片/截取(slice)和random模块的使用(实例:猜单词小游戏)
切片和random的使用在源码中都有注释(可以直接下载):https://github.com/NoobZeng/GuessWords
1. README.MD
- 基于Python的猜单词游戏
- 猜单词小游戏
- 主要使用random模块、切片slice
- random模块的基础使用:demo_random.py
- 切片的基础使用:demo_slice.py
- 游戏运行play.py或者test.py
- play和test不同地方是乱序单词的组合,前者用random.randrange()和切片的方式,后者使用random.sample()和join方法的方式
2. 切片的简单使用
# !/usr/bin/env python
# ! _*_ coding:utf-8 _*_
# @TIME : 2019/9/10 6:13
# @Author : Noob
# @File : demo_slice.py # python中符合序列的有序序列都支持切片(slice)
# 如:字符串、列表(list)、元祖(tuple)
# 格式:[start: end: step]
# start:起始索引,从0开始,-1表示结束
# end:结束索引,切片结果不包含结束索引,即不包含最后一位,-1代表最后一个位置索引
# step:步长,可以不提供,默认值是1,但是值不能为0,不然会报错ValueError: slice step cannot be zero
# end-start=正数时,从左向右取值,end-start=负数时,反向取值 """
举例:字符串
"""
str_slice = "python" print("1. 全部截取")
str1 = str_slice[:]
print(str1)
# python print("2. 从0开始到3,每次增加1截取,不包含索引结束的位置")
str2 = str_slice[0: 3: 1]
print(str2)
# pyt print("3. 从0到倒数第二位,每次增加2截取,不包含索引结束的位置")
str3 = str_slice[0: -1: 2]
print(str3)
# pto print("4. 默认从起始位置索引,每次增加1截取,结束索引为3,省略步长")
str4 = str_slice[: 3]
print(str4)
# pyt print("5. 反向取值,每次增加1截取,不包含索引结束位置")
str5 = str_slice[3: 0: -1]
print(str5)
# hty print("6. 从索引3开始到结束索引,省略步长1")
str6 = str_slice[3:]
print(str6)
# hon
demo_slice.py
3. random模块的简单使用
# !/usr/bin/env python
# ! _*_ coding:utf-8 _*_
# @TIME : 2019/9/10 6:13
# @Author : Noob
# @File : demo_random.py import random # 1. 生成一个随机小数n,n大于等于0小于1.0
print("1. random.random():生成一个随机小数n,n大于等于0小于1.0")
n = random.random()
print(n) # 2. 生成一个指定范围内的小数,两个参数中一个是上限一个是下限
# 如果a<b,则生成的随机数n的范围在a<=n<=b
# 如果a>b,则生成的随机数n的范围在b<=n<=a
print("2. random.uniform(a, b):生成一个指定范围内的小数,两个参数中一个是上限一个是下限")
n = random.uniform(10, 20)
print(n)
n = random.uniform(20, 15)
print(n) # 3. 生成一个指定范围内的整数,其中参数a是下限,参数b是上限,生成的随机数范围在a<=n<=b
print("3. random.randint(a, b):生成一个指定范围内的整数")
n = random.randint(5, 9)
print(n) # 4. 从指定范围内按指定基数递增的集合中获取一个随机数(有点类似于有序列表的切片),start包含在范围内,stop不包含在范围内
print("4. random.randrange([start], stop[, step]):从指定范围内按指定基数递增的集合中获取一个随机数")
n = random.randrange(2, 10, 3)
print(n) # 5. 重序列中获取一个随机元素,其原型为random.choice(sequence),参数sequence标识一个有序类型。泛指序列数据结构,
# 字符串、列表、元祖都属于sequence。
print("5. random.choice(sequence):从序列中获取一个随机元素")
n = random.choice("hello world")
print(n)
n = random.choice(("java", "C", "C++", "php"))
print(n)
n = random.choice(["java", "C", "C++", "php"])
print(n) # 6. 打乱列表中的元素,shuffle()返回的是none,只是该函数改变了原列表数据的顺序
print("6. random.shuffle(x[, random):打乱列表中的元素")
a = [1, 2, 3, 4, 5]
n = random.shuffle(a)
print(n) # None
print(a) # 7. 从指定序列中随机获取指定长度的片段,sample()函数不会修改原有序列
print("7. random.sample(sequence,k):从指定序列中随机获取指定长度的片段")
a = "abcdefg"
n = random.sample(a, 3)
print(n)
print(a)
demo_random.py
4. 猜单词游戏(1)play.py
# !/usr/bin/env python
# ! _*_ coding:utf-8 _*_
# @TIME : 2019/9/10 3:51
# @Author : Noob
# @File : play.py # 导入random模块
import random # 创建单词序列
words = ("python", "java", "peal", "vue", "http", "javascript", "php", "cplus") # 开始游戏
print(
"""
欢迎参加猜单词游戏
把字母组合成一个正确的单词
"""
) iscontinue = "y" while iscontinue == 'y' or iscontinue == 'Y':
# 从序列中随机抽出一个单词
word = random.choice(words)
# 一个用于判断玩家是否才对的变量
correct = word
# 创建乱序后单词
jumble = ""
while word: # word不是空串循环
# 根据word长度产生word的随机位置
position = random.randrange(len(word))
# 将position位置的字母组合到乱象需后单词
jumble += word[position]
# 通过切片将position位置的字母从元单词中
word = word[:position] + word[(position+1):]
print("乱序后单词:", jumble) guess = input("\n请你猜:")
while (guess != correct and guess != "") or (guess == ""):
print("对不起不正确.")
guess = input("继续猜:")
if guess == correct:
print("真棒,你猜对了!")
iscontinue = input("\n是否继续(Y/N):")
play.py
5. 猜单词游戏(2)test.py
# !/usr/bin/env python
# ! _*_ coding:utf-8 _*_
# @TIME : 2019/9/10 22:16
# @Author : Noob
# @File : test.py import random # 开始游戏
print(
"""
欢迎参加猜单词游戏
把字母组合成一个正确的单词
"""
) # 判断游戏是否继续的标识
iscontinue = "y"
words = ["fiddler", "myeclipse", "pycharm", "sumblim", "jmeter", ""]
# 去掉单词库中的空字符串
# words = list(filter(None, words)) while iscontinue == "y" or iscontinue == "Y":
# 判断词库列表长度
if len(words) != 0:
# 随机抽取一个单词
word = random.choice(words)
# 词库出现为空的单词就跳过
if word == "" and len(words) != 1:
continue
elif word == "" and len(words) == 1:
print("单词已经全部猜完,结束游戏!!!")
break
# random.sample(sequence, k):随机获取指定长度的序列片段,得到的是一个数组,且不会修改到原序列
# 通过join方法重新拼合成一个字符串,是乱序后的单词
jumple = "".join(random.sample(word, len(word)))
print("\n" + jumple)
# 用于判断输入单词是否正确的标识
correct = input("请输入该单词的正确拼写:")
while correct != word:
correct = input("猜错了,请思考后继续:")
print("恭喜猜对了!!!")
# 猜完后将该单词移出列表
words.remove(word)
if len(words) != 0:
iscontinue = input("是否继续(Y/N):")
else:
print("单词已经全部猜完,结束游戏!!!")
break
test.py
关于切片/截取(slice)和random模块的使用(实例:猜单词小游戏)的更多相关文章
- 基于pythonselect.select模块通信的实例讲解
基于python select.select模块通信的实例讲解 要理解select.select模块其实主要就是要理解它的参数, 以及其三个返回值. select()方法接收并监控3个通信列表, 第一 ...
- Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)
Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Py ...
- Python中的random模块,来自于Capricorn的实验室
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- 随机内容生成(random模块)
摘抄于: 低调的python小子 当梦想照进现实 幸福近在咫尺 [jpg]http://ip.ipwind.cn/msn.png[/jpg] Python中的random模块用于生成随机数.下面介绍 ...
- Python中的random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- Python random模块 例子
最近用到随机数,就查询资料总结了一下Python random模块(获取随机数)常用方法和使用例子. 1.random.random random.random()用于生成一个0到1的随机符点数: ...
- python学习之random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET
python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET python random模块 分类: python 2011-11-15 15:31 6037人阅读 评论(2) ...
- python random 模块的用法
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
随机推荐
- 并查集+multiset+双指针——cf982D
感觉自己的解法很复杂,写了一大堆代码 但核心是从小到大枚举每个元素的值,然后把<=当前元素的值进行合并,由于这个过程是单调的,所以可以直接将新的元素合并到旧的并查集里去 维护并查集的同时维护每 ...
- 暑假集训test-8-31(pm)
以为可以AK,结果t3没有调出来,然后被林巨踩了. everyday被踩,很开心. 林巨真的好巨啊,这么多天已经总计虐我75分了. 1.玩具装箱 第一眼还以为是那道斜率优化dp,结果是个签到水题. / ...
- 秒懂机器学习---k-近邻算法实战
秒懂机器学习---k-近邻算法实战 一.总结 一句话总结: k临近算法的核心就是:将训练数据映射成k维空间中的点 1.k临近算法怎么解决实际问题? 构建多维空间:每个特征是一维,合起来组成了一个多维空 ...
- mysql数据库中的索引介绍与优化(转)
一.什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表 ...
- JSP/Servlet笔记
一.Servlet简介 Servlet程序可以运行于任何服务器,如web.email.FTP等,所有servlet程序必须实现javax.servlet接口.GenericServlet是实现了jav ...
- Mybatis笔记 - Mybatis框架简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上 ...
- Docker学习の更改Docker的目录
一.更改虚拟磁盘的目录 虚拟机的默认存储位置是C:\Users\Administrator\.docker\machine\machines ,后期docke镜像文件会不断增加,为了给系统盘减负,最好 ...
- JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。
编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...
- spark安装及配置
windows下spark的安装与配置教程 Windows下安装spark windows下搭建spark环境出现ChangeFileModeByMask error (3): ??????????? ...
- vc枚举本机端口信息
关于查看本机端口信息,可能大多数人都知道在cmd下的netstat 命令,殊不知该命令在底层也是调用相关api来实现的,相关函数有:GetTcpTableGetExtendedTcpTableGetU ...