Seite 1 von 1
Variable erhöhen
Verfasst: Dienstag 9. November 2010, 18:39
von CodeMaster
Guten Tag.
Ich bastel schon die ganze Zeit an ein paar sachen, bei denen man seinen Score erhöhen kann.
so
unter random import erstell ich ja die variable Score mit dem wert 0
und in einer function ( def ...(): ) will ich diese erhöhen, klappt aber nicht
also so hier:
aber es wird immer ein Error ausgeschossen, woran kann das liegen?
MfG CodeMaster
Re: Variable erhöhen
Verfasst: Dienstag 9. November 2010, 18:43
von nomnom
CodeMaster hat geschrieben:Guten Tag.
Ich bastel schon die ganze Zeit an ein paar sachen, bei denen man seinen Score erhöhen kann.
so
[…]
also so hier:
aber es wird immer ein Error ausgeschossen, woran kann das liegen?

Das können wir doch nicht wissen, musst schon schreiben welcher Error!
Edit: Quellcode wird dazu ebenfalls benötigt (bzw. ist er sehr hilfreich)
Ansonsten:
Ist schöner, IMHO.
Edit #2:
Oder gleich das hier:

[/i]
Re: Variable erhöhen
Verfasst: Dienstag 9. November 2010, 19:04
von Xynon1
Ich würde mal vermuten das er Score nicht erhöhen kann da diese in der Funktion gar nicht bekannt ist.
Du solltest diese als Parameter übergeben und mit einem return wieder zurück schreiben.
Zudem variablen namen sollten klein sein.
So etwa zum Beispiel:
Code: Alles auswählen
score = 0
def score_up(score):
trys = 3
return score + 30 / trys
score = score_up(score)
Re: Variable erhöhen
Verfasst: Dienstag 9. November 2010, 19:22
von CodeMaster
Ok danke, es lag an den parametern und dem return

Danke !
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 06:56
von snafu
Wenn man etwas wie einen global veränderbaren Namen möchte, kann man das recht elegant über ein Klassenattribut lösen:
Code: Alles auswählen
class Score(object):
def __init__(self, startval=0):
self.score = startval
def score_up(self, tries=3):
self.score += 30 / tries
Natürlich lässt sich an den Benennungen noch feilen. Außerdem sollte die 30, wenn das ein fester Wert ist, auch als Konstante gebunden werden und nicht einfach so als Zahl im Quelltext stehen.
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 07:15
von Hyperion
snafu hat geschrieben:Wenn man etwas wie einen global veränderbaren Namen möchte, kann man das recht elegant über ein Klassenattribut lösen:
Du zeigst aber eher ein "Instanzattribut", oder nicht? Unter Klassenattribut würde ich das verstehen, in Kombi mit einer "globalen" Hochzählmethode:
Code: Alles auswählen
class Score(object):
score = 0
@classmethod
def score_up(self):
self.score += 1
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 08:49
von achilles_69
Edit #2:
Oder gleich das hier:

[/i]
Sorry, aber es gilt "Punkt- vor Strichrechnung":
a + a/b != 2a/b
So ist's richtig:
a + a / b == a(1 + 1/b)
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 09:02
von funkheld
Ihr pytho/pyromanen-techniker.
Was ist es den nun "klasse" oder "instanz"...
Gruss
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 09:37
von Xynon1
Klasse a:
Instanz b:
@achilles_69
Danke für den Hinweis

- vergisst man leicht, deswegen sollte man auch Klammern, auch wenn es nicht nötig ist.
also aus 15 + 15/tries, sollte man besser 15 + (15 / tries) machen.
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 10:10
von EyDu
funkheld hat geschrieben:Ihr pytho/pyromanen-techniker.
Was ist es den nun "klasse" oder "instanz"...

Das erinnert mich an einen älteren Programmierer, welcher mir, vor etwa drei Jahren, total begeistert von diesem "neuen" OOP-Konzept erzählt hat, in das er sich unbedingt mal einarbeiten will
Xynon1 hat geschrieben:Danke für den Hinweis

- vergisst man leicht, deswegen sollte man auch Klammern, auch wenn es nicht nötig ist.
Wenn du es so leicht vergisst, dann solltest du besser daran arbeiten, dass du es behältst und nicht Klammern setzen

Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 10:16
von Xynon1
naja, bei dem geht es vieleicht noch ohne, aber habe mal sowas 3 * 3 + 2**4 ** 3 * 12 + 2**4*3
(leicht übertrieben

)
Da noch ohne Klammer alles zu behalten finde ich Blödsinn, was wird von python in den PEPs vorgegeben ?
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 14:58
von /me
Xynon1 hat geschrieben:Da noch ohne Klammer alles zu behalten finde ich Blödsinn, was wird von python in den PEPs vorgegeben ?
"readability counts"
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 15:03
von Xynon1
Ok, ich spezifizier die Frage vieleicht etwas.
Wann sollten bei Mathemathischen Berechnung Klammern gesetzt werden ?
Gibt es dort direkt ein PEP dafür, oder gilt tatsächlich nur die allgemeine Regel ?
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 15:14
von /me
Xynon1 hat geschrieben:Ok, ich spezifizier die Frage vieleicht etwas.
Wann sollten bei Mathemathischen Berechnung Klammern gesetzt werden ?
Gibt es dort direkt ein PEP dafür, oder gilt tatsächlich nur die allgemeine Regel ?
Müssen musst du nur, wenn die Berechnung das erfordert.
Für mich gilt allerdings gesunder Menschenverstand. Ich stelle mir vor, dass ein anderer Softwareentwickler (oder ich selber nach 6 Monaten) auf den Code schaut. Wenn man dann nicht sofort sehen kann was da wie zusammengerechnet wird, dann sollten passende Klammern verwendet werden.
Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 15:20
von Xynon1
/me hat geschrieben:Müssen musst du nur, wenn die Berechnung das erfordert.
Deswegen schrieb ich ja "sollten" und nicht "müssen" - hach, deutsch ist schön.
Ok, ich entnehme dem mal das es bei mehr als drei Zahlen angebracht ist

Re: Variable erhöhen
Verfasst: Mittwoch 10. November 2010, 18:17
von snafu
Hyperion hat geschrieben:Du zeigst aber eher ein "Instanzattribut", oder nicht?
Ja, das meinte ich auch. Hab mich im Ausdruck vertan.
Re: Variable erhöhen
Verfasst: Donnerstag 11. November 2010, 10:36
von EyDu
Xynon1 hat geschrieben:Ok, ich entnehme dem mal das es bei mehr als drei Zahlen angebracht ist

Es ist dann angebracht, wenn es die Lesbarkeit verbessert. In den meisten Fällen reichen bereits einfache Leerzeichen:
Code: Alles auswählen
(x*cos(alpha) - y*sin(alpha), x*sin(alpha) + y*cos(alpha)
Etwas unüberischtlich wird es mit exponenten, dort helfen Klammern ein wenig. Oftmal ist es aber eh günstig, wenn meine eine Berechnung in mehrere Teile trennt.