我是python的新手,想知道我的代码中缺少什么。
我想建立一个接收3个字母的机场目的地和出发地的类,并打印出该类是否在文本文件中
感谢您的帮助!
class departure:
def __init__(self, destfrom, destto):
self.destfrom = destfrom
self.destto = destto
def verdest(self,dest):
flag = 0
destinations = ["JFK","AMS"]
for i in destinations:
if i == dest:
flag = i
return flag
if verdest() in open('airportlist.txt').read():
print("true")
答案 0 :(得分:0)
您需要进行一些更改。 if i == dest:
正在检查JFK
是否等于文件内容,您可能是说in
。然后,您有了一个类,但从未对其进行初始化。
class departure:
def __init__(self, destfrom, destto):
self.destfrom = destfrom
self.destto = destto
def verdest(self,dest):
flag = 0
destinations = ["JFK","AMS"]
for i in destinations:
if i in dest: # change to in
flag = i
return flag
d = departure(['BWI'],['AMS'])
f = open('airportlist.txt','r')
flag = d.verdest(f.read()) #find last airport that was in file, could modify this to return list
if flag:
print("true" + flag)
else:
print('false')
f.close() #close the file
答案 1 :(得分:0)
read
将文件的行读取为单个字符串。
如果使用readlines
,则会在文件中获得行的列表。
然后,您可以查看这些行中是否有单独的代码。
没有课程,像这样:
def verdest(self, dest):
flag = 0 # note - not used!
destinations = open('airportlist.txt').readlines()
return dest in destinations
if verdest("LGW"):
print("true")
如果您要在班级中存储两个机场名称,然后再在文件中查找它们,请照此保存三个字母代码,但是将文件名内容传递给检查功能?
class departure:
def __init__(self, destfrom, destto):
self.destfrom = destfrom
self.destto = destto
def verdest(self, destinations):
return self.destfrom in destinations and self.destto in destinations
然后创建一个类并使用它:
places = departure("JFK","AMS")
#This makes your class, and remembers the variables in member variables
if places.verdest(open('airportlist.txt').readlines()):
#In this member function call, places remembers the member variable set up above
print("true")
现在,您可以使用该类的__init__
方法读取文件,而不是每次都要检查。
答案 2 :(得分:-1)
您在verdest()函数调用中缺少参数。