...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?
Zahlenreihen
-
- 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?
es muss doch einen simplen weg geben diese zahlenreihen zu generieren für alle möglichen kombinationen?
-
- 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
?
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
?
- __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
-
- User
- Beiträge: 17
- Registriert: Mittwoch 6. November 2019, 19:24
nun konnte ich die fragestellung lösen 
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

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)
danke für die feedbacks oben, hat mir geholfen

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.
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.
-
- 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!
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!
-
- 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.

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.
- __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?
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