如何使类函数在python中重复自我?

时间:2017-03-03 21:58:17

标签: python python-2.7

我想让这段代码重复一遍,所以我的程序永远不会关闭。

    import os
    print "Unesite navedene informacije za ucenika"
    class Ucenik1(object):
      """docstring for Ucenik1"""
        def __init__(self,  ime, prezime, razred, godiste, struka, dodatne_info):

             self.ime = ime
             self.prezime = prezime
             self.razred = razred
             self.godiste = godiste
             self.struka = struka,
             self.dodatne_info = dodatne_info

        def informacije_ucenika(self):
            my_list = [self.ime , 
                       self.prezime, 
                       self.razred, 
                       self.godiste, 
                       self.struka,
                       self.dodatne_info
               ]
         list = open("text.txt", "w")
         for item in my_list:
             list.write(str(item) + "\n")

         list.close()
         os.rename("text.txt", self.ime)

ucenici1 = Ucenik1(raw_input(str("Unesite ime")), raw_input(str("Unesite             prezime")), raw_input(str("Unesite razred")), raw_input(str("Unesite godiste")),                    raw_input(str("Unesite struku")), raw_input(str("Unesite dodatne informacije")))

ucenici1.informacije_ucenika()

它基本上是一个程序,可以获取有关学生的信息并将其存储到文件中。 它工作正常,但我想让它重复它自己,所以你不必每次你想制作一个文件时运行.exe。 在线我发现我可以使用while循环,但我不能让它在课堂上工作。 注意:这里有一些缩进错误,但在我的编辑器中一切都很好

4 个答案:

答案 0 :(得分:1)

这取决于您想要重复的代码部分。 如果你想添加一个学生并将其无限保存到文件中,你应该把

while True:
    ucenici1 = Ucenik1(...)
    ucenici1.informacije_ucenika()

关于缩进 - while循环下语句的间距(像PyCharm这样的编辑器如果你把它写出来就应该为你做;通常它是四个空格或改为使用TAB)。所以最后两个陈述将重演。

答案 1 :(得分:0)

您的问题的简单答案,以包装在while循环中运行的代码行(您怀疑是解决方案)。

while True:
    ucenici1 = Ucenik1(raw_input(str("Unesite ime")), raw_input(str("Unesite             prezime")), raw_input(str("Unesite razred")), raw_input(str("Unesite godiste")),                    raw_input(str("Unesite struku")), raw_input(str("Unesite dodatne informacije")))

    ucenici1.informacije_ucenika()

还有许多其他改进也可以建议,比如不必使用str将字符串强制转换为字符串,使用您想要的名称打开文件,而不是重命名,而不是使用list作为变量名称,因为列表是一个python关键字。

答案 2 :(得分:0)

这是您的代码,但使用while True循环:

import os
print "Unesite navedene informacije za ucenika"
class Ucenik1(object):
  """docstring for Ucenik1"""
    def __init__(self,  ime, prezime, razred, godiste, struka, dodatne_info):

         self.ime = ime
         self.prezime = prezime
         self.razred = razred
         self.godiste = godiste
         self.struka = struka,
         self.dodatne_info = dodatne_info

    def informacije_ucenika(self):
        my_list = [self.ime , 
                   self.prezime, 
                   self.razred, 
                   self.godiste, 
                   self.struka,
                   self.dodatne_info
           ]
     list = open("text.txt", "w")
     for item in my_list:
         list.write(str(item) + "\n")

     list.close()
     os.rename("text.txt", self.ime)

while True:
    ucenici1 = Ucenik1(raw_input(str("Unesite ime")), raw_input(str("Unesite             prezime")), raw_input(str("Unesite razred")), raw_input(str("Unesite godiste")),                    raw_input(str("Unesite struku")), raw_input(str("Unesite dodatne informacije")))

    ucenici1.informacije_ucenika()

答案 3 :(得分:0)

while True:
    ucenici1 = Ucenik1(raw_input(str("Unesite ime")), raw_input(str("Unesite             prezime")), raw_input(str("Unesite razred")), raw_input(str("Unesite godiste")),                    raw_input(str("Unesite struku")), raw_input(str("Unesite dodatne informacije")))

    ucenici1.informacije_ucenika()

原因

ucenici1.informacije_ucenika()                                  ^ IndentationError:unindent与任何外部缩进级别都不匹配