如何将整数值更改为字母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只投了赞成票。我不能代表其他任何人发言,但我对原始版本投了反对票,该版本没有解释,也没有包含导入内容。我刚取下我的。