【发布时间】:2015-12-28 12:59:26
【问题描述】:
在下面的程序中,我创建了一个名为“Tv”的类,并从这个类中实例化了两个对象,分别称为“vardagsrums_tv”和“koks_tv”。在程序的主函数中,用户可以通过我创建的某些类方法更改两个对象中的不同设置,例如、音量和通道。到目前为止,一切顺利。
不过,问题的核心是,当用户更改了这些不同的设置(音量、频道)时,我想将它们保存到一个文本文件中,这样当用户关闭程序并重新打开它时,所有设置都将与用户离开时一样。
这是我的程序:
def main():
vardagsrums_tv = Tv(read_file(2), read_file(1))
koks_tv = Tv(read_file(5), read_file(4))
choice = None
print("***Välkommen till TV-simulatorn***")
while choice != "3":
print("""
1. Vardagsrums TV
2. Köks TV
3. Avsluta
""")
choice = input("Välj ett alternativ: ")
print("")
while choice == "1":
print(vardagsrums_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_one = input("Välj ett alternativ: ")
if choice_one == "1":
vardagsrums_tv.byt_kanal()
elif choice_one == "2":
vardagsrums_tv.sank_volym()
elif choice_one == "3":
vardagsrums_tv.hoj_volym()
elif choice_one == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
while choice == "2":
print(koks_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_two = input("Välj ett alternativ: ")
if choice_two == "1":
koks_tv.byt_kanal()
elif choice_two == "2":
koks_tv.sank_volym()
elif choice_two == "3":
koks_tv.hoj_volym()
elif choice_two == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
if choice not in ("1", "2", "3", None):
print("Du har angivit ett felaktigt alternativ. Försök igen!")
lista_1 = []
lista_1.append(vardagsrums_tv)
print(lista_1)
lista_2 =[]
lista_2.append(koks_tv)
write_file(lista_1, lista_2)
在我的 main() 函数结束时,您会注意到我正在尝试如何将当前设置保存到我的文本文件中。我创建了一个列表并尝试以某种方式从我的对象“vardagsrums_tv”和“koks_tv”中获取信息。我想,如果你可以打印一个对象并获取设置,那么你也可以将它附加到一个列表中。显然它没有按计划工作,因为我遇到了一个错误。
我希望你明白我想要做什么:我想将对象(vardagsrums_tv、koks_tv)中的信息保存到一个文本文件中,但我似乎无法获取我想要的信息。
这是程序的其余部分:
def read_file(val):
val = val
text_file = open("C:\\Users\\Viktor\\Desktop\\laboration_5.txt", "r")
textrader = text_file.readlines()
lista = []
for i in range(len(textrader)):
text_line = textrader[i]
element = text_line.split(",")
lista += element[0], element[1], element[2]
text_file.close()
return lista[val]
def write_file(tv_1, tv_2):
rad_1 = tv_1
rad_2 = tv_2
for i in range(len(vardagsrums_tv)):
rad_1 += vardagsrums_tv[i], ","
for i in range(len(koks_tv)):
rad_2 += koks_tv[i], ","
text_file = open("C:\\Users\\Viktor\\Desktop\\laboration_5.txt", "w")
text_file.append(rad_1)
text_file.append(rad_2)
text_file.close
class Tv(object):
"""En vardagsrums TV"""
def __init__(self, kanal, volym):
self.kanal = int(kanal)
self.volym = int(volym)
def __str__(self):
rep = "Vardagsrums TV\n"
rep += "Kanal: " + str(self.kanal) + "\n"
rep += "Volym: " + str(self.volym) + "\n"
return rep
def byt_kanal(self):
kanal = int(input("Ange din önskade kanal: "))
while kanal < 1 or kanal > 100:
print("Du har angivet en felaktig kanal. Vänlig ange en kanal mellan 1 och 100!")
kanal = int(input("Ange din önskade kanal: "))
self.kanal = kanal
def hoj_volym(self, hoj = 1):
self.volym += hoj
if self.volym > 10:
print("Du kan inte höja volymen ytterligare.")
self.volym = 10
def sank_volym(self, sank = 1):
self.volym -= sank
if self.volym < 0:
print("Du kan inte sänka volymen ytterligare.")
self.volym = 0
def main():
vardagsrums_tv = Tv(read_file(2), read_file(1))
koks_tv = Tv(read_file(5), read_file(4))
choice = None
print("***Välkommen till TV-simulatorn***")
while choice != "3":
print("""
1. Vardagsrums TV
2. Köks TV
3. Avsluta
""")
choice = input("Välj ett alternativ: ")
print("")
while choice == "1":
print(vardagsrums_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_one = input("Välj ett alternativ: ")
if choice_one == "1":
vardagsrums_tv.byt_kanal()
elif choice_one == "2":
vardagsrums_tv.sank_volym()
elif choice_one == "3":
vardagsrums_tv.hoj_volym()
elif choice_one == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
while choice == "2":
print(koks_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_two = input("Välj ett alternativ: ")
if choice_two == "1":
koks_tv.byt_kanal()
elif choice_two == "2":
koks_tv.sank_volym()
elif choice_two == "3":
koks_tv.hoj_volym()
elif choice_two == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
if choice not in ("1", "2", "3", None):
print("Du har angivit ett felaktigt alternativ. Försök igen!")
lista_1 = []
lista_1.append(vardagsrums_tv)
print(lista_1)
lista_2 =[]
lista_2.append(koks_tv)
write_file(lista_1, lista_2)
main()
input("Vänligen tryck enter för att avsluta.")
【问题讨论】: