hmm... raw_input ist für Strings, für Zahlenwerte darfste nur input nehmen und schonma um nem fehler vorwegzunehmen, punktrechnung geht vor strichrechnung
//edit:
aso, und zur erklärung von 614. du hast die werte als strings, also text eingelesen., d.h. aus "6"+"1"+"4" wird "614" und die fehlermeldung sagt dir nun, dass er den text "614" nicht durch 3 teilen kann, 1. weil es den operator / bei string meiner meinung nach nicht gibt und 2. weil er jetzt text und zahlen miteinander mischen müsste
ziemlich billige anfängerfrage
ich habs geschafft *freu* !! Es funktioniert !! aber laut meinem Buch hätten 6 Variablen gelangt......
was hätte man besser machen können ? ich glaube 3 zeilen hätte man sich irgendwie sparen können
Code: Alles auswählen
# Autor: Ich
# Datum: 12.07.2006
# durschnittsberechnung.py
print "Programm zur Notendurchschnittsberechnung"
Name = raw_input("Wie heisst du ?")
Fach = raw_input("In welchen Fach willst du berechnen ?")
print "Noten fuer"
note1 = raw_input("die erste Klassenarbeit")
note2 = raw_input("die zweite Klassenarbeit")
note3 = raw_input("die dritte Klassenarbeit")
### damit ich nicht durcheinander komm :-)
note1 = float(note1)
note2 = float(note2)
note3 = float(note3)
durchschnitt = (note1 + note2 + note3) /3
durchschnitt = float(durchschnitt)
print "Der Notendurchschnitt von", Name, "in", Fach, "ist", durchschnitt
was hätte man besser machen können ? ich glaube 3 zeilen hätte man sich irgendwie sparen können
raw_input() gibt die einen String zurück. Wenn Du Strings mit "+" addierst, werden die einfach hintereinandergehängt.
Deshalb wird aus "6" + "1" + "4"
der String "614".
Dann versuchst Du, "614" durch 3 zu teilen. Eine Division String/Zahl ist aber nicht definiert, deshalb die Fehlermeldung. Wenn Du Zahlen über die Tastatur einlesen willst, musst Du die erhaltenen Strings konvertieren, z.B.
meineZahl = int(raw_input())
wenn Du ganze Zahlen erhalten willst.
Gruss
Wolfgang
Deshalb wird aus "6" + "1" + "4"
der String "614".
Dann versuchst Du, "614" durch 3 zu teilen. Eine Division String/Zahl ist aber nicht definiert, deshalb die Fehlermeldung. Wenn Du Zahlen über die Tastatur einlesen willst, musst Du die erhaltenen Strings konvertieren, z.B.
meineZahl = int(raw_input())
wenn Du ganze Zahlen erhalten willst.
Gruss
Wolfgang
Code: Alles auswählen
# Autor: Ich
# Datum: 12.07.2006
# durschnittsberechnung.py
print "Programm zur Notendurchschnittsberechnung"
Name = raw_input("Wie heisst du ?")
Fach = raw_input("In welchen Fach willst du berechnen ?")
print "Noten fuer"
note1 = input("die erste Klassenarbeit")
note2 = input("die zweite Klassenarbeit")
note3 = input("die dritte Klassenarbeit")
durchschnitt = (note1 + note2 + note3) /3.0
print "Der Notendurchschnitt von ", Name, " in ", Fach, " ist ", durchschnitt
Man bekommt auch eine Lösung mit 5 hin. Eine Verbesserung wäre es zum Beispiel die Noten in einer Liste zusammen zu fassen und nicht drei einzelne Namen zu verwenden. Dann kann man den Quelltext auch recht einfach unabhängiger von der Anzahl der Klassenarbeiten/Noten machen. Im folgenden muss man nur an einer Stelle etwas ändern um mehr oder weniger Klassenarbeiten in die Berechnung einzubeziehen.krass hat geschrieben:ich habs geschafft *freu* !! Es funktioniert !! aber laut meinem Buch hätten 6 Variablen gelangt......
Code: Alles auswählen
print 'Notendurchschnittberechnung'
name = raw_input('Dein Name? ')
subject = raw_input('Welches Fach? ')
grades = list()
print 'Note fuer...'
for number in ('erste', 'zweite', 'dritte'):
grades.append(float(raw_input('die %s Klassenarbeit: ' % number)))
average = sum(grades) / len(grades)
print 'Der Notendurchschnitt von %s in %s ist %.1f' % (name, subject, average)
- newone_XXV.
- User
- Beiträge: 50
- Registriert: Dienstag 20. Juni 2006, 15:03
- Wohnort: Direkt vor meinem PC
- Kontaktdaten:
Du musst versuchen aus dem String einen anderen Datentyp zu machen, der dividieren kann. Probier mal was mit der Eingabe aus, ob Du da was umstellen kannst.
PS: Du wolltest ja nur einen kleinen Tip.... Hoffe mal, das Dir der nicht zu groß ist....
PS: Du wolltest ja nur einen kleinen Tip.... Hoffe mal, das Dir der nicht zu groß ist....
hi newone_XXV
habs weiter oben schonmal gepostet
Hab die ergebnisse von den strings in gleitkomma zahlen verwandelt, etwas "exotisch" aber nach niederschmetternden erfahrungen mit anderen programmiersprachen eine mega Erfolgsergebniss für mich !!!
habs weiter oben schonmal gepostet
Du musst versuchen aus dem String einen anderen Datentyp zu machen
Code: Alles auswählen
# Autor: Ich
# Datum: 12.07.2006
# durschnittsberechnung.py
print "Programm zur Notendurchschnittsberechnung"
Name = raw_input("Wie heisst du ?")
Fach = raw_input("In welchen Fach willst du berechnen ?")
print "Noten fuer"
note1 = raw_input("die erste Klassenarbeit")
note2 = raw_input("die zweite Klassenarbeit")
note3 = raw_input("die dritte Klassenarbeit")
### damit ich nicht durcheinander komm :-)
note1 = float(note1)
note2 = float(note2)
note3 = float(note3)
durchschnitt = (note1 + note2 + note3) /3
durchschnitt = float(durchschnitt)
print "Der Notendurchschnitt von", Name, "in", Fach, "ist", durchschnitt
[/code=py]
Hi Krass,
eine Sache noch zu deinem Code(Ich gehe nicht genauer auf die Umständlichkeit etc. ein):
du machst 27 und 28 einen Fehler. Ich geb dir nur mal einen kleinen Denkanstos *g*
falsch:
richtig:
Einfach mal ausprobieren. Du kommst, denk ich mal von alleine drauf.
eine Sache noch zu deinem Code(Ich gehe nicht genauer auf die Umständlichkeit etc. ein):
du machst 27 und 28 einen Fehler. Ich geb dir nur mal einen kleinen Denkanstos *g*
falsch:
Code: Alles auswählen
x=6/5
float(x)
Code: Alles auswählen
x=6/5.0
print x
mfg
Thomas :-)
Thomas :-)
Sicher, dass es ein Fehler ist, und nicht nur einfach eine überflüssige Zeile 28? Denn eine Addition aus Floats ergibt ein Float, unddu machst 27 und 28 einen Fehler
Code: Alles auswählen
x=3.0/6
print x # ergibt 0.5
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
man sollte einen thread zu Ende lesen....