程序根本没有运行

时间:2014-03-19 14:53:06

标签: python linux

我正在努力完成这项挑战:

  

编写一个程序,允许用户输入评分为a的分数   编程类(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,当我尝试在终端中运行它时会发生这种情况:

  

blurr @ blurr-pc:〜/ code $ chmod u + x gradingprogram.py

     

blurr @ blurr-pc:〜/ code $ ./gradingprogram.py

该计划根本没有运行。

3 个答案:

答案 0 :(得分:1)

程序确实运行,但是没有生成任何输出,因为实际上是在比较函数和列表,所以if语句都不适用。您的代码存在一些问题:

  1. a是用于生成随机数的函数,而不是随机数本身。删除lambda:,或调用a()并将结果分配给某个变量。
  2. 如果您想让用户输入一个号码,请使用a = int(raw_input())
  3. 如果您想检查a是否在范围内,请使用in关键字,即if a in range(90, 99)或更好(效率更高),使用if 90 <= a < 100 < / LI>

答案 1 :(得分:0)

在这种情况下,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

答案 2 :(得分:0)

首先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"