栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用python练习1~99以内的日语

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用python练习1~99以内的日语

今天学习的是通过python实现部分日语数字的练习。

众所周知,外语学习的一个关键突破点就是单词。传统学习方式无外乎,跟着老师或者背单词软件一遍一遍反复记忆,我们是知识的被动接受者。但在互联网社会,这些都被颠覆了。我们可以不再仅限于书本上的知识,充分利用网络学习我们想要了解的一切。看似庞大的知识被逐层拆解,成功唾手可得。所以,未来社会最重要的能力之一是学会拆解知识的工具。编程便是其中之一。

前言少叙,下面进入正题。

这次先学习如何用python练习日语中的数字。代码来源:Learning Japanese the Python Way | Nora Codes,有微调。

numbers = ['ゼロ',
           'いち',
           'に',
           'さん',
           'よん',
           'ご',
           'ろく',
           'なな',
           'はち',
           'きゅう',
           'じゅう',
           ]


class OutOfRangeException(Exception):
    pass


def small_to_japanese(n):
    "Convert a number (0-10) to Japanese."
    if n > 10 or n < 0:
        raise OutOfRangeException

    return numbers[n]


def medium_to_japanese(n):
    "Convert a number from 11 - 100 to Japanese"
    if n > 100 or n < 11:
        raise OutOfRangeException

    digits = list(map(
        int, str(n)
    ))

    out = ""

    # Omit いち in numbers > 10
    if digits[0] > 1:
        out += numbers[digits[0]] + " "
    out += numbers[10] + " "
    out += numbers[digits[1]]
    return out


def number_to_japanese(n):
    try:
        return small_to_japanese(n)
    except OutOfRangeException:
        pass

    try:
        return medium_to_japanese(n)
    except OutOfRangeException:
        pass

    print("只可以输入99以内的数字哟~")


if __name__ == "__main__":
    from random import randint
    from sys import argv

    # Check if there is a command line option for max numbers
    if len(argv) >= 2:
        try:
            MAX_NUM = int(argv[1])
        except ValueError:
            MAX_NUM = -1

        # A little edge case handling
        if MAX_NUM > 99:
            print("达咩! - 只可以输入99以内的数字哟~")
            exit(1)

    else:
        # If a max wasn't given, default to 99
        MAX_NUM = 99

    given = ""
    done_so_far = []
    number_done = 0

    while True:
        n = randint(0, MAX_NUM)
        # If and as long as n has already been done, get a new number.
        while n in done_so_far:
            n = randint(0, MAX_NUM)

        try:
            given = input("{} 是数字几".format(
                number_to_japanese(n)))
        except KeyboardInterrupt:
            print("再见!")
            exit(1)
        except EOFError:
            print("再见!")
            exit(1)

        if given.lower() == 'quit':
            print("再见!")
            exit(0)
        if number_done >= MAX_NUM:
            print("您已完成所有数字练习~")
            exit(0)

        try:
            given_n = int(given)
        except ValueError:
            given_n = -1

        if given_n == n:
            print("好厉害~")
            done_so_far.append(n)
            number_done += 1
        else:
            print("再接再厉! 答案是 {}.".format(n))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844275.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号