Wie kann ich in diesem Code eine maximale Nummer finden?

class student(object): def student(self): self.name=input("enter name:") self.stno=int(input("enter stno:")) self.score=int(input("enter score:")) def dis(self): print("name:",self.name,"stno:",self.stno,"score:",self.score) def stno(self): return self.stno def name(self): return self.name def score(self): return self.score y=[] j=0 while(j<3): a=student() a.student() y.append(a) j+=1 for st in y: st.dis() for b in y: max_v=b.score if max_v<b.score: max_v=b.score print(max,b.stno,b.score) 

Ich schreibe über Code, aber ich denke, es gibt ein Problem mit der Suche nach maximaler Anzahl unter Zahlen, wie ich diesen Code versuche und ich kann keine Lösung dafür finden. Haben Sie eine Meinung, diesen Teil des Codes zu verbessern. Danke vielmals

  • Plotten eines unregelmäßig beabstandeten RGB-Bildes in Python
  • Python matplotlib mehrere bars
  • Pandas Kumulative Summe mit aktueller Zeile als Bedingung
  • QWebview: Upload auf Youtube return error
  • Importieren von Python-Variablen eines Programms nach seiner Ausführung
  • Tkinter Checkbuttons innerhalb eines Text-Widgets und Scrollen
  • Neue Pandas Dataframe aus Meta Informationen der bestehenden DF
  • Python argparse: Standardwert oder angegebener Wert
  • 4 Solutions collect form web for “Wie kann ich in diesem Code eine maximale Nummer finden?”

    Ähnlich wie bei Rawings Antwort, aber anstelle eines Lambda kannst du operator.attrgetter()

     from operator import attgetter class ... # You class code remains unchanged y=[] j=0 while(j<3): a=student() a.student() y.append(a) j+=1 max_student = max(y, key=attrgetter('score')) print("Highest score:", max_student.name, max_student.score) 

    Produziert Ausgabe wie folgt:

     enter name:dan enter stno:3 enter score:3 enter name:emily enter stno:20 enter score:20 enter name:frank enter stno:1 enter score:1 Highest score: emily 20 
     for b in y: max = b.score if man < b.score: max = b.score 

    Sie ordnen max zu b.score , und in der nächsten Zeile überprüfen Sie, if man < b.score .

    1. Wenn dies Ihr aktueller Code ist, ist der man nicht überall definiert, also bekommst du einen NameError .

    2. Wenn dies nicht dein aktueller Code ist und nur ein Tippfehler und man ist max , und in deinem Code ist es if max < b.score dann das dann immer False , wie du gerade b.score zu max in der obigen Zeile zugewiesen b.score .

    So oder so, warum nimmst du nicht einfach die eingebaute max ?

     print(max(y, key=lambda student_obj:student_obj.score)) 

    Sie können die max Funktion mit einer benutzerdefinierten Tastenfunktion verwenden:

     b = max(y, key=lambda student: student.score) print(b.stno, b.score) 

    Die max für Schleife sollte so sein:

     # works only with non-negative numbers max_val = 0 for b in y: if max_val < b.score: max_val = b.score 

    Oder verwenden Sie die max Funktion als Rawing vorgeschlagen.

    – Bearbeitet als Jim vorgeschlagen

    Python ist die beste Programmiersprache der Welt.