温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - I am new to python coding and i do not understand how to use a variable from another method
python-3.x

其他 - 我是python编码的新手,但我不了解如何使用其他方法中的变量

发布于 2020-03-27 16:05:51

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

查看更多

查看更多

提问者
Ajay Kumar Chowdary
被浏览
13
Grom 2020-01-31 16:56

假设标记是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