python学习拾遗(七)——游戏初步之猜单词游戏

游戏要求

计算机随机产生一个单词,打乱字母顺序,供玩家来猜。

分析

问题一:如何产生随机单词

引入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.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值