使用Python进行大学作业的问题

时间:2016-01-06 13:16:16

标签: python

我和MSc的学生今年一直在做python代码,但没有任何经验。我想知道是否有人可以帮我解决这个问题,我已完成了一些部分。

Q6)

作业6 如果等级大于或等于以下百分比,则根据%(范围从0到100)进行分类: - 70第一; 60 Second Upper; 50秒下; 45第三; 40通过; 0失败。 从上面的数据创建一个字典,并使用它作为程序的一部分来评分标记,来自两个来源: - 1.在开发过程中,从硬编码的标记列表中顺序分级标记= [-1,0,1,49,60,71,100,101], 2.开发后,包括代码以反复请求测试标记,直到输入q或Q终止。 标记将被授予简明编码,该编码应该在最少使用比较测试的情况下有效运行。 保留功能以从最终代码中的上述两个来源获取输入,即在开发后不删除项目“1”。

到目前为止我的解决方案看起来像这样:

hardcoded_lst = [-1,0,1,49,60,71,100,101]
grade_input=int(input('What grade?')
input_lst= []
while grade_input != 
     input_lst.append(grade_input)
     grade_input=int(input('What grade?')
print(input_lst)

我需要为值创建一个字典,但目前还没有。

我很感激任何帮助,基本代码,因为我不是很先进。

由于

3 个答案:

答案 0 :(得分:1)

创建字典不是那么难,它就像创建列表一样简单,你已经完成了

列表

  mylist = []
  #for dictionary
  mydictionary = {}

将项目添加到词典

  mylist.append(value)
  mydictionary["fail"] = 50 

迭代列表

 for item in mylist:
     print item

在字典中迭代

 for key,value in mydictionary.iteritem():
     print key,value

我希望这可以帮助你,在iteritem拼写等方面可能存在错误,你可以谷歌它,但这就是它如何正常完成

这里有更新的东西

 mydictionary = {}

 marks = 0

 mydictionary[(0,45)] = "Fail"
 mydictionary[(46,59)] = "Lower"
 mydictionary[(60,69)] = "Second Lower"
 mydictionary[(70,100)] = "First"

 marks = 63

 for key,value in mydictionary.iteritems():
     if marks >= key[0] and marks <= key[1]:
         print value

给定的代码可以通过这种方式实现,但

答案 1 :(得分:0)

以下程序应该按照您的要求进行。有几行用#字符注释掉。如果您希望查看debug函数调用中引用的变量的值,则可以取消注释这些行。请花些时间研究代码,以便了解它的工作原理和原因。

import pprint
import sys

RANGE = range(0, 101)
GRADE = {70: 'First', 60: 'Second Upper',
         50: 'Second Lower', 45: 'Third',
         40: 'Pass', 0: 'Fail'}
MARKS = -1, 0, 1, 49, 60, 71, 100, 101


def main():
    """Grade hardcoded marks and grade marks entered by the user."""
    # debug('MARKS')
    grade_all(MARKS)
    grade_all(get_marks())
    print('Goodbye!')


def grade_all(marks):
    """Take an iterable of marks and grade each one individually."""
    for mark in marks:
        # debug('mark')
        if mark in RANGE:
            print(mark, 'gets a grade of', grade_one(mark))
        else:
            print(mark, 'is not a valid mark')


def grade_one(mark):
    """Find the correct grade for a mark while checking for errors."""
    # debug('RANGE')
    if mark in RANGE:
        for score, grade in sorted(GRADE.items(), reverse=True):
            if mark >= score:
                return grade
    raise ValueError(mark)


def get_marks():
    """Create a generator yielding marks until the user is finished."""
    while True:
        try:
            text = input('Mark: ')
        except EOFError:
            sys.exit()
        else:
            # debug('text')
            if text.upper() == 'Q':
                break
            try:
                mark = round(float(text))
            except ValueError:
                print('Please enter a mark')
            else:
                # debug('mark')
                if mark in RANGE:
                    yield mark
                else:
                    print('Marks must be in', RANGE)


def debug(name):
    """Take the name of a variable and report its current status."""
    frame, (head, *tail) = sys._getframe(1), name.split('.')
    for scope, space in ('local', frame.f_locals), ('global', frame.f_globals):
        if head in space:
            value = space[head]
            break
    else:
        raise NameError('name {!r} is not defined'.format(head))
    for attr in tail:
        value = getattr(value, attr)
    print('{} {} {} = {}'.format(
        scope, type(value).__name__, name, pprint.pformat(value)), flush=True)

if __name__ == '__main__':
    main()

答案 2 :(得分:-1)

您需要使用成绩值作为键创建字典,并根据输入使用输入填充键,或将其拒绝为无效。也许是这样的:

if input>=70:
  grade[first]=input
elif input>=60 and input<70:
  grade[secondupper]=input



elif input<0 or input>100:
  print 'invalid grade!'

如果每个等级有多个值,请考虑使用列表将值读入,然后在填充时将相应的dictionarty值设置为列表。