Culture du Japon

Dans cette section nous allons mettre en pratique les concepts

  • listes de mots

  • choix aléatoire dans une liste avec choice()

  • nombre entier aléatoire avec randint(a, b)

  • reste de la division (modulo) %

  • boucle for

  • fonction input()

Zodiac japonais

Les 12 signes du zodiaque japonais sont empruntés du calendrier lunaire chinois. On retrouve ainsi le rat, le bœuf, le tigre, le lapin, le dragon, le serpent, le cheval, la chèvre, le singe, le coq, le chien et le cochon.

Le rat est le premier animal, et l’année 1900 était l’année du rat. 1901 celui du boeuf, etc.

Référence: Jûnishi: les 12 signes du zodiaque

zodiaque = ['rat', 'buffle', 'tigre', 'lapin', 'dragon', 'serpent', 
            'cheval', 'mouton', 'singe', 'coq', 'chien', 'porc', ]

Nous pouvons parcourir et imprimer cette liste.

for animal in zodiaque:
    print(animal)
rat
buffle
tigre
lapin
dragon
serpent
cheval
mouton
singe
coq
chien
porc

En décalant l’année avec une soustraction year - 1900 nous pouvons aligner avec le début de la liste, le rat ayant l’indice 0. Avec la fonction modulo % nous obtenons des indices cycliques allant de 0 à 11. Ceci nous permet d’afficher un tableau avec des années et l’animal correspondant.

for year in range(1960, 2025):
    i = (year - 1900) % 12
    print(year, ':', zodiaque[i])
1960 : rat
1961 : buffle
1962 : tigre
1963 : lapin
1964 : dragon
1965 : serpent
1966 : cheval
1967 : mouton
1968 : singe
1969 : coq
1970 : chien
1971 : porc
1972 : rat
1973 : buffle
1974 : tigre
1975 : lapin
1976 : dragon
1977 : serpent
1978 : cheval
1979 : mouton
1980 : singe
1981 : coq
1982 : chien
1983 : porc
1984 : rat
1985 : buffle
1986 : tigre
1987 : lapin
1988 : dragon
1989 : serpent
1990 : cheval
1991 : mouton
1992 : singe
1993 : coq
1994 : chien
1995 : porc
1996 : rat
1997 : buffle
1998 : tigre
1999 : lapin
2000 : dragon
2001 : serpent
2002 : cheval
2003 : mouton
2004 : singe
2005 : coq
2006 : chien
2007 : porc
2008 : rat
2009 : buffle
2010 : tigre
2011 : lapin
2012 : dragon
2013 : serpent
2014 : cheval
2015 : mouton
2016 : singe
2017 : coq
2018 : chien
2019 : porc
2020 : rat
2021 : buffle
2022 : tigre
2023 : lapin
2024 : dragon

Le cycle des 5 éléments

On peut combiner le cycle des animaux avec le cycle binaire

  • Yin (buffle, tigre, serpent, cheval, coq, chien)

  • Yan (rat, lapon, dragon, chèvre, singe, cochon)

On peut combiner le cycle des animaux avec les 5 éléments

  • métal

  • eau

  • bois

  • feu

  • terre

elements = ['métal', 'eau', 'bois', 'feu', 'terre']
for year in range(2000, 2025):
    i = (year - 1900) % 12
    j = (year - 1900) // 2 % 5
    
    print(year, ':', zodiaque[i], ' - ', elements[j])
2000 : dragon  -  métal
2001 : serpent  -  métal
2002 : cheval  -  eau
2003 : mouton  -  eau
2004 : singe  -  bois
2005 : coq  -  bois
2006 : chien  -  feu
2007 : porc  -  feu
2008 : rat  -  terre
2009 : buffle  -  terre
2010 : tigre  -  métal
2011 : lapin  -  métal
2012 : dragon  -  eau
2013 : serpent  -  eau
2014 : cheval  -  bois
2015 : mouton  -  bois
2016 : singe  -  feu
2017 : coq  -  feu
2018 : chien  -  terre
2019 : porc  -  terre
2020 : rat  -  métal
2021 : buffle  -  métal
2022 : tigre  -  eau
2023 : lapin  -  eau
2024 : dragon  -  bois

Compter en japonais

Nous mettons les nombres de 1 à 10 dans une liste. Pour faire coïncider l’index de la liste avec le nombre, nous mettons zero en première position.

nombres = ['zero', 'ichi', 'ni', 'san', 'yon', 'go', 'roku', 'nana', 'hachi', 'kyu', 'ju']

L’index d’un élément de la liste correspond maintenant au texte de l’élément.

for i in range(11):
    print(i, nombres[i])
0 zero
1 ichi
2 ni
3 san
4 yon
5 go
6 roku
7 nana
8 hachi
9 kyu
10 ju

Apprendre à compter

Nous allons faire un petit programme, ou les nombres de 0 à 10 sont présentés en japonais, de façon aléatoire. Vous devez les reconnaitre et répondre avec un nombre de 0 à 10.

Nous utilisons la fonction randint(0, 10) pour trouver un entier aléatoire entre 0 et 10. Voici 20 nombres aléatoires affichés sur la même ligne.

liste = list(range(11))
liste
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Nous utilisons la fonction shuffle du module random pour mélanger la liste.

from random import shuffle
random.shuffle(liste)
liste
[0, 6, 9, 1, 7, 4, 10, 8, 5, 3, 2]
from random import shuffle
liste = list(range(11))
shuffle(liste)
score = 0

print('Apprenez les nombres 0 à 10 en japonais')
for i in liste:
    nombre = nombres[i]
    reponse = input(nombre + ': ')
    if int(reponse) == i:
        score = score + 1
    else:
        print('faux! la bonne réponse est', i)
        
print('votre score:', score)
Apprenez les nombres 0 à 10 en japonais
ni:  2
san:  3
kyu:  9
nana:  7
go:  6
faux! la bonne réponse est 5
yon:  4
ichi:  1
zero:  0
ju:  10
roku:  6
hachi:  8
votre score: 10

Compter jusqu’à 99

Le système de numération en japonais est complètement régulier.
Un utilisant les nombres 1 à 10 vous arrivez a compter jusqu’à 99.

  • 11 = ju ichi (dix-un)

  • 12 = ju ni (dix-deux)

  • 13 = ju san (dix-trois)

A partir de 20:

  • 20 = ni ju (deux-dix)

  • 21 = ni ju ichi (deux-dix-un)

  • 22 = ni ju ni (deux-dix-deux)

et ainsi de suite jusqu’à

  • 99 = kyu ju kyu (neuf-dix-neuf)

Nous pouvons donc afficher les nombres en japonais de 0 à 99.

for i in range(100):
    u = i % 10    # unité
    d = i // 10   # dizaine
    
    if i <= 10:
        print(i, '=', nombres[i])
    elif i < 20:
        print(i, '=', 'ju', nombres[u])
    else:
        if u == 0:
            print(i, '=', nombres[d], 'ju')
        else:
            print(i, '=', nombres[d], 'ju', nombres[u])
0 = zero
1 = ichi
2 = ni
3 = san
4 = yon
5 = go
6 = roku
7 = nana
8 = hachi
9 = kyu
10 = ju
11 = ju ichi
12 = ju ni
13 = ju san
14 = ju yon
15 = ju go
16 = ju roku
17 = ju nana
18 = ju hachi
19 = ju kyu
20 = ni ju
21 = ni ju ichi
22 = ni ju ni
23 = ni ju san
24 = ni ju yon
25 = ni ju go
26 = ni ju roku
27 = ni ju nana
28 = ni ju hachi
29 = ni ju kyu
30 = san ju
31 = san ju ichi
32 = san ju ni
33 = san ju san
34 = san ju yon
35 = san ju go
36 = san ju roku
37 = san ju nana
38 = san ju hachi
39 = san ju kyu
40 = yon ju
41 = yon ju ichi
42 = yon ju ni
43 = yon ju san
44 = yon ju yon
45 = yon ju go
46 = yon ju roku
47 = yon ju nana
48 = yon ju hachi
49 = yon ju kyu
50 = go ju
51 = go ju ichi
52 = go ju ni
53 = go ju san
54 = go ju yon
55 = go ju go
56 = go ju roku
57 = go ju nana
58 = go ju hachi
59 = go ju kyu
60 = roku ju
61 = roku ju ichi
62 = roku ju ni
63 = roku ju san
64 = roku ju yon
65 = roku ju go
66 = roku ju roku
67 = roku ju nana
68 = roku ju hachi
69 = roku ju kyu
70 = nana ju
71 = nana ju ichi
72 = nana ju ni
73 = nana ju san
74 = nana ju yon
75 = nana ju go
76 = nana ju roku
77 = nana ju nana
78 = nana ju hachi
79 = nana ju kyu
80 = hachi ju
81 = hachi ju ichi
82 = hachi ju ni
83 = hachi ju san
84 = hachi ju yon
85 = hachi ju go
86 = hachi ju roku
87 = hachi ju nana
88 = hachi ju hachi
89 = hachi ju kyu
90 = kyu ju
91 = kyu ju ichi
92 = kyu ju ni
93 = kyu ju san
94 = kyu ju yon
95 = kyu ju go
96 = kyu ju roku
97 = kyu ju nana
98 = kyu ju hachi
99 = kyu ju kyu

Calendrier japonais

Les années au Japon sont comptées selon les ères de l’empereur.

  • 1868 ère Meishi

  • 1912 ère Taisho

  • 1926 ère Showa

  • 1989 ère Heisei

  • 2019 ère Reiwa

Nous pouvons afficher les ères en utilisant des tests if-elif.

for year in range(1980, 2025):
    if year >= 2019:
        print(year, '= Reiwa', year-2019+1)
    elif year >= 1989:
        print(year, '= Heisei', year-1989+1)
    elif year >= 1926:
        print(year, '= Showa', year-1926+1)
1980 = Showa 55
1981 = Showa 56
1982 = Showa 57
1983 = Showa 58
1984 = Showa 59
1985 = Showa 60
1986 = Showa 61
1987 = Showa 62
1988 = Showa 63
1989 = Heisei 1
1990 = Heisei 2
1991 = Heisei 3
1992 = Heisei 4
1993 = Heisei 5
1994 = Heisei 6
1995 = Heisei 7
1996 = Heisei 8
1997 = Heisei 9
1998 = Heisei 10
1999 = Heisei 11
2000 = Heisei 12
2001 = Heisei 13
2002 = Heisei 14
2003 = Heisei 15
2004 = Heisei 16
2005 = Heisei 17
2006 = Heisei 18
2007 = Heisei 19
2008 = Heisei 20
2009 = Heisei 21
2010 = Heisei 22
2011 = Heisei 23
2012 = Heisei 24
2013 = Heisei 25
2014 = Heisei 26
2015 = Heisei 27
2016 = Heisei 28
2017 = Heisei 29
2018 = Heisei 30
2019 = Reiwa 1
2020 = Reiwa 2
2021 = Reiwa 3
2022 = Reiwa 4
2023 = Reiwa 5
2024 = Reiwa 6