在Python中创建主题和评分系统

时间:2019-03-09 12:08:39

标签: python list

我正在尝试为UNI项目创建一个评分系统。 我们被告知有3个全局列表:

Emner = ["INFO100","INFO104","INFO110","INFO150","INFO125"]
FagKoder = [["Informasjonsvitenskap","INF"],["Kognitiv vitenskap","KVT"] 
Karakterer=[["INFO100","C"],["INFO104","B"],["INFO110","E"]]

有了这些列表,我们就可以创建一种方法来查看具有Karakterer评分的科目(Emner),但是我们也应该能够查看没有评分的科目。它应该显示如下:

View of how to print subjects with and without grades 我们还应该能够在(Emner)中添加新主题,并在(Karakterer)中添加新成绩。所有这些都应如上图所示。

我一直在尝试使用各种不同的方法来执行此操作,但是我一直回到两个问题之一。即时通讯无法打印没有成绩的主题,或者如果我添加了新的主题(Emne),并且想要添加成绩(Karakter),我将其放置在正确的主题上,因为它只是保存在第一个没有成绩的人。

希望任何人都可以帮助我,在这里疯了!

我到目前为止的代码:

def emneliste():
global Emner
global Karakterer
emne,kar = zip(*Karakterer)
ans = [list(filter(None, i)) for i in itertools.zip_longest(Emner,kar)]

def LeggTilEmne():
global Karakterer
global Emner
nyttEmne = input("Skriv ny emnekode (4Bokstaver + 3 tall): ")
if nyttEmne not in Emner:
    while re.match('^[A-Å]{3,4}[0-9]{3}$',nyttEmne):
            Emner.append(nyttEmne)
            print(nyttEmne + " Er lagt til!")
            start()
            print("Feil format")
            LeggTilEmne()

else:
    print("Dette Emnet er allerede i listen din")
    start()

def SettKarakter():
global Karakterer
global Emner
VelgEmne = input("Hvilke emne? ")

Emne,Karakter = zip(*Karakterer)
if str(VelgEmne)  not in str(Emner):
    print("Dette faget er ikke i din liste")
    feil = input("om du heller ønsket å opprette fag trykk 2, ellers trykk enter ")
    if feil == str(2):
      LeggTilEmne()
    else:
      start()

else:
      if str(VelgEmne) in str(Karakterer):
        index = Karakterer.index([VelgEmne,"C"])
        Karakterer.pop(index)
        SettKar = input("Karakter? ")
        Emner.append([VelgEmne,SettKar])
        print("Karakter " + SettKar + " Er Lagt til i " + VelgEmne)
        start()
      else:
        SettKar = input("Karakter? ")
        if str(VelgEmne) in str(Emner):
          index = Emner.index(VelgEmne)
          print(index)
          Emner.pop(index)
          Emner.insert(index,[VelgEmne,SettKar])
          print("Karakter " + SettKar + " Er Lagt til i " + VelgEmne)
          start()
        else:
          print("Virker Ikke")
          start()

2 个答案:

答案 0 :(得分:1)

您可以改为使Karakterer为字典,以便您可以使用Emner运算符遍历Karakterer中的主题并有效地查找主题是否位于in中。 :

Karakterer = dict(Karakterer)
for subject in Emner:
    print(*([subject] + ([Karakterer[subject]] if subject in Karakterer else [])))

这将输出:

INFO100 C
INFO104 B
INFO110 E
INFO150
INFO125

答案 1 :(得分:1)

这是更新的GradeHandler类演示。我试图允许更新成绩,删除科目等:

void AddPageNo(string fileIn, string fileOut)
{
    byte[] bytes = File.ReadAllBytes(fileIn);
    Font blackFont = FontFactory.GetFont("Arial", 12, Font.NORMAL, BaseColor.BLACK);
    using (MemoryStream stream = new MemoryStream())
    {
        PdfReader reader = new PdfReader(bytes);
        using (PdfStamper stamper = new PdfStamper(reader, stream))
        {
            int pages = reader.NumberOfPages;
            for (int i = 1; i <= pages; i++)
            {
                ColumnText.ShowTextAligned(stamper.GetUnderContent(i), Element.ALIGN_RIGHT, new Phrase(i.ToString(), blackFont), 568f, 15f, 0);
            }
        }
        bytes = stream.ToArray();
    }
    File.WriteAllBytes(fileOut, bytes);
}