序列应用——猜单词游戏

旧街凉风 提交于 2020-03-03 15:47:00

开发工具:Visual Studio Code

1.游戏介绍

猜单词游戏就是计筧机随机产生一个单词,打乱字母顺序,供玩家去猜测。此游戏采用控制字符界面.

2.程序设计思路

游戏中,可使用序列中的元组存储所有待猜测的单词。因为猜单词游戏需要随机产生某个待猜测单词以及随机数字,所以引入random模块随机数函数。其中,random.choice()可以从序列中随机选取元素。

在游戏中,随机挑出一个单词word后,把单词word的字母顺序打乱的方法是随机单词字符串中选择一个位置position,把position位置的字母加入乱序后的单词jumble,同时将原单词word中position位置的那个字母删去(通过连接position位置前字符串和其后字符串实现)。通过多次循环就可以产生乱序后的新单词jumble。

3.random模块

random模块可以产生一个随机数或者从序列中获取一个随机元素。它的常用方法和用例子如下。

random.random

random.random()用于生成一个范围在0-1的随机小数n,(0≤n<1.0)。

random.uniform

random.uniform(a,b)用于生成一个指定范围内的随机小数,在两个参数中,一个是上限,一个是下限。如果a<b,则生成的随机数J2满足条件a≤n≤b;如果a>b,则b≤n≤a。

random.randint

random.randint(a,b)用于随机生成一个指定范围内的整数。其中,参数a是下限,参数b是上限,则生成的随机数n满足条件:a≤n≤b。

random.randrange

random.randrange([start),stop[,step])可从指定范围内,按指定基数递增的集合中获取一个随机数。如: random.randrange(10,100,2),结果相当于从10, 12,14,16,…,96,981序列中获取一个随机数。random.randrange(10,100,2)在结果上与random.choice(range(10,100,2)等效。

random.choice

random.choice可从序列中获取一个随机元素。其函数原型为:random(sequence)参数sequence表示一个有序类型,不是一种特定类型,而是泛指序列数据结构。列表( list)、元组(tuple)字符串都属于sequence。

random.shuffle

random.shuffle(x[,random])用于将一个列表中的元素的顺序打乱。

** random.sample**

random.sample(sequence,k)均可从指定序列中随机获取指定长度的片断。sample()函数不会修改原有序列。

4.程序设计步骤

1.在猜单词游戏程序中导入相关模块。

2.创建所有待猜测的单词序列元组WORDS。

3.显示游戏欢迎界面。

4.实现游戏的逻辑。

首先,从序列中随机挑出一个单词,如“easy”;然后打乱这个单词的字母顺序;接着,通过多次循环就可以产生新的乱序后的单词jumble;最后,将乱序后的单词显示给玩家。

5.玩家输入猜测单词,程序判断对错。若玩家猜错,则可以继续猜。

5.参考代码

6.遇到的问题 (1)在调试的过程中报了这样一个错误:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 166-167: truncated。这个错误,其实引起这个错误的原因就是转义的问题。 原因分析:在windows系统当中读取文件路径可以使用\,但是在python字符串中\有转义的含义,如\t可代表TAB,\n代表换行,所以我们需要采取一些方式使得\不被解读为转义字符。

解决方案:

1、在路径前面加r,即保持字符原始值的意思。 sys.path.append(r'c:\Users\mshacxiang\VScode_project\web_ddt')

2、替换为双反斜杠 sys.path.append('c:\Users\mshacxiang\VScode_project\web_ddt')

3、替换为正斜杠 sys.path.append('c:/Users/mshacxiang/VScode_project/web_ddt')

参考链接: https://blog.csdn.net/xd060606/article/details/87164798

7.运行结果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!