游戏要求
计算机随机产生一个单词,打乱字母顺序,供玩家来猜。
分析
问题一:如何产生随机单词
引入random模块随机数函数,其中random.choice()可以从序列中随机选取元素。
WORDS = ("python", "jumble", "easy", "difficult", "answer", "continue",
"phone", "position", "pose", "game")
word = random.choice(WORDS)
注意:这里的WORDS是以元组的形式给出的,不是以集合的形式给出的。如果以集合的形式输入字符串组,则会出现以下错误:
TypeError: ‘set’ object is not subscriptable
这句话的意思是,集合元素不是可以用[]来引用的。
问题二:如何将随机单词进行乱序排列
可以使用插入删除法:
1、随机产生一个单词字符的位置;
2、将其插入到原始单词的任意位置处;
3、从原始单词中删除步骤1产生的随机单词字符,可以使用步骤1中随机单词字符的位置和切片操作。
4、在单词不是空串时循环,直到原始单词中的每一个字符都已经被打乱了顺序,这时原始单词也就变成了空串。
while word: # word 不是空串时循环
# 根据word 长度,产生word的随机位置
position = random.randrange(len(word))
jumble += word[position]
word = word[:position] + word[(position+1):]
问题三:如何控制游戏的重复进行和终止退出
因为每次的操作都是基本一致的,所以采用一个while循环配合一个退出条件就可以实现了。
代码实现
import random
WORDS = ("python", "jumble", "easy", "difficult", "answer", "continue",
"phone", "position", "pose", "game")
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))
jumble += word[position]
word = word[:position] + word[(position+1):]
print("乱序后的单词:", jumble)
guess = input("\n请你猜:")
while guess != correct and guess != "":
print("对不起,不正确.")
guess = input("继续猜:")
if guess == correct:
print("真棒,你猜对了!\n")
iscontinue = input("\n\n 是否继续(Y/N):")
运行结果展示
欢迎参加猜单词游戏
把字母组合成一个正确的单词.
乱序后的单词: ptyohn
请你猜:python
真棒,你猜对了!
是否继续(Y/N):y
乱序后的单词: saey
划重点
1、choice函数与random模块的使用;
2、集合与元组的区别;
3、字符串的拼接操作;
参考文献
夏敏捷等. python程序设计从基础开发到数据设计. 清华大学出版社,2019.