我正试图完成这个挑战:
编写一个程序,允许用户input在编程类(0-100)中评分的成绩。 如果用户得分100,则通知用户他们得到了满分。
★修改程序,如果用户得分为90-100,则通知用户他们得分为A.
★★修改程序,以便通知用户其字母等级0-59 F 60-69 D 70-79 C 80-89 B 90-100 A
我迄今为止所尝试的是:
#!/usr/bin/python import random a = lambda: random.randint(0, 100) if a == 100: print "You have a perfect score" if a == range(90, 99): print "You have scored an A" if a == range(80, 89): print "You have scored a B" if a == range(70, 79): print "You have scored a C" if a == range(60, 69): print "You have scored a D" if a == range(0, 59): print "You have scored an F"
不知道我做错了什么,但我运行Ubuntu 13.10,这是当我尝试在terminal中运行它会发生什么:
blurr @ blurr-pc:〜/ code $ chmod u + x gradingprogram.py
blurr @ blurr-pc:〜/ code $ ./gradingprogram.py
该程序根本不运行。
首先a
是一个函数,所以你不应该试图把它和一个数字进行比较。 调用该函数并将其分配给一个变量。 grade = a();
第二,你可以检查一个数字是否在一个范围内, number > lower and number < upper
您也可以使用print
语句来帮助您调试代码。
#!/usr/bin/python import random a = lambda: random.randint(0, 100) print a grade = a() print grade if grade == 100: print "You have a perfect score" if grade >= 90 and grade < 100: print "You have scored an A" if grade >= 80 and grade <= 89: print "You have scored a B" if grade >= 70 and grade <= 79: print "You have scored a C" if grade >= 60 and grade <= 69: print "You have scored a D" if grade < 59: print "You have scored an F"
该程序确实运行,但是不会生成任何输出,因为实际上是将函数与列表进行比较,所以if
语句都不适用。 你的代码有几个问题:
a
是产生随机数的函数,而不是随机数本身。 要么删除lambda:
要么调用a()
并将结果赋给某个变量。 a = int(raw_input())
in
关键字,即, if a in range(90, 99)
或更好(更有效), if 90 <= a < 100
在这种情况下, type(a)
是function
– 所以@tobias_k说,你必须调用它。
func = lambda: random.randint(0, 100) a = func() ... # alternatively a = (lambda: random.randint(0,100))() ....
几乎会解决它。
你还需要检查你是否在一个范围内,然后你在这里。
例:
if a >= lower_bound and a <= upper_bound: # within range