mathematische Frage von Anfänger

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du solltest noch ein wenig zusammenfassen:

Code: Alles auswählen

FORMAT = '%d %d %d'

def circlecreate(r, x, y):                                          
    out_lis3=[]
   
    dur = duration (9.6)                                              
    for y1 in range(0, r):
        x1 = int(round((r*r - y1*y1)**(0.5)))
        for q in range (-x1, x1):
            out_lis3.append(FORMAT % (dur, q+x, y+y1))

            if y1:
                out_lis3.append(FORMAT % (dur, q+x, y-y1))

    return out_lis3
Auch sind deine Namen alle sehr seltsam. Du kürzt zum Beispiel zu viel ab (warum out_lis und nicht out_list) oder bentutz nichtssagende Namen. Es wäre interessant, was in out_lis3 drin ist und nicht, dass es sich um eine Liste handelt, die irgend ein ergebnis liefert. Und warum die 3 am Ende von out_lis3 oder ab die Einsen am Ende von x1 und y1?

Ich habe mir das Problem nicht genauer angeschaut, aber ist dir klar, dass range(m, n) von m bis n-1 reicht?
Das Leben ist wie ein Tennisball.
nudelauflauf
User
Beiträge: 9
Registriert: Donnerstag 10. Januar 2013, 16:02

Die 3 ist da weil es mein dritter Versuch ist, ist aber inzwischen weg. Die 1en hinter x und y sind da, weil ich hab x und y übergebe und den Kreis damit später wenn ich die Liste erstelle ja dorthin verschiebe wo ich den Kreis gern hätte.
Deine Zusammenfassung macht nicht so viel Sinn wenn ich das richtig verstehe. Ich hab die Unterscheidung drin, damit ich wenn ich die Punkte mit -x1, x1, = r nicht doppelt aufnehme. Wenn x,x1 kleiner als r sind muss ich immer +y1 und -y1 in meine Liste aufnehmen um den ganzen Kreis zu bekommen.
BlackJack

(Etwas zu spät, aber ich schick's doch noch ab. :-))

@nudelauflauf: Die Namen sind immer noch verbesserungswürdig. `out_lis3`? Das `t` wäre zuviel gewesen, aber eine unötige `3` ging dann doch noch? `dur` würde ich auch als `duration` ausschreiben und der Funktion einen passenderen Namen geben. Funktionen werden üblicherweise mit Tätigkeiten benannt und `duration` ist Keine.

Code: Alles auswählen

from math import sqrt


def create_circle(radius, center_x, center_y):
    result = list()
    duration = calclulate_duration(9.6)
    for y in xrange(0, radius):
        width = int(round(sqrt(radius**2 - y**2)))
        for x in xrange(-width + center_x, width + center_x):
            result.append('%d %d %d' % (duration, x, center_y + y))
            if y:
                result.append('%d %d %d' % (duration, x, center_y - y))
    return result
PS: Die Zusammenfassung macht Sinn und sie macht letztlich genau das selbe wie Dein Code. 0 ist in Python als Wahheitswert „Falsch” und jede andere Zahl ist „Wahr”.
nudelauflauf
User
Beiträge: 9
Registriert: Donnerstag 10. Januar 2013, 16:02

Ahhhh, jetzt verstehe ich. Das mit dem besser benennen macht natürlich Sinn. Zwar weiß man wahrscheinlich wenn man es selbst geschrieben hat bestens Bescheid, aber für Aussenstehende ist das mit Sicherheit besser zu durchschauen später Mal.


Thx
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

nudelauflauf hat geschrieben:Ahhhh, jetzt verstehe ich. Das mit dem besser benennen macht natürlich Sinn. Zwar weiß man wahrscheinlich wenn man es selbst geschrieben hat bestens Bescheid, aber für Aussenstehende ist das mit Sicherheit besser zu durchschauen später Mal.


Thx
Schau dir deinen Code in einem Jahr nochmal an ;)
Antworten