简单的Python代码,将相应的字母分配给数字等级

时间:2016-09-23 21:53:16

标签: python list comparison

我正在尝试编写代码,以便用户可以输入将从列表中提取数字等级的原始数据,并将该数值与字母等级配对。即:列表中的第四个等级是86,因此它将打印86以及字母等级B.

这是我到目前为止所做的:

test('should add new post', function(assert) {
  var done = assert.async();
  visit('/posts/new');

  fillIn('input.title', 'My new post');
  click('button.submit');

  andThen(() => {
    assert.equal(find('ul.posts li:first').text(), 'My new post')

    click('button.edit');
    fillIn('input.title', 'My edited post');
    click('button.submit');

    andThen(() => {
      assert.equal(find('ul.posts li:first').text(), 'My edited post')
      done();
    });
  });
});

4 个答案:

答案 0 :(得分:1)

这应该达到你想要的目的:

grades = [62, 68, 93, 75, 89, 85]


def LetterGrade(grade):

    if grade >= 90:
        result = [grade, 'A']
    elif grade >= 80 and grades < 90:
        result = [grade, 'B']
    elif grade >= 70 and grades < 80:
        result = [grade, 'C']
    elif grade >= 60 and grades < 70:
        result = [grade, 'D']
    else:
        result = [grade, 'F']

    return result

# call LetterGrade for each value in grades array
for grade in grades:
    print(LetterGrade(grade))

您需要为等级数组中的每个值循环。另外,尝试养成遵循PEP 8(Python风格指南)的习惯

答案 1 :(得分:0)

您遇到的问题是grades仅包含字符串。 '1'是一个字符串就像'你好'。在python中,字符串不等于数字,因此比较它们总是错误的。此外,您要将grades的全部内容与一个数字进行比较,该数字也将评估为false。您正在寻找的比较是if(grades[index]>= 90):,其中index是您正在查看的索引。

print()内的lettergrade()语句只会打印出成绩,因此请将每个print语句更改为'print('LETTER:'+ value)。

此外,方法lettergrade()只打印出一个东西,因此需要有一个循环来多次调用它,具有多个值:

for value in grades:
    lettergrade(value)

答案 2 :(得分:0)

你需要小心缩进,python是一种缩进的语言。

试试这个:

# define lettergrade function
def lettergrade(grades):
    if grades >=90:
        return('A')
    elif grades >=80 and grades <90:
        return('B')
    elif grades >=70 and grades <80:
        return('C')
    elif grades >=60 and grades <70:
        return('D')
    else:
        return('F')

grades = ['62','68','93','75','89','85']

for grade in grades: # iterate in grades    
    # call to lettergrade function -> lettergrade(grade)
    print(grade, ' equivalent ', lettergrade(grade)) 

答案 3 :(得分:0)

我在这里很困惑,如果你想要用户输入,为什么你想要一个值列表呢?您所要做的就是等待用户输入并检查输入所属的等级。请评论如果你想要一些改变!!

x = raw_input("Enter Score: ")
score = float(x)
try:
    if grades >=90:
        print('A', score)
    elif grades >=80 and grades <90:
        print('B', score)
    elif grades >=70 and grades <80:
        print('C', score)
    elif grades >=60 and grades <70:
        print('D', score)
    else:
        print('F', score)

except:
    print "Error"