我无法修复我的课程和循环

时间:2018-01-09 04:22:27

标签: python class

           class Conjugaison:
                  def Simple_Present(self):
                           self.group =  {"Je":'e', "Tu":'es', "Il ou 
                  Elles":'e' , "Nous":'ons' ,"Vous":'ez' ,"Ils ou Elles":'ent'}

                            self.verb = str(input("Enter a veb here:"))
                            for keys in self.group:
                                 print(keys,self.verb[:-2]+self.group(keys))
            Em1 = Conjugason()
            Em1.Simple_Present()

当我修改上面的代码时,我就是这样:

                                Enter a verb here: entrer

                                        Vous entrez
                                        Tu entres
                                        Ils ou Elles entrent
                                        Il ou Elles entre
                                        Nous entrons
                                        Je entre

我被期待这样的事情:                                             Je entre .....                                             tu entres ....                                             il ou elle entre .....                                             nous entrons .....                                             vous entrez ......                                             ils ou elles entrent。

我不知道我在哪里做错了。

谢谢!

3 个答案:

答案 0 :(得分:0)

这里的类名是'Conjugaison'  但你在这里创造的对象是'Conjugason'  Em1 =​​ Conjugason()

调用与创建的类不同的类。

答案 1 :(得分:0)

我看到人们没有回答你问的实际问题。 当然,您调用的课程有一个拼写错误Conjugason而不是Conjugaison,但这里不会产生任何错误。

但您抱怨打印顺序不正确。 好吧,在Python中,标准字典不是有序的。

我建议您使用OrderedDict。这样,你的for循环将遵循你在创建字典时定义的顺序。

from collections import OrderedDict

class Conjugaison:
    def Simple_Present(self):
        self.group = OrderedDict([("Je", "e"), ("Tu", "es"), ("Il ou Elle", "e"),
                                  ("Nous", "ons"), ("Vous", "ez"), 
                                  ("Ils ou Elles", 'ent')])

        self.verb = str(input("Enter a verb here:"))
        for keys in self.group:
            print(keys,self.verb[:-2]+self.group(keys))


Em1 = Conjugaison()
Em1.Simple_Present()

PS:我是法国人,你可以添加一个额外的逻辑。如果您的动词以元音开头,则需要使用J'而不是Je。 对于单数第三人,它将是Il ou Elle而不是Il ou Elles。 这里没有真正需要的课程,你可以在课堂外调用你的功能。

答案 2 :(得分:0)

字典是unordered关联表。 这意味着当您使用for-each循环遍历它时,您不能依赖键值对的顺序。这不是你的错误,它是字典的设计行为。

您可以拥有一个键列表,这些键将保留您对输出的顺序:

subjects = ['Je', 'Tu', 'Il ou Elle', 'Nous', 'Vous', 'Ils ou Elles']
terminaisons = ['e', 'es', 'e', 'ons', 'ez', 'ent']
for subject, terminaison in zip(subjects, terminaisons):
    print(subject, terminaison)

但这并没有使用字典。 如果要播放和测试字典,可以编写以下内容:

conjugaisonTable = {subject: terminaison for subject, terminaison in zip(subjects, terminaisons)}
for subject in subjects:
    print(subject, conjugaisonTable[subject])