我无法修复我的类和for循环

2024-04-29 19:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

           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

我应该是这样的: 我去。。。。。 主菜。。。。 我要去。。。。。 理性的入口。。。。。 请。。。。。。 我要走了。你知道吗

我不知道我哪里做错了。你知道吗

谢谢你!你知道吗


Tags: selfgroupoukeyssimpleilnousenter
3条回答

这里的类名是“Conjugaison” 但你在这里创造的对象是“魔术师” Em1=Conjugason()

调用与创建的类不同的类。你知道吗

字典是一个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])

我看到人们没有回答你问的问题。 当然,您调用的类有一个typo 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()

附言:我是法国人,你可以加一个额外的逻辑。如果你的动词以元音开头,你需要用J'而不是Je。 对于单数第三人称,它应该是Il ou Elle,而不是Il ou Elles。 这里还不需要类,你可以在类之外调用你的函数。你知道吗

相关问题 更多 >