这是我尝试过的方法:我不了解如何使用同一类的另一方法中的变量。还请解释我如何使用不同类中的方法中的变量。我尝试搜索,但找不到解决方案。因此,我通过测试用例的目的是从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'
假设标记是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