Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-法语年份/数字发音器_Python - Fatal编程技术网

Python-法语年份/数字发音器

Python-法语年份/数字发音器,python,Python,我想把我学到的东西做点什么,然后想做一个法语年份/数字发音器(基于文本)。我偶然发现了一些问题,如如果我有不同的数字,它们都将交换位置等。我现在提供的代码只适用于4位数字,正如您可能看到的,但我稍后将添加其他数字。我来这里想问的是,如果我输入ex.1992、1982、1972等,为什么脚本输出“deux”而不是“douze”?您将在代码的末尾找到这一点 不幸的是,我没有正确格式化代码,因此我不得不使用pastebin: 但首先我警告你;这可能会导致眼睛疼痛。我还没有理解if/elif等之间的区别

我想把我学到的东西做点什么,然后想做一个法语年份/数字发音器(基于文本)。我偶然发现了一些问题,如如果我有不同的数字,它们都将交换位置等。我现在提供的代码只适用于4位数字,正如您可能看到的,但我稍后将添加其他数字。我来这里想问的是,如果我输入ex.1992、1982、1972等,为什么脚本输出“deux”而不是“douze”?您将在代码的末尾找到这一点

不幸的是,我没有正确格式化代码,因此我不得不使用pastebin: 但首先我警告你;这可能会导致眼睛疼痛。我还没有理解if/elif等之间的区别。

因为永远不会到达
e=“douze”

 elif year[2] == ("7", "8", "9") and year[3] == "2":
     e = "douze"
我想你是在第[2]年(7、8、9)读的。“82”应该是“deux”而不是“douce”


事实上,清单或口述可以让你的生活轻松很多。下面的代码段生成了从1到99的法语数字名称(不包括“et”,因为我不知道什么时候该放它):

def两位数(i):
如果不是0
问题是您正在检查
年[2]==(“7”、“8”、“9”)
,但您需要检查
年[2]
是否在
(“7”、“9”)
(对于80岁的人,不应该涂抹,检查注释)

只需更改
elif
,即可完成以下操作:

year = raw_input("Year: ")

a = "Mille"
b = ""
c = "cent"
d = ""
e = ""

if len(year) == 4:

        # Decides century
        if year[1] == "9":
                b = " neuf "
        if year[1] == "8":
                b = " huit "
        if year[1] == "7":
                b = " sept "
        if year[1] == "6":
                b = " six "
        if year[1] == "5":
                b = " cinq "
        if year[1] == "4":
                b = " quatre "
        if year[1] == "3":
                b = " trois "
        if year[1] == "2":
                b = " deux "
        if year[1] == "1":
                b = " un "
        if year[1] == "0":
                c = ""

        # Sets decade
        if year[2] == "9":
                d = " quatre-vingt"
        if year[2] == "8":
                d = " quatre-vingt"
        if year[2] == "7":
                d = " soixante"
        if year[2] == "6":
                d = " soixante"
        if year[2] == "5":
                d = " cinquante"
        if year[2] == "4":
                d = " quarante"
        if year[2] == "3":
                d = " trente"
        if year[2] == "2":
                d = " vingt"

        # Sets year
        if year[3] == "9":
                e = " neuf"
        if year[3] == "8":
                e = " huit"
        if year[3] == "7":
                e = " sept"
        if year[3] == "6":
                e = " six"
        if year[3] == "5":
                e = " cinq"
        if year[3] == "4":
                e = " quatre"
        if year[3] == "3":
                e = " trois"
        if year[3] == "2":
                e = " deux"
        if year[3] == "1":
                e = " et un"
        if year[3] == "0":
                e = ""

        # Sets year for 70s, 80s, 90s (different rule)
        elif year[2] in ("7", "9") and year[3] == "2":
                e = " douze"

        print a + b + c + d + e

else:
        print "Your desired year does not have 4 digits"
输出:

# Year: 1992
# Mille neuf cent quatre-vingt douze

顺便说一句,我建议您使用字典来简化操作,正如@AdamSmith在注释中所说的那样

使用hashmap而不是所有那些
if
s!基本上只是一本字典,上面写着:
centurynames={“1”:“un”,“2”:“deux”,“3”:“trois”,…,“9”:“neuf”}
然后你就可以做
b=centurynames[year[1]]
这是一个巧妙的问题。如果您在问题中包含您的代码,对子孙后代更好。这比你想象的要容易,因为它允许一些降价
。如果你把这些标签放在一个问题上,然后在它们之间粘贴你的代码,那么它应该显示正确的格式。我会为你做的,但我没有足够的信誉来编辑一个问题,1982年和1992年是一样的。对不起,我的法语不是很好,我假设那些部分是正确的。我已经更新了我的答案谢谢你的评论!这真的帮了我很大的忙。
year = raw_input("Year: ")

a = "Mille"
b = ""
c = "cent"
d = ""
e = ""

if len(year) == 4:

        # Decides century
        if year[1] == "9":
                b = " neuf "
        if year[1] == "8":
                b = " huit "
        if year[1] == "7":
                b = " sept "
        if year[1] == "6":
                b = " six "
        if year[1] == "5":
                b = " cinq "
        if year[1] == "4":
                b = " quatre "
        if year[1] == "3":
                b = " trois "
        if year[1] == "2":
                b = " deux "
        if year[1] == "1":
                b = " un "
        if year[1] == "0":
                c = ""

        # Sets decade
        if year[2] == "9":
                d = " quatre-vingt"
        if year[2] == "8":
                d = " quatre-vingt"
        if year[2] == "7":
                d = " soixante"
        if year[2] == "6":
                d = " soixante"
        if year[2] == "5":
                d = " cinquante"
        if year[2] == "4":
                d = " quarante"
        if year[2] == "3":
                d = " trente"
        if year[2] == "2":
                d = " vingt"

        # Sets year
        if year[3] == "9":
                e = " neuf"
        if year[3] == "8":
                e = " huit"
        if year[3] == "7":
                e = " sept"
        if year[3] == "6":
                e = " six"
        if year[3] == "5":
                e = " cinq"
        if year[3] == "4":
                e = " quatre"
        if year[3] == "3":
                e = " trois"
        if year[3] == "2":
                e = " deux"
        if year[3] == "1":
                e = " et un"
        if year[3] == "0":
                e = ""

        # Sets year for 70s, 80s, 90s (different rule)
        elif year[2] in ("7", "9") and year[3] == "2":
                e = " douze"

        print a + b + c + d + e

else:
        print "Your desired year does not have 4 digits"
# Year: 1992
# Mille neuf cent quatre-vingt douze