如何将整数值更改为字母python

如何将整数值更改为字母python,python,Python,所以我正在做一个程序,计算你第一学期的总成绩,第二学期也会这样做。这是我所拥有的,非常简单 a = raw_input('1st Quarter: ') b = raw_input('2nd Quarter: ') c = raw_input('Midterm: ') d = a * 0.4 e = b * 0.4 f = c * 0.2 g = a + b + c print 'Your semester grade is', g 我想知道是否有一段代码,我可以把变量g从一个数字变成一个变量

所以我正在做一个程序,计算你第一学期的总成绩,第二学期也会这样做。这是我所拥有的,非常简单

a = raw_input('1st Quarter: ')
b = raw_input('2nd Quarter: ')
c = raw_input('Midterm: ')
d = a * 0.4
e = b * 0.4
f = c * 0.2
g = a + b + c
print 'Your semester grade is', g
我想知道是否有一段代码,我可以把变量g从一个数字变成一个变量,或者在这种情况下,它是一个等级,比如a、B、C、D或F。我想我可以这样做

if g in [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
    print 'your grade is A'

我会为B-F做更多,但这不起作用。我已经调查过了,在上面找不到太多东西,我所发现的没有帮助或者是不对的

请参见使用对分函数的一个非常类似的示例:

def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'):
    i = bisect(breakpoints, score)
    return grades[i]
因此,在Python3中,您可以执行以下操作:

import bisect

GRADES = 'FDCBA'
GRADE_THRESHOLDS = (60, 70, 80, 90)


def grade(score):
    i = bisect.bisect(GRADE_THRESHOLDS, score)
    return GRADES[i]


if __name__ == '__main__':
    a = int(input('1st Quarter: '))
    b = int(input('2nd Quarter: '))
    c = int(input('Midterm: '))
    weighted = a * 0.4 + b * 0.4 + c * 0.2
    final_grade = grade(weighted)
    print('Your semester grade is', final_grade)

当然,您需要将阈值元组替换为对评分方案有意义的值。

以下程序演示如何在Python中将整数值转换为字母评分:

import math
import sys


def main():
    weights = (('1st Quarter', 2), ('2nd Quarter', 2), ('Midterm', 1),
               ('3rd Quarter', 3), ('4th Quarter', 3), ('Final', 4))
    weighted_score = get_weighted_score(weights)
    min_grade_scores = dict(A=90, B=80, C=70, D=60, F=0)
    grade = pick_grade(weighted_score, min_grade_scores)
    print('Your semester grade is', grade)


def get_weighted_score(weights):
    total_score = total_weight = 0
    for name, weight in weights:
        score = get_integer(name + ': ', 0, 100)
        total_score += score * weight
        total_weight += weight
    return round(total_score / total_weight)


def get_integer(prompt, min_value=-math.inf, max_value=math.inf):
    while True:
        try:
            value = input(prompt)
        except EOFError:
            sys.exit()
        else:
            if not value:
                print('Please provide a value')
                continue
            try:
                number = int(value)
            except ValueError:
                print('Please provide a number')
            else:
                if number < min_value:
                    print('Number may not be lower than', min_value)
                    continue
                if number > max_value:
                    print('Number may not be higher than', max_value)
                    continue
                return number


def pick_grade(weighted_score, min_grade_scores):
    pairs = map(lambda pair: pair[::-1], min_grade_scores.items())
    for score, grade in sorted(pairs, reverse=True):
        if weighted_score >= score:
            return grade
    raise ValueError('Valid grade could not be found')

if __name__ == '__main__':
    main()

特别是,您需要查看pick_grade函数,看看算法是如何工作的。

您可以检查90这是否简单,如果g在xRange90100+1:do stuff或Falkos中是我更喜欢的,尽管这在该函数中不是一个问题,但每当我看到一个可变容器(如用作默认参数的列表)时,我都会感到牙齿发痒。对于断点=60、70、80、90,它也能正常工作。好的方面,我已经更新了示例程序,但请注意,原始grade函数是从python文档复制的。我认为使用列表没有问题。我知道作者询问向下投票是一种失礼,但我很想知道为什么这个答案在最初几分钟就被猛烈抨击。甚至在编辑之前,它就解决了这个问题。A只投了赞成票。我不能代表其他任何人发言,但我对原始版本投了反对票,该版本没有解释,也没有包含导入内容。我刚取下我的。