如何解决如何将一个类中的函数的返回值传递给同一类中的另一个函数?
我正在与类对象一起工作并在此方面做得更好,我启动了一个新项目,该项目将根据用户的GPA,SAT和ACT分数检查用户是否符合MIT或哈佛的资格(不要检查事实)我以为这将是一个有趣的项目,想出了很多数字)
我还没有开始从事该项目的哈佛资格部分,所以我只会在MIT方面使用。
这是我的主文件
#Inheritance
#8/28/2020
from mitstudent import mitstudent #This is importing both of the classes
from harvardstudent import harvardstudent
name = str(input("What is your name?: ")) #Asking the user's name to use as an argument for the parameter
while True: #This while loop using try and except to make sure that the user inputs a number instead of a string
try:
name = mitstudent()
except ValueError:
print("Input a number")
else:
break
print(mitstudent.eligible(name))
这是我的mitstudent.py文件,其中包含我的课程
#8/28/2020
#Inheritance
class mitstudent:
def __init__(self): #These are my class objects,the student will input their GPA,ACT score,and SAT score and the
#function will input it as the objects
self.gpa = float(input("What is your gpa?: "))
self.act = float(input("What is your ACT score?: "))
self.sat = float(input("What is your SAT score?: "))
'''
The next three class functions will be to check if the gpa,act,or sat scores are "eligible" for MIT if they are,the
function will return a value of "eligible" and if they aren't the function will return a value of "not eligible"
'''
def gpachecker(self):
if float(self.gpa) >= 3.5:
return "eligible"
else:
return "not eligible"
def actchecker(self):
if float(self.act) >= 33:
return "eligible"
else:
return "not eligible"
def satchecker(self):
if float(self.sat) >= 1400:
return "eligible"
else:
return "not eligible"
def eligible(self): #This function checks to see if the student has met all of the requirements to be eligible for
#Mit,which includes a gpa over 3.5,an act score over 33,and an sat score over 1400
if mitstudent.gpachecker and mitstudent.actchecker and mitstudent.satchecker == "eligible":
return "This student is eligible for MIT"
else:
return "This student is ineligible for MIT"
在主文件中,我设置了一个名称,并为所有对象输入了9999,但是仍然显示该学生不合格。 我相信这是因为gpachecker(动作和坐着)功能中的return语句实际上并未返回我想要的方式。有什么办法可以从这些函数中返回语句吗?
def gpachecker(self):
if float(self.gpa) >= 3.5:
return "eligible"
else:
return "not eligible"
是否要在if语句中实际使用它?
def eligible(self): #This function checks to see if the student has met all of the requirements to be eligible for
#Mit,and an sat score over 1400
if mitstudent.gpachecker and mitstudent.actchecker and mitstudent.satchecker == "eligible":
return "This student is eligible for MIT"
else:
return "This student is ineligible for MIT"
解决方法
我认为问题出在您的if语句上。
if mitstudent.gpachecker and mitstudent.actchecker and mitstudent.satchecker == "eligible":
条件将按以下方式评估:
mitstudent.gpachecker and mitstudent.actchecker and (mitstudent.satchecker == "eligible")
首先,如果要获取方法返回的值,则必须使用self.method_name()
进行调用。
尽管mitstudent.gpachecker
,mitstudent.actchecker
和mitstudent.satchecker
的值始终是True
,因为它们与类的方法有关,而(mitstudent.satchecker == "eligible")
始终是False
认为mitstudent.satchecker是一个函数,而不是字符串。
解决方案如下:
if self.gpachecker() == "eligible" and self.actchecker() == "eligible" and self.satchecker() == "eligible":
您可能还希望修改检查器方法以返回布尔(True或False)值而不是字符串,以使条件变短:
if self.gpachecker() and self.actchecker() and self.satchecker():
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。