Seite 1 von 2

ziemlich billige anfängerfrage

Verfasst: Samstag 8. Juli 2006, 12:28
von krass
Ich habe mir das Buch "Python für Kids" von Gregor Lingl gekauft !
Ich kann das Buch jedem anfänger empfehlen :D

Ich habe ein kleines problem, sogar ein ziemlich lächerliches.

Code: Alles auswählen

print "Ein toller Tag heute"
benutzername = raw_input("Wie heisst du ?")
print "Toll das du hier bist", benutzername

geld = raw_input("Wie viel verdienst du im Monat")
geld = float(geld)
print "Wow das sind ja", geld * 12
Zu meinem problem:

Ich möchte das die ausgabe von zeile 7 so aussieht:

"wow das sind ja "8000 Euro im Jahr und nicht "wow das sind ja 8000"





[/b]

Verfasst: Samstag 8. Juli 2006, 12:41
von Biggy
So?

Code: Alles auswählen

print "Ein toller Tag heute!"
benutzername = raw_input("Wie heisst du? ")
print "Toll, dass du hier bist", benutzername,"!"

geld = raw_input("Wie viel verdienst du im Monat? ")
geld = float(geld)
print "Wow das sind ja", geld * 12, "Euro im Jahr!"

Verfasst: Samstag 8. Juli 2006, 12:45
von jAN
entweder so:

Code: Alles auswählen

print "Wow das sind ja", geld*12, "Euro im Jahr"
oder so:

Code: Alles auswählen

print "Wow das sind ja %s Euro im Jahr"%(geld*12)

Verfasst: Samstag 8. Juli 2006, 13:29
von krass

Code: Alles auswählen

print "Wow das sind ja", geld*12, "Euro im Jahr"
hatte ich auch probiert aber kam eine fehler meldung !! Aber ich hatte hinter der 12 kein komma gesetzt

thx

Verfasst: Samstag 8. Juli 2006, 14:50
von SigMA
ich hätte auch noch ne Version anzubieten ;)

Code: Alles auswählen

print " Wow das sind ja"+str(geld*12)+" Euro im Jahr"
feel free
SigMA

Verfasst: Samstag 8. Juli 2006, 14:52
von newone_XXV.
jAN hat geschrieben:entweder so:

Code: Alles auswählen

print "Wow das sind ja %s Euro im Jahr"%(geld*12)
Ja, aber es geht auch, da es ja nur 1 Objekt ist das ersetzt wird. Ansonsten halt die Klammern und ein Kommer zwischen die Werte:

Code: Alles auswählen

print 'Wow das sind ja %s Euro im Jahr' % geld * 12
Oder auch ein %d für Zahlen. Aber ich nehme auch immer %s. Kann man weniger Fehler machen. ;

Verfasst: Samstag 8. Juli 2006, 16:27
von Leonidas
newone_XXV. hat geschrieben:
jAN hat geschrieben:

Code: Alles auswählen

print "Wow das sind ja %s Euro im Jahr"%(geld*12)

Code: Alles auswählen

print 'Wow das sind ja %s Euro im Jahr' % geld * 12
Das ist das selbe, da jANs "Tupel" gar keine Tupel ist. Wenn es eine sein sollte, müsste es dann "(geld * 12,)" heißen, also mit einem Komma. So wird (geld * 12) einfach zu geld * 12 evalutiert.

Verfasst: Samstag 8. Juli 2006, 20:59
von BlackJack
Ich hätte Klammern darum gesetzt weil ich jetzt nicht aus dem Kopf gewusst hätte, dass Multiplikation stärker bindet als Modulo. Sind ja beides "Punkt-Rechnung".

Verfasst: Samstag 8. Juli 2006, 21:50
von jAN
wenn man sich nicht sicher ist, falsch sind sie auf jeden fall nicht...

Verfasst: Samstag 8. Juli 2006, 22:09
von beewee
@Blackjack: % ist in dem Fall kein Modulo, das wäre ja, um den Rest einer Division zu bekommen

BeeWee

Verfasst: Sonntag 9. Juli 2006, 22:27
von murph
last but not least:

Code: Alles auswählen

print "Wow das sind ja",geld*12,"Euro im Jahr"

Verfasst: Sonntag 9. Juli 2006, 23:18
von Python 47
Du solltest mal Beiträge gründlicher durchlesen, das selbe hatte Jan schon gepostet. :lol:

Verfasst: Montag 10. Juli 2006, 09:30
von BlackJack
beewee hat geschrieben:@Blackjack: % ist in dem Fall kein Modulo, das wäre ja, um den Rest einer Division zu bekommen
Es ist der Modulo-Operator der dazu missbraucht wird. Man kann frei implementieren wie ein Objekt darauf reagieren soll, aber die Bindungsstärke der Operatoren bleiben immer gleich -- die sind fest von Python vorgegeben.

Verfasst: Montag 10. Juli 2006, 14:43
von murph
@ Python Master 47:
sry., habe ich nicht gesehen.

Verfasst: Mittwoch 12. Juli 2006, 14:59
von krass
ähm *hüstel* bevor ich nen neuen Thread aufmach......

Ich hock da jetzt schon über ne stunde dran *schäm*

Code: Alles auswählen



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")

durchschnitt = note1 + note2 + note3  / 3

print "Der Notendurchschnitt von", Name, "in", Fach, "ist", durchschnitt



fehler meldung:

unsupported operand type(s) for /: 'str' and 'int'


zuerst lief das programm aber es hat die 3 die zahlen ausgegeben die ich eingab zb: 614 anstatt 11



WICHTIG: Bitte keine Lösung posten !! nur einen klitzekleinen typ

Verfasst: Mittwoch 12. Juli 2006, 15:05
von N17R0
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

Verfasst: Mittwoch 12. Juli 2006, 15:23
von krass
moment hab grad im buch gelesen das man geeignete Strings in zahlen umwandeln kann...

ich glaub ich hab den fehler gefunden

Verfasst: Mittwoch 12. Juli 2006, 16:16
von krass
ich habs geschafft *freu* !! Es funktioniert !! aber laut meinem Buch hätten 6 Variablen gelangt......

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 :?:

Verfasst: Mittwoch 12. Juli 2006, 16:26
von ws
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

Verfasst: Mittwoch 12. Juli 2006, 16:59
von N17R0

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