我用python写个背单词小程序

Python 的基本语法来实现猜单词游戏的逻辑,程序会在控制台中打印当前单词的猜测状态和猜错次数,并提示玩家输入一个字母进行猜测。5fbf87c79d020b73abd1ba48de04521a.png

如果玩家猜对了一个字母,程序会更新单词的猜测状态,如果玩家猜错了一个字母,程序会增加猜错次数。如果玩家猜错的次数超过 6 次,游戏结束并显示正确答案。如果玩家猜出了整个单词,程序会打印胜利信息并结束游戏。

import random

# 定义一个单词列表
words = ["python", "java", "ruby", "javascript", "php", "swift"]

# 选择一个随机单词
word = random.choice(words)

# 创建一个列表存储猜测过的字母
guesses = []

# 创建一个变量来记录猜错的次数
fails = 0

# 创建一个无限循环,直到玩家猜测出单词或超过最大猜错次数
while True:
    # 打印单词的猜测状态
    for letter in word:
        if letter in guesses:
            print(letter, end=" ")
        else:
            print("_", end=" ")
    print("")

    # 如果猜错的次数超过了 6 次,游戏结束
    if fails > 6:
        print("游戏结束!正确答案是 %s。" % word)
        break

    # 获取玩家的猜测
    guess = input("猜一个字母: ")

    # 如果玩家输入了一个非字母字符,提示错误并重新输入
    if not guess.isalpha():
        print("输入错误,请输入一个字母。")
        continue

    # 如果玩家已经猜过这个字母,提示错误并重新输入
    if guess in guesses:
        print("你已经猜过这个字母了,请猜测其他字母。")
        continue

    # 将玩家猜过的字母添加到列表中
    guesses.append(guess)

    # 如果玩家猜对了一个字母,打印提示信息
    if guess in word:
        print("恭喜你猜对了一个字母!")
    else:
        # 如果玩家猜错了一个字母,打印提示信息并增加猜错次数
        print("很遗憾,这个字母不在单词中。")
        fails += 1

    # 如果玩家猜出了单词,打印胜利信息并结束游戏
    if all(letter in guesses for letter in word):
        print("恭喜你猜出了单词 %s!" % word)
        break

5b4cbe850ec9678031ed34f45f04617c.png

用到的知识点

这个猜单词游戏涉及到了以下的知识点:

  1. 1. 随机数生成:在 Python 中,可以使用 random 模块来生成随机数,如 random.choice() 函数用于在列表中随机选择一个元素。

  2. 2. 字符串操作:在 Python 中,字符串是不可变的,可以使用字符串的下标操作和字符串切片来获取或修改字符串中的字符或子串,如 word_status = word_status[:i] + guess + word_status[i+1:] 用于更新单词的猜测状态。

  3. 3. 循环和条件语句:在 Python 中,可以使用 while 循环来重复执行一段代码,可以使用 if 和 else 条件语句来根据条件执行不同的代码块。

  4. 4. 函数和变量的作用域:在 Python 中,函数和变量可以定义在全局作用域或局部作用域中,函数内部可以访问

5.全局变量,但不能直接修改它,需要使用 global 关键字声明变量为全局变量。

单词示意

import: 用于导入 Python 模块。
random: 用于生成随机数。
time: 用于进行时间操作。
global: 声明变量为全局变量。
guesses: 猜测过的字母列表。 fails: 猜错的次数。
word_status: 单词的猜测状态。
input: 从控制台中读取用户输入的函数。
isalpha(): 判断一个字符串是否只包含字母。
str(): 将其他数据类型转换为字符串。
break: 终止循环的关键字。

还有个用turtle 生成的界面版背单词程序

import turtle
import random
import time

# 定义一个单词列表
words = ["python", "java", "ruby", "javascript", "php", "swift"]

# 设置画笔颜色和形状
turtle.color("blue")
turtle.shape("turtle")

# 显示所有的单词列表
turtle.penup()
turtle.goto(-200, 100)
for word in words:
    turtle.write(word)
    turtle.forward(150)
turtle.hideturtle()

# 隐藏所有单词
time.sleep(1)
turtle.clear()

# 选择一个随机单词
word = random.choice(words)

# 创建一个列表存储猜测过的字母
guesses = []

# 创建一个变量来记录猜错的次数
fails = 0

# 绘制单词的猜测状态
turtle.penup()
turtle.goto(-200, 0)
for letter in word:
    turtle.write("_", font=("Arial", 24, "normal"))
    turtle.forward(40)

# 获取玩家的猜测
def guess_letter():
    global guesses
    global fails
    global word

    guess = turtle.textinput("", "请输入一个字母:")

    # 如果玩家输入了一个非字母字符,提示错误并重新输入
    if not guess.isalpha():
        guess_letter()

    # 如果玩家已经猜过这个字母,提示错误并重新输入
    if guess in guesses:
        fails += 1
        

    # 将玩家猜过的字母添加到列表中
    guesses.append(guess)

    # 绘制单词的猜测状态
    turtle.penup()
    turtle.goto(-200, 0)
    for letter in word:
        if letter in guesses:
            turtle.write(letter, font=("Arial", 24, "normal"))
        else:
            turtle.write("_", font=("Arial", 24, "normal"))
        turtle.forward(40)

    # 如果玩家猜对了一个字母,打印提示信息
    if guess in word:
        turtle.write("恭喜你猜对了一个字母!", font=("Arial", 16, "normal"))
        time.sleep(1)
       
        # turtle.ontimer(turtle.undo, t=1000)
        # 如果玩家猜出了单词,打印胜利信息并结束游戏
        if all(letter in guesses for letter in word):
            turtle.clear()
            turtle.write("恭喜你猜出了单词 %s!" % word, font=("Arial", 16, "normal"))
            time.sleep(0.5)
            again()
        guess_letter()
    else:
        fails += 1
      
        turtle.clear()
        turtle.write("猜错" )
        time.sleep(0.5)
        turtle.clear()
        # 如果玩家猜错的次数超过 6 次,游戏结束
        if fails > 6:
            turtle.clear()
            turtle.write("很遗憾,你猜错的次数超过 6 次,游戏结束。\n正确答案是 %s。" % word, font=("Arial", 16, "normal"))
            time.sleep(0.5)
            again()
        guess_letter()
        
def again():
    global guesses
    global fails
    global word
    turtle.clear()
    fails=0
    guesses=[]
    word = random.choice(words)
    for letter in word:
        turtle.write("_", font=("Arial", 24, "normal"))
        turtle.forward(40)
    guess_letter()
         
# 注册按键事件
turtle.onkey(guess_letter, "Return")

# 开始监听按键事件
turtle.listen()

# 显示窗口
turtle.mainloop
# 开始游戏
guess_letter()

# 显示窗口
turtle.mainloop()

71dadffc930c5d616a4d53510f0ff922.png

这个示例使用 turtle 模块来绘制猜单词游戏的界面,当玩家猜测错误时不会弹出提示框,当玩家猜对一个字母时会打印提示信息,1 秒后自动清除,当玩家猜错次数超过 6 次或者猜出整个单词时,程序会打印失败信息并结束游戏。当玩家猜对一个字母后,程序会自动尝试猜下一个字母,直到猜出整个单词或猜错次数超过 6 次为止。

你可以根据自己的需求来调整程序,并添加更多的游戏元素和功能。

 
 

  分享资料,一起学习! 

我是小白(微信 tlxx233 ) 备注 888建了个微信程序员学习群,互相解答问题,有需要的同学可以加我微信进群。 

戳原文👇纯免费,在线学编程~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾亲桂林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值