Zahlenreihen

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.
python_tipper
User
Beiträge: 17
Registriert: Mittwoch 6. November 2019, 19:24

...der range startet bei 100 200 500 600 und endet bei 150 250 550 650.

möchte von allen 4 bereichen alle zahlenwerte hochrechnen und diese auf ihren abstand zueinander untersuchen.

also welcher abstand hat beispielsweise 112 213 zu 554 634? und dann diesen wert immer ausgeben wenn er = 200 ist.

mein problem ist konkret, die 4 zahlenwerte bis zu ihrem maximum hochzuzählen und in jeder möglichen kombination die formel für die abstandsberechnung anzuwenden...

habe mich schon mit while versucht, es gelingt mir auch eine einzelne zahlenreihe zu generieren. aber eben nicht alle 4. die weiter oben als tipp angegebene range funktion ergibt auch eine schöne zahlenreihe, aber eben nicht für alle 4 werte, bzw. weiss ich nicht wie ich das anstellen soll.

habe mich auch mit if und for versucht, aber es will einfach nichts werden. das kann doch eigentlich gar nicht so schwierig sein?
python_tipper
User
Beiträge: 17
Registriert: Mittwoch 6. November 2019, 19:24

...natürlich kann ich zb. viele textfiles generieren die alle werte von 100 200 500 600 bis 150 200 500 600 und so weiter ausgeben und diese dann wieder einlesen und die formel anwenden. das gibt aber sehr viele files und ist eigentlich kompletter blödsinn.

es muss doch einen simplen weg geben diese zahlenreihen zu generieren für alle möglichen kombinationen?
python_tipper
User
Beiträge: 17
Registriert: Mittwoch 6. November 2019, 19:24

oder ganz anders ausgedrückt:

wie kann man mit den zahlen 1, 2, 3, 4

alle möglichen kombnationen erzeugen?

1,2
1,3
1,4
2,3
2,4
3,4


?
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Was hilft es, immer wieder die selbe Frage zu stellen (zu der ich Dir schon die Antwort gegeben habe), statt endlich den Grund zu nennen, warum Du das willst. Warum nur ganze Zahlen? Warum gerade dieser Bereich?
Benutzeravatar
__blackjack__
User
Beiträge: 14050
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde auch noch mal das zuvor schon von jemand erwähnten Papier und Bleistift ansprechen wollen, denn wenn man sich das mal aufzeichnet und nachmisst kann man ganz schnell die Frage beantworten wie viele Punkte da überhaupt heraus kommen können. Tipp: Das sind, äh, sehr wenige. 😜
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
python_tipper
User
Beiträge: 17
Registriert: Mittwoch 6. November 2019, 19:24

nun konnte ich die fragestellung lösen :-)

Code: Alles auswählen

import math
start_a=100
end_a=150
start_b=200
end_b=250
start_c=500
end_c=550
start_d=600
end_d=650

for a in range(start_a,end_a):
    for b in range(start_b,end_b):
        for c in range(start_c,end_c):
            for d in range(start_d,end_d):

                res=math.sqrt((((a-c)**2)+((b-d)**2)))
                res_round=round(res)
           
                if res_round==200:
                    print(res_round, a, b, c, d)
frage an euch, jetzt wo ihr seht was ich eigentlich machen möchte, ist das programmiertechnisch sauber oder kann man das auch eleganter notieren?

danke für die feedbacks oben, hat mir geholfen :-)
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Du bist anscheinend nicht in der Lage, die Frage nach dem Warum zu beantworten.
Nicht nur, dass Du drei Schleifen zu viel hast, und das deshalb maximal ineffizient gelöst ist, liefert das Programm immer noch 0 Lösungen.
python_tipper
User
Beiträge: 17
Registriert: Mittwoch 6. November 2019, 19:24

das "warum" habe ich doch mehrmals beantwortet... ich möchte ALLE x finden, welche einen bestimmten abstand zu einem koordinaten-paar haben...

wie wwürdest du denn die effizienz herstellen? genau das interessiert mich doch. und wie willst du die drei deiner ansicht nach unnötigen schleifen eliminieren? dann fehlen ja wieder werte, die ich berücksichtigen möchte.

das programm liefert aktuell lösungen. die "echten" zahlen die ich berechnen möchte sind 6 stellig. aktuell schreibe ich ein text-file mit den ermittelten werten, was allerdings dauert. deshalb interessiert mich deine effiziente lösung sehr!
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Deine Darstellung Deines angeblichen Problems ändert sich mit jedem Deiner Posts. Zu raten was Du eigentlich willst, ist müßig.
python_tipper
User
Beiträge: 17
Registriert: Mittwoch 6. November 2019, 19:24

kann schon sein dass das so aussieht. ich weiss doch selber nicht wie das problem zu lösen ist :-) so habe ich immer wieder neue ansätze und ideen in die fragestellung eingebaut.

schlussendlich geht es lediglich darum, aus einem koordinatensystem in einem bestimmten range alle werte auszulesen und in eine liste zu schreiben, welche denselben abstand voneinander haben...

und das möglichst effizient. mein code oben funktioniert soweit, ist aber sehr langsam. freue mich sehr über konkreten input auf meine obigen fragen.
ich als nicht-programmierer lerne gerne dazu.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Werte in eine Liste zu schreiben, ist wohl kaum das Ziel. Solange Du nicht in der Lage bist, Dein wirkliches Problem zu beschreiben, wirst Du auch keine zufriedenstellende Lösung finden.
Benutzeravatar
__blackjack__
User
Beiträge: 14050
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@python_tipper: Tja, du weisst selber nicht wie das Problem zu lösen ist, wir wissen nicht einmal *welches* Problem überhaupt gelöst werden soll. Also das eigentliche Problem in Worten erklärt mit einem *warum* etwas mit welchen Eingabedaten gemacht werden soll und was mit den Ausgabedaten gemacht werden soll.

Zu klären wäre auch ob `round()` das macht was Du erwartest, oder ob Du eventuell `int()` haben willst oder eine eigene Rundungsfunktion. Überrascht Dich folgendes, und ist das okay so?

Code: Alles auswählen

In [102]: round(0.5)                                                            
Out[102]: 0

In [103]: round(1.5)                                                            
Out[103]: 2

In [104]: round(2.5)                                                            
Out[104]: 2

In [105]: round(3.5)                                                            
Out[105]: 4

In [106]: round(4.5)                                                            
Out[106]: 4

In [107]: round(5.5)                                                            
Out[107]: 6

In [108]: round(6.5)                                                            
Out[108]: 6
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten