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

Code: Alles auswählen

#-*- coding:utf8 -*-
from random import*

Score = 0
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:

Code: Alles auswählen

Score = Score + (15 + 15/Versuche)
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

Code: Alles auswählen

#-*- coding:utf8 -*-
from random import*

Score = 0
[…]
also so hier:

Code: Alles auswählen

Score = Score + (15 + 15/Versuche)
aber es wird immer ein Error ausgeschossen, woran kann das liegen?
:twisted: 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:

Code: Alles auswählen

Score += 15*2/Versuche
Ist schöner, IMHO.
Edit #2:
Oder gleich das hier:

Code: Alles auswählen

Score += 30/Versuche
;)[/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:

Code: Alles auswählen

Score += 30/Versuche
;)[/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"... :D

Gruss

Re: Variable erhöhen

Verfasst: Mittwoch 10. November 2010, 09:37
von Xynon1
Klasse a:

Code: Alles auswählen

class a(object):
    pass
Instanz b:

Code: Alles auswählen

b = a()
@achilles_69
Danke für den Hinweis :D - 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"... :D
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 :D
Xynon1 hat geschrieben:Danke für den Hinweis :D - 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 :mrgreen: )
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. :mrgreen:

Ok, ich entnehme dem mal das es bei mehr als drei Zahlen angebracht ist :D

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 :D
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.