我是python编码的新手,我不明白如何使用另一种方法的变量



这是我尝试过的: 我不明白如何使用来自同一类的另一个方法的变量。另外,请解释如何使用不同类中的方法中的变量。我尝试搜索,但找不到解决方案。因此,我为传递测试用例所做的是从calculate_percentage复制代码并将其粘贴到find_grade方法中。它奏效了,但我认为这是最糟糕的方法。因此,请告诉一个可能的解决方案。 谢谢

#!/bin/python3
#Enter your code here. Read input from STDIN. Print output to STDOUT
class Student:
def __init__(self,roll,name,marks_list):
self.roll=roll
self.name=name
self.marks_list=marks_list 
def calculate_percentage(self):
length=len(self.marks_list)
sum=0
for i in self.marks_list:
sum+=i 
percent=sum/length 
return int(percent)
def find_grade(self,percent):
if percent>=80:
return 'A'
elif percent>=60 and percent<80:
return 'B'
elif percent>=40 and percent<60:
return 'C'
elif percent<40:
return 'F'
if __name__ == '__main__':
roll=int(input())
name=input()
count=int(input())
marks=[]
for i in range(count):
marks.append(int(input()))
s=Student(roll,name,marks)
print(s.calculate_percentage())
print(s.find_grade())

我收到错误:

print(s.find_grade())
TypeError: find_grade() missing 1 required positional argument: 'percent'

感谢每一位回答的人,但我找到了答案: 我只需要把自我百分比 或 percent=self.calculate_percentage(( 调用该方法并使用变量

假设分数是 x/100 比例,否则您的百分比将不正确。

如上所述,您需要将变量百分比传递回函数,因为它在类中是未知的,它只返回。

print(s.find_grade(s.calculate_percentage()))

或者,如果百分比是一个类变量,你可以像这样将其重写到类中:

from statistics import mean
class Student2:
def __init__(self,roll,name,marks_list):
self.roll=roll
self.name=name
self.marks_list=marks_list 
def calculate_percentage(self):
self.percent=mean(marks)
return int(self.percent)
def find_grade(self):
if self.percent>=80:
return 'A'
elif self.percent>=60 and self.percent<80:
return 'B'
elif self.percent>=40 and self.percent<60:
return 'C'
elif self.percent<40:
return 'F'
percent = int(0)
# test variables
vRoll = 2
vName = 'student'
vCount= 2
vMarks= [100, 75]
# main
if __name__ == '__main__':
roll=vRoll
name=vName
count=vCount
marks=vMarks
s2=Student2(roll,name,marks)
print(s2.calculate_percentage()) # 87
print(s2.find_grade()) # A

最新更新