鱼C论坛

 找回密码
 立即注册
查看: 2003|回复: 2

[原创] 【Python】打字训练 2.0!

[复制链接]
发表于 2022-2-7 15:36:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ckblt 于 2022-2-9 12:44 编辑

前几天,我做了一个打字训练的软件,
它能帮助你打字更快更准确
(金山打字难道不比它强?

更新内容:
  • 改进了代码
  • 新增抄词语模式


点我跳转到 【打字训练 1.0】

废话少说,上代码
"""
这是一款打字机软件,
它能帮助你打字更快、更准确。

注: 如果你使用此软件报错, 请把解释器换成 Python 3.10
"""

import random
from random import choice
import time


def mode_1():  # 抄句子
    def gen_sentence():
        name = [
            "我",
            "太空人",
            "太空狼",
            "爷爷",
            "奶奶",
            "爷爷奶奶",
            "喜之郎果冻",
            "喜之郎",
            "洗只狼",
            "爸爸",
            "妈妈",
            "世界冠军",
            "世界吃人冠军",
            "世界吃狼冠军",
            "航天飞机",
            "太空",
            "世界足球先生",
            "世界",
            "足球",
            "世界杯",
            "发明家",
            "药",
            "狼",
            "狼人",
        ]
        action = ["吃", "喝", "当", "画", "鼓励", "旅游", "踩"]
        adj = ["高兴", "伤心", "当人", "生气", "美丽"]

        return f"{choice(name)}{choice(['','长大了'])}要{choice(action)}{choice(name)},{choice(name)}可{choice(adj)}了,给{choice(name)}爱{choice(action)}的{choice(name)}。"

    right = 0
    wrong = 0
    times = []

    print("喜之郎果冻笑话 (请使用中文符号)")
    print()

    while True:
        time.sleep(2)
        print("请输入以下句子 ( 输入 0 退出 )")
        sentence = gen_sentence()
        print(sentence)
        start = round(time.time(), 2)
        answer = input()
        end = round(time.time(), 2)
        t = round(end - start, 2)
        if answer == "0":
            break
        elif answer == sentence:
            print(f"你对了, 用时 {t} 秒")
            print()

            times.append(t)
            right += 1
        else:
            print(f"你错了, 用时 {t} 秒")
            print()

            times.append(t)
            wrong += 1

    if len(times) != 0:
        print(
            f"你对了 {right} 个, 错了 {wrong} 个, 平均速度是 {round(sum(times) / len(times), 2)} 秒"
        )

    print()


def mode_2():  # 抄验证码
    right = 0
    wrong = 0
    times = []
    while True:
        time.sleep(2)
        print("请输入以下验证码 ( 输入 0 退出 )")
        code = str(random.randint(100000, 999999))
        print(code)
        start = round(time.time(), 2)
        answer = input()
        end = round(time.time(), 2)
        t = round(end - start, 2)
        if answer == "0":
            break
        elif answer == code:
            print(f"你对了, 用时 {t} 秒")
            print()

            times.append(t)
            right += 1
        else:
            print(f"你错了, 用时 {t} 秒")
            print()

            times.append(t)
            wrong += 1

    if len(times) != 0:
        print(
            f"你对了 {right} 个, 错了 {wrong} 个, 平均速度是 {round(sum(times) / len(times), 2)} 秒"
        )

    print()


def mode_3():  # 抄词语
    right = 0
    wrong = 0
    times = []
    words = "你好,红色,橙色,黄色,绿色,青色,蓝色,紫色,呼唤,呼喊,救命,尤其,已知,一直,求解,春天,夏天,秋天,冬天,昨天,今天,明天,白天,黑天,每天,黑夜,警察,保安,奔驰,奔跑,走路,吉他,小提琴,中提琴,大提琴,低音提琴,音乐,钢琴,竖琴,离职,理智,励志,荔枝,立志,例子,打字,沙子,泥土".split(
        ","
    )
    time.sleep(2)
    while True:
        time.sleep(0.5)
        print("请输入以下词语 ( 输入 0 退出 )")
        word = choice(words)
        print(word)
        start = round(time.time(), 2)
        answer = input()
        end = round(time.time(), 2)
        t = round(end - start, 2)
        if answer == "0":
            break
        elif answer == word:
            print(f"你对了, 用时 {t} 秒")
            print()

            times.append(t)
            right += 1
        else:
            print(f"你错了, 用时 {t} 秒")
            print()

            times.append(t)
            wrong += 1

    if len(times) != 0:
        print(
            f"你对了 {right} 个, 错了 {wrong} 个, 平均速度是 {round(sum(times) / len(times), 2)} 秒"
        )

    print()


if __name__ == "__main__":
    choose_correct = True
    modes = {"抄句子": mode_1, "抄验证码": mode_2, "抄词语": mode_3}
    print("欢迎来到 TypeWriter 打字训练 2.0")
    print()
    while True:
        if choose_correct:
            print("请选择模式 ( 输入 0 退出 )")

            for i in range(len(modes)):
                print(i + 1, ". ", [*modes.keys()][i], sep="")
            print()
        try:
            mode = int(input("选择: "))
            print()
            choose_correct = True

            if mode == 0:
                raise KeyboardInterrupt
            elif mode <= len(modes):
                modes[[*modes.keys()][mode - 1]]()
            else:
                raise ValueError("Invalid mode")
        except ValueError:  # 选择有误
            choose_correct = False
            print("你的选择有误, 请重新", end="")
            # 之后他会 mode = int(input("选择: ")) , 也就是输出 "你的选择有误, 请重新选择: "
        except KeyboardInterrupt:  # 用户退出 或者 用户 Ctrl+C
            print("感谢使用!")
            exit()

如果您喜欢这个软件,可以给我评分哦~

这些代码我以后会继续完善,有BUG可以提出哦~

评分

参与人数 1荣誉 +1 鱼币 +5 收起 理由
python爱好者. + 1 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-9 11:12:24 | 显示全部楼层
发现一个bug,在选择模式的时候输入0会进入抄词语模式。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
ckblt + 1 + 1 感谢提出BUG

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-8 20:27:30 | 显示全部楼层
要是是tkinter的更好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表