Man hört immer mal die Spekulation, es gäbe eine Gegenerde, die wir, weil sie immer genau hinter der Sonne läge, nie zu Gesicht bekommen würden.
Gibt es astromechanische Gründe, warum dies nicht so sein kann.
Mir fiele da ein. Da die Bahn eine Elipse ist, und nach Kepler der Planet am Perihel schneller ist, als am Aphel, sind die 180° zwischen Erde und angenommener Gegenerde im Jahreslauf nicht durchgängig gegeben. Wenn die Abweichung größer als der Teil der Strecke, den die 0,5° des scheinbaren Sonnendurchmessers von der Erdenbahn abdecken, müßte die Gegenerde partiell aus dem Sonnenschatten heraustreten. Kann das mal jemand berechnen. (angenommen, Gegenerde hat dieselben Daten, wie die Erde).
Mein Durchratterer funktioniert! (Jedenfalls in Spyder) Ich gebe zu, es ist kein "schöner" Code, aber ich bin auch kein Designer! Er soll funktionieren und von meinem Python Niveau verstanden werden. Das sind meine beiden Prämissen.
Python
from openpyxl import Workbook
from sympy.ntheoryimport isprime
import numpy as np
from sympy import sieve
from sympy import primepi
frommathimport sqrt
fromcollectionsimport Counter
#DEKLARATIONSBLOCK
wb = Workbook()
anzahl1=0
anzahl=0
gesanzahl=0
anzahlkaskaden=3
zä0=zä1=zä2=0
nr=0
probelist=[1,2,3,4,5]
langlist=[]
liste0=[]
liste1=[]
liste2=[]
liste=[]
ZS=[]
ZSS=[]
#FUNKTIONSBLOCK
def ermittel_trigonal(x):
zahl=0
y=x+1
for i inrange(1,y):
zahl=zahl+i
return zahl
def bau_kaskaden(x,anzahlkaskaden):
kaskade=[]
w=0
for i inrange(0,x,1):
kaskade.append(1)#Hier werden die Stellen der Normkaskade eingetragen)
w=w+1
for y inrange(0,w,1):
kaskade.append(2)# Eintrag der Zwischenräume
kaskade.append(1)
for b inrange(1,ermittel_trigonal(anzahlkaskaden)+1-len(kaskade),1): #Ermittlung der einzufügenden Zeichen nach größter kaskadenänge berechnet.
kaskade.append(0)
return(kaskade)
def move_liste(x):
y=0
y = x.pop()# entfernt das letzte Glied der Liste und nennt es y
x.insert(0,y)# hier schiebt er das letzte Glied (y) der Liste an die erste (0.) Stelle
In diesem Programm hängt alles von der Variablen "anzahlkaskaden" ab. Ihr könnt es laufen lassen, müßt aber vorher den Ablageort der Datei anpassen.
Die Performance erhöht sich natürlich, wenn man die ganzen Prints für die IDE abschaltet. Ich möchte das Programm ja noch automatisiert haben. Immer wo 3 Sachen sind, müssen soviele hin, wie anzahlkaskaden sagt. Ich habe Angst mich zu verheddern. Immerhin sind bei Anzahlkaskaden 8 und Schrittweite 1 schon über 2 Milliarden Durchläufe zu machen. Da ist es auch unsinnig, dies noch nach Excel reinzudrücken. Ich baue dann noch Filter, zähle mir das und das, und lasse es ausgeben.
Dann brauche ich unbedingt noch die Vorgabe Schrittweite. Da soll in def-move die Schrittweite mit übergeben werden und dies hat auch Auswirkungen auf den Startzustand, so daß der Startzustand bei Schrittweite 3 logischerweise ein anderer ist, als bei Schrittweite 1, wie jetzt eingestellt.
Un dann brauch ich noch ein Arraywandelfeature, der, wenn sich die Matrix im Arrayzustand befindet Austauschungen vornimmt. z.B. in der Weise, hänge an alle Werte in der 2. Zeile eine Null dran, oder alle 2-en zu 1, alle 1-en zu 0 und alle Nullen zu 7 oder ähnliches.
Vllt kann mal jemand hier so ein Bild posten, wo zu sehen ist, wie die Module ineinanderhaken und die Variablen abgefragt werden, ich hab sowas noch nicht gesehen, und weiss auch nicht, wie das heißt. (kann also nicht googeln) Das, damit ich beim nächsten schwierigeren Programm das mal vorher zu Papier bring!
Das er in Excel keine Zahlen ausgibt, sondern die entsprechenden Zellen färbt, hab ich noch nicht hingekriegt, bin aber am Arbeiten ....
Wenn man was nach Excel schreibt, geht das unter Implementation von obenpyxll so:
Python
ws.append([zä0," ",l_s0])
Wobei ein Komma von Excel als neue Zelle interpretiert wird. (CSV-Typ)
In einer Python-Liste sind die Werte Komma getrennt. zB. hier:
Python
[0,0,0,0,0,0,0]
Bisher habe ich das so gemacht, daß ich meine Liste in eine String-Liste umgewandelt habe und die Liste als String in eine Zelle gepackt habe. Für bestimmte Zwecke ist das Okay, wenn es so aussieht:
Wenn man aber in Excel weiterrechnen will, braucht man eine Zelle pro Listenwert.
0. Zielvorstellung:
Ich möchte es aber so haben: die Liste [1,2,3,4,5] soll so aussehen:
Ich hab folgendes probiert:
1.
Python
ws.append([zä2,langlist])
Ergebnis:
File "/Users/opt/anaconda3/lib/python3.7/site-packages/openpyxl/cell/cell.py", line 222,in _bind_value
raiseValueError("Cannot convert {0!r} to Excel".format(value))ValueError: Cannot convert [1,0,0,0,0,0,1,2,1,0,0,0,1,2,1,2,2,1] to Excel
2.
ws.append([zä2,for i in langlist:])
Ergebnis:
File "/Users/Desktop/Pyfiles/Übungsdateien/DurchrattererEX.py", line 116
ws.append([zä2,for i in langlist:])
^
SyntaxError: invalid syntax
3.
ws.append([zä2,for i inlist(langlist):])
Ergebnis:
File "/Users/ottoreincke/Desktop/Pyfiles/Übungsdateien/DurchrattererEX.py", line 115
ws.append([zä2,for i inlist(langlist):])
^
SyntaxError: invalid syntax
4.
ws.append(zä2,langlist)
Ergebnis:
TypeError: append() takes 2 positional arguments but 3 were given
Ende der Ideen: hab auch schon viel gegoogelt! What can I do? Vielleicht weiss ja jemand eine Lambda-Funktion, die das leistet? Oder jemand kann programmtechnisch vermuten, warum das nicht geht. Und mir einen TIPP geben! Ob es mit set geht. Aber dann ginge die Ordnung verloren.... und die braucht man gewöhnlich.
2021-02-18 14:55 - Buri in Beitrag No. 5 schreibt:
Hi Bekell,
was ist eigentlich der Sinn und Zweck deines Programms? Das ist mir nicht ersichtlich.
Gruß Buri
Hallo Buri,
ich wollte mal kucken, was hier so passiert ....
Wundberbar, Nuramon, jetzt mach ich noch die "nicht-Vorkommenden" und die ausschließlich Einfachen, also die entweder unten oder oben vorkommen, die oben und unten vorkommenden!
2021-02-18 14:15 - DerEinfaeltige in Beitrag No. 1 schreibt:
Ich verstehe zwar nicht, was du tust, doch der beschriebene Fehler tritt nicht auf. Ich verstehe auch nicht wo er das tun könnte, da du nirgends Tupel erzeugst.
Ohne das komplette Programm und die tatsächliche Fehlermeldung lässt sich das nicht nachvollziehen.
OK Numpy rausgenommen.
Was meinst Du mit "das komplette Programm"? Ich hab es doch komplett gepostet? Die Fehlermeldung hatte ich auch kopiert! Bin übrigens in Jupyter-lab
Es funktioniert. Nur wenn ich in der Funktion überlappung die zweite Zeile (Zeile 36) freischalte, dann kommt: Tupel - Objekt is not callable.
Es ist dieselbe Funktion, die Du mir zugesendet ist im andern Thread. Dort funktioniert sie, ist aber nicht in einer Funktion, sondern im Hauptmenue. Und was meint er mit callable, die beiden Listen sind doch schon oben in der Funktion "überlappung", denn dort rufe ich ja das Print auf?
Nachdem ich 6 Stunden probiert habe, dieses einfach erscheinende Schama umzusetzen, bitte ich um angepasste Hilfe. Es geht darum diese einfach erscheinende Schema umzusetzen.
Mein Code macht die linke Kaskade mit den gelben Feldern zur Normkaskade. Die Spalten daneben heißen Gastkaskaden. Es geht nun darum, die Nummern der gefärbten Kästchen in die Liste 2 zu kriegen. Liste 1 (Normkaskade) stimmt. Bei den Gastkaskaden stimmt jeweils die erste Zahl, sie muß mit der am linken Rand übereinstimmen, die restlichen sind jeweils um 1,2,3 ... verschoben. Ich krieg's nicht hin ...🤯
Ganz großen Dank, die Dekomprimierung hilft mir sehr weiter! Ich komme später drauf zurück!
Python
schnittmenge =set(liste1)&set(liste2)
gibt sowas zurück: {65, 51}
Ist das jetzt ein set oder ein Dic. Ich tippe auf ersteres. Ist dann ein Set nur ein Dictionary ohne Values?
Ich will jetzt die Ergebnisse von Schnittmenge in einem Pott vereinen und dafür sorgen daß von jeder Zahl nur eine drin ist. Ich würd das so machen, daß ich probiere:
schnittmenge1 = schnittmenge1.union(schnittmenge)
print(schnittmenge)
Python
schnittmenge1 = schnittmenge1.union(schnittmenge)
print(schnittmenge)
aber, wenn ich so initiiere:
schnittmenge1=0
sagt er: 'tuple' object has no attribute 'union'
wenn ich so initiere
schnittmenge1={}
sagt er:
AttributeError: 'dict' object has no attribute 'union'
Wenn ich so initiiere:
schnittmenge1=[]
'list' object has no attribute 'union'
und wenn ich so initiiere
schnittmenge1=()
sagt er wieder: 'tuple' object has no attribute 'union'
Was soll ich mit Schnittmenge1 machen? Wenn schnittmenge mit geschweiften Klammer ausgegeben wird, ist es doch keine Liste!
2021-02-16 11:27 - DerEinfaeltige in Beitrag No. 5 schreibt:
Geh dein Programm Schritt für Schritt durch.
Dann sollte die Frage sich von selbst beantworten.
...verstehe, wenn die einzige Zahl aus schnittemenge raus ist, kann sie nicht nochmal rausgenommen werden. Danke!
Erklär mir doch mal bitte, warum er "schnittmenge" in P3 und P4 nicht wiedergibt, und warum er schnittmenge.pop() nicht als Indexbeschreibung akzeptiert (in P4), m aber wohl? Du machst das auch immer, die Funktionen ineinander verschachteln.
2021-02-16 10:36 - DerEinfaeltige in Beitrag No. 3 schreibt:
int(schnittmenge)
Du versuchst hier eine Menge beliebiger (hashbarer) Objekte in eine Ganzzahl umzuwandeln.
Hallo, gibt es ein Funktion, die dien Durchschnitt* zweier Listen in Python ausgibt?
*mit Durchschnitt meine ich nicht das arithm. Mittel der werte, sondern die werte, die beide Listen gemeinsam haben. Wenn ich Durchschnitt google, kommen immer Vorschläge zum arithmetisches Mittel.
Jetzt versuch ich sie geordnet zu entnehmen, zu drehen, und zurückzupacken.
Achtung: Es sieht wieder chaotisch aus, aber ich verstehe den Code halbwegs.
Python
def ermittel_trigonal(x):
zahl=0
y=x+1
for i inrange(1,y):
zahl=zahl+i
return zahl
v=1# Vorschub
s=1#schrittweite
anzahlkaskaden=4
liste=[]
langliste=[]
kaskade=[]
def kaskadenhülle(x,anzahlkaskaden):
kaskadenhülle=[]
for i inrange(0,ermittel_trigonal(anzahlkaskaden),1): #hier baut er Länge mit Nullen gefüllt
kaskadenhülle.append(0)
return(kaskadenhülle)
def bau_kaskaden(x,anzahlkaskaden):
kaskade=[]
w=0
for i inrange(0,x,1):
kaskade.append(1)#Hier werden die Stellen der Normkaskade eingetragen)
w=w+1
for y inrange(0,w,1):
kaskade.append(2)# Eintrag der Zwischenräume
kaskade.append(1)
return(kaskade)
def eintrag_kaskade(x,a,v,s):
b=len(a)
nr=0
st=0#Stellenhochsetzer bestimmt wo die Zahl abgelegt wird. wenn immer auf 0, invertiert die zahl