【青少年编程】黄羽恒:我要背单词

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。
微信后台回复”资料下载”可获取以往学习的材料(视频、代码、文档)。

编程题

“我要背单词”是来自「青少年编程竞赛交流群」中 黄羽恒 小朋友的作品。

背单词是一件让小朋友们非常头痛的事情,现在我们需要用Python来辅助小朋友们记忆单词。

首先,利用字典的方式创建单词本,key为单词,value为单词的中文含义。

其次,背单词有两种模式,第一种模式为根据英文记忆中文,另一种模式为根据中文记忆英文。

再次,程序可以读出英文以及中文,并显示阅读单词的进度,利用听觉辅助记忆。

最后,单词本中所有单词背诵完毕后,程序自动关闭。

显示单词本中的单词,以及单词的阅读进度可以利用Pygame实现,阅读单词可以利用pyttsx3实现。

Pygame是一套用来写游戏的Python模块。它是基于SDL(Simple DirectMedia Layer)库的,它使你可以用Python语言创建完全界面化的游戏和多媒体程序。

安装Pygame:

pip install pygame

pyttsx3 是Python中的文本到语音转换库。与其它库不同,它可以脱机工作。

安装pyttsx3:

pip install pyttsx3

由于篇幅原因,这两个库的用法,我们在后面会单独写图文来介绍。

import pygame
import pyttsx3
import sys

pygame.init()
screen = pygame.display.set_mode((600, 340))
pygame.display.set_caption('我要背单词')
clock = pygame.time.Clock()
engine = pyttsx3.init()

words = {
    'travel': '旅行',
    'break': '摔伤',
    'medicine': '药',
    'restaurant': '餐馆',
    'policeman': '警察',
    'scientist': '科学家',
    'inventor': '发明家',
    'information': '信息',
    '': '复习完毕'
}

mode = 0

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
LIG_TH_YELLOW = (255, 251, 224)

index = 0
while True:
    count = 0
    word = ''
    trans = ''
    for key in words:
        if count == index:
            if mode == 0:
                word = key
                trans = words[key]
            else:
                word = words[key]
                trans = key
            break
        count += 1
    index += 1

    screen.fill(LIG_TH_YELLOW)

    percent_num = round(index / len(words) * 100)
    pygame.draw.lines(screen, BLACK, False, ((0, 300), (600, 300)), 1)
    pygame.draw.rect(screen, BLACK, (0, 300, 600 * (percent_num / 100), 300))

    font = pygame.font.SysFont('SimHei', 20)
    percent_str = font.render('进度' + str(percent_num) + '%', False, WHITE)
    screen.blit(percent_str, (20, 310))

    if word != '':
        font = pygame.font.SysFont('SimHei', 80)
        rect = font.render(word, False, BLACK)
        length = len(word)
        left = (540 - length * 41) / 2
        screen.blit(rect, (left, 30))
        pygame.draw.rect(screen, BLACK, (20, 20, 560, 140), 1)
        pygame.display.update()

        engine.say(word)
        engine.runAndWait()

    if trans != '':
        trans_font = pygame.font.SysFont('SimHei', 40)
        rect = trans_font.render(trans, False, BLACK)
        length = len(trans)
        left = (600 - length * 59) / 2
        screen.blit(rect, (left, 200))
        pygame.display.update()

        engine.say(trans)
        engine.runAndWait()

    if index == len(words):
        pygame.quit()
        engine.stop()
        sys.exit()

    clock.tick(30)

插入视频

一级编程题:

二级编程题:

三级编程题:

小朋友投稿:

群内答疑:

Original: https://blog.csdn.net/LSGO_MYP/article/details/116662673
Author: 青少年编程竞赛交流
Title: 【青少年编程】黄羽恒:我要背单词

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/782351/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球