程序根本不运行

我正试图完成这个挑战:

编写一个程序,允许用户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语句都不适用。 你的代码有几个问题:

  1. a是产生随机数的函数,而不是随机数本身。 要么删除lambda:要么调用a()并将结果赋给某个变量。
  2. 如果你想实际让用户输入一个数字,使用a = int(raw_input())
  3. 如果你想检查是否在范围内,使用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