Antworte auf:  Spider begrenzt Listing? von Bekell
Forum:  Programmieren, moderiert von: matph

[Zur Forum-Gliederung] [Wie man Fragen beantwortet] [Themenstart einblenden]

  Alle registrierten Mitglieder können Mitteilungen schreiben.
Benutzername:
Passwort:
Nachricht-Icon:                   
                  
              
Nachricht:


 
 


Input assistance tools (JavaScript): [Link extern intern] [MathML?] [$$?]
[fed-area] [LaTeX-inline] [LaTeX-display] [Tikz] [hide-area][show-area] [Source code [num.]][?]
 Show Preview      Write using fedgeo formula editor or Latex.

Smilies for your message:
😃 😄 😁 🙂 🙃 😉 🤗 🤫 🤔 🙄 😴 🤒 😎 😮 😲 😂
🙁 😖 😒 😐 😡 👌 👍 👎 🤢 🤧 🥵 🥶 😵 🤯 😛 😷
Optionen: Deaktiviere HTML in dieser Nachricht
Deaktiviere MATHML in dieser Nachricht. Wenn Dein Text $-Zeichen enthält, die nicht LaTeX-Formeln begrenzen.
Deaktiviere Smilies in dieser Nachricht
Zeige die Signatur (Kann in 'Mein Profil' editiert werden.)
    [Abbrechen]
 
Beachte bitte die [Forumregeln]


Themenübersicht
Bekell
Aktiv
Dabei seit: 05.09.2008
Mitteilungen: 2108
Herkunft:
 Beitrag No.10, eingetragen 2020-08-23 08:00    [Diesen Beitrag zitieren]

2020-08-23 07:55 - thureduehrsen in Beitrag No. 9 schreibt:
2020-08-22 22:08 - Bekell in Beitrag No. 8 schreibt:
Problem gelöst!

Und zwar wie, in drei Teufels Namen?

mfg
thureduehrsen

Wie Tactac oben gesagt hatte, ich hatte wohl zuvor eine andere Version, und da waren die Präferences noch andere oder ich habe sie nicht gefunden. Jetzt hab ich es plötzlich gefunden. Ich hatte bei Editor zuerst nur die Highlight Occurrences hochgestellt. Man muß es aber bei Konsole den Buffer hochstellen.


thureduehrsen
Senior
Dabei seit: 13.11.2007
Mitteilungen: 873
Herkunft: Kiel, Deutschland
 Beitrag No.9, eingetragen 2020-08-23 07:55    [Diesen Beitrag zitieren]

2020-08-22 22:08 - Bekell in Beitrag No. 8 schreibt:
Problem gelöst!

Und zwar wie, in drei Teufels Namen?

mfg
thureduehrsen


Bekell
Aktiv
Dabei seit: 05.09.2008
Mitteilungen: 2108
Herkunft:
 Beitrag No.8, eingetragen 2020-08-22 22:08    [Diesen Beitrag zitieren]

2020-08-21 13:58 - Bekell in Beitrag No. 3 schreibt:
2020-08-20 21:25 - tactac in Beitrag No. 1 schreibt:
Im Hauptmenü: Werkzeuge >> Voreinstellungen.
In dem sich öffnenden Fenster links "IPython-Konsole" auswählen.
Rechts Tab "Anzeige" wählen.
Ganz unten, (irreführender Weise unter "Quellcode") kann man da eine Puffergröße einstellen, die auf 500 voreingestellt ist.

Hallo Tactac, ich hab das Problem noch nicht gelöst..., hatte aber an der Stelle schon die 500 auf 2600 gesetzt.

[Die Antwort wurde nach Beitrag No.1 begonnen.]

Problem gelöst!


Scynja
Aktiv
Dabei seit: 23.02.2011
Mitteilungen: 353
Herkunft:
 Beitrag No.7, eingetragen 2020-08-22 16:21    [Diesen Beitrag zitieren]
Python
    zahlsucher.write(i, 3, primteiler_a(a))

Hover auf "a" sagt, dass a=4999.


Guckt man in die Funktion rein...

teiler_1=[]
return teiler_1

Stellt man eine Vermutung auf: Man kann in die Spalte keine Arrays schreiben.

Googelt man "python array to string"
Erster Treffer: (man muss ihn nicht einmal öffnen)
"As we’ve told above that Python Join() function can easily convert a list to string so let’s first check out its syntax. Python Join() Syntax. The syntax of join() is as follows: string_token.join( iterable ) Parameters: iterable => It could be a list of strings, characters, and numbers string_token => It is also a string such as a space ' ' or comma "," etc."

Also probiert man diese Syntax aus:
Python
    zahlsucher.write(i, 3, ', '.join(primteiler_a(a)))

und startet das Programm neu. Davor sollte man den print-Befehl auskommentieren, weil der einfach nur Zeit verschwendet.


Kommt die Exception: "expected str instance, int found"

Erster Treffer: "Can also use .join(map(str, value_list))"

Ändern und noch einmal neustarten...

Nächste Exception: "Unexpected data type <class 'int'>
  File "C:\Projekte\python\testLogging.py", line 94, in <module>
    zahlsucher.write(i, 5, primteiler_b(b))"

Also den genialen Code klauen und noch einmal starten.

Exception: "Exception has occurred: AttributeError
'_io.TextIOWrapper' object has no attribute 'save'
  File "C:\Projekte\python\testLogging.py", line 97, in <module>
    textzahlen.save("textzahlen.rtf")"

Das ist etwas schwieriger, google liefert keine Treffer. Nachdem ich ins Dateisystem geguckt habe, vermute ich, dass sofort geflusht / speichert wird.

Also das auskommentiert und das Ergebnis evaluiert.

rtf

 pp
Excel
Nr	Zahl	a	PrTa	b	PrTb
1	4999	4999	4999	4997	263, 19

Übrigens ist "def primteiler_a(zahl_a):" ein schlechter Methodenname. Der Methodenname sollte eigentlich sagen, was die Methode macht. (Ohne, dass man die Methode lesen muss.) Wenn ich die Methode richtig überflogen habe, dann macht sie 1 zu 1 das gleiche wie primteile_b. Das löst man in der Regel so, dass man der Funktion 2 Parameter übergibt. Man schreibt eine Methode nicht doppelt auf. Wenn man das konsequent befolgt, dann würde man sich mindestens eine Exception sparen.
Und auch wenn es kaum vorstellbar ist: Die meisten Nutzer des MP müssen unter Umständen auch nebenbei Geld verdienen und sich um die Famile kümmern.


DerEinfaeltige
Senior
Dabei seit: 11.02.2015
Mitteilungen: 2514
Herkunft:
 Beitrag No.6, eingetragen 2020-08-22 12:31    [Diesen Beitrag zitieren]

2020-08-21 15:14 - Bekell in Beitrag No. 5 schreibt:
... wenn von den hier aktiven Leuten weiterbringende Hinweise kämen, daß ich die Programm-zum-Laufen-bringen-Zeit reduzieren kann .....


Das macht man, indem man sich genau überlegt:
1. Was genau soll das Programm machen?
2. Wie unterteile ich das Problem in kleine, einfach zu lösende Teilprobleme?

Für jedes Teilproblem implementiert man dann die passende Funktion, Prozedur oder Klasse und testet diese an einfachen Beispielen, die man mit Papier und Stift nachrechnen kann.

Du schreibt immer wieder, dass du "Mathematik" betreiben willst.
Dazu gehört in erster Instanz, ein Problem präzise zu beschreiben.
Wenn man das erst einmal halbwegs beherrscht, tut man sich auch in vielen Gebieten der angewandten Mathematik, nicht zuletzt dem Programmieren, wesentlich leichter.


Zum Programmieren gehören weiterhin rudimentäre Englischkenntnisse.
Man sollte bspw. im Kontext der Mathematik zumindest wissen, wie Menge, Tupel, Liste und die zugehörigen Operationen auf Englisch heißen.
Wenn man die nicht hat, sollte man daran arbeiten oder es ganz sein lassen.

Immer wieder zu fragen, wie man einen "Spitzstift" in den "Raumbegrenzer" bekommt und sich anschließen darüber aufzuregen, dass man für "Rundspitzstifte" komplett anderes Werkzeug braucht, nervt die Gesprächspartner irgendwann.
Da sollte der angehende Heimwerker sich über "Nagel", "Wand", "Schraube", "Hammer" und "Schraubendreher" auch mal selbst informieren.


Bekell
Aktiv
Dabei seit: 05.09.2008
Mitteilungen: 2108
Herkunft:
 Beitrag No.5, eingetragen 2020-08-21 15:14    [Diesen Beitrag zitieren]

2020-08-21 01:24 - Delastelle in Beitrag No. 2 schreibt:
Hallo Bekell!

Falls es geht würde ich ja die Ausgabe in eine Datei umleiten.
So etwa:
programm > aaa.txt
(Dies funktioniert oft.)

Danke Delastelle und Einfältiger,
Das Programm läuft auf der Konsole, es werde aber, wie bemerkt, nur die letzten 500 Zeilen ausgegeben. Um an den erst ranzukommen, habe ich nun versucht, den Output
a: in eine Datei umzulenken und
b: in eine Excel Tabelle zu schreiben. Letzteres hat beim Vorprogramm noch geklappt.
Meine Dateien bleiben aber beide leer.

Noch ein Problem: Er gibt etwas Bedenkliches: Es hat mit den Programmaufruffunktion in Write zu tun. Dort gibt es ein Datentypproblem, von dem die Konsole wohl nichts weiss. Ich bekomm es aber nicht gedeutet: "raise Exception ("Unexpected data type %r" % type(data))" wenn ich auf rich_text_helper klicke, werd ich nicht schlau....
python
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. from sympy.ntheory import isprime
  4. from sympy import sieve
  5. from sympy import primepi
  6. from math import sqrt
  7. import xlwt
  8. import contextlib
  9.  
  10. zahl=9996 # Zahl mit Endziffer 6 eingeben
  11. nr=0
  12. nr1=0
  13. liste_1=[]
  14. liste_2=[]
  15. list1=[]
  16. list2=[]
  17.  
  18. def primteiler_a(zahl_a):
  19. j=1
  20. teiler_a=[]
  21. teiler_1=[]
  22. while j <= (zahl_a)/2:
  23. if zahl_a%j==0:
  24. teiler_a=zahl_a//j
  25. if teiler_a%2>0 and isprime(teiler_a):
  26. teiler_1.append(teiler_a)
  27. # print(nr,"zahl",zahl,"if: i:",i,"j:",j,"Teilerb",Teilerb,"Teiler",Teiler)
  28. j=j+1
  29. else:
  30.  
  31. #Teiler.append(Teilerb)
  32. #print(nr,"zahl",zahl,"else: i:",i,"j:",j,"Teilerb",Teilerb,"Teiler",Teiler)
  33. j=j+1
  34. return teiler_1
  35. def primteiler_b(zahl_b):
  36. j=1
  37. teiler_b=[]
  38. teiler_2=[]
  39. while j <= (zahl_b)/2:
  40. if zahl_b%j==0:
  41. teiler_b=zahl_b//j
  42. if teiler_b%2>0 and isprime(teiler_b):
  43. teiler_2.append(teiler_b)
  44. # print(nr,"zahl",zahl,"if: i:",i,"j:",j,"Teilerb",Teilerb,"Teiler",Teiler)
  45. j=j+1
  46. else:
  47.  
  48. #teiler_2.append(teiler_b)
  49. #print(nr,"zahl",zahl_b,"else: i:",i,"j:",j,"teiler_b",teiler_b,"teiler_2",teiler_2)
  50. j=j+1
  51. return teiler_2
  52.  
  53. for i in range(3,int(zahl/2)+1,2):
  54. a=zahl-i
  55. b=i
  56. nr=nr+1
  57. liste_1=primteiler_a(a)
  58. liste_2=primteiler_b(b)
  59. l_1=set(liste_1)
  60. l_2=set(liste_2)
  61. l_3=l_1.intersection(l_2)
  62. #if len(liste_1)>0 and len(liste_2)>0: # and len(l_3)==0:
  63. # nr1=nr1+1
  64. print("Nr:",nr,"Ohne gem PT:",a,l_1,b,l_2,l_3,a/b)
  65. # else:
  66. # pass
  67. #print("Nr:",nr,"Mit gem PT:",a,liste_1,b,liste_2,l_3)
  68.  
  69. book = xlwt.Workbook(encoding="utf-8")
  70. zahlsucher = book.add_sheet("zahlsucher","cell_overwrite_ok=True")
  71.  
  72.  
  73.  
  74. zahlsucher.write(0, 0, "Nr")
  75. zahlsucher.write(0, 1, "Zahl")
  76. zahlsucher.write(0, 2, "a")
  77. zahlsucher.write(0, 3, "PrTa")
  78. zahlsucher.write(0, 4, "b")
  79. zahlsucher.write(0, 5, "PrTb")
  80. #zahlsucher.write(0, 6, "a//b")
  81.  
  82. i=0
  83.  
  84. for n in liste_1:
  85. i = i+1
  86. textzahlen = open('textzahlen.rtf','w')
  87. textzahlen.write("\a\n pp")
  88. textzahlen.close()
  89. zahlsucher.write(i, 0, i)
  90. zahlsucher.write(i, 1, n)
  91. zahlsucher.write(i, 2, a)
  92. zahlsucher.write(i, 3, primteiler_a(a))
  93. zahlsucher.write(i, 4, b)
  94. zahlsucher.write(i, 5, primteiler_b(b))
  95. # zahlsucher.write(i, 6, a//b)
  96. book.save("zahlsucher.xls")
  97. textzahlen.save("textzahlen.rtf")

Das Problem ist, ich bin kein Student und kein Programmierer, sondern muß nebenbei Geld verdienen, und will eigentlich Mathe machen, und muß mich auch noch um die ständig wachsende Familie kümmern, und es wäre sehr nett, wenn von den hier aktiven Leuten weiterbringende Hinweise kämen, daß ich die Programm-zum-Laufen-bringen-Zeit reduzieren kann .....


[Die Antwort wurde nach Beitrag No.3 begonnen.]


DerEinfaeltige
Senior
Dabei seit: 11.02.2015
Mitteilungen: 2514
Herkunft:
 Beitrag No.4, eingetragen 2020-08-21 14:47    [Diesen Beitrag zitieren]

2020-08-21 01:24 - Delastelle in Beitrag No. 2 schreibt:
Hallo Bekell!

Falls es geht würde ich ja die Ausgabe in eine Datei umleiten.
So etwa:
programm > aaa.txt
(Dies funktioniert oft.)

Viele Grüße
Ronald


Noch einfacher wäre es natürlich, die Daten direkt in eine Datei zu schreiben. Dann kann man sie für die weitere Verwendung auch problemlos wieder auslesen.


Bekell
Aktiv
Dabei seit: 05.09.2008
Mitteilungen: 2108
Herkunft:
 Beitrag No.3, eingetragen 2020-08-21 13:58    [Diesen Beitrag zitieren]

2020-08-20 21:25 - tactac in Beitrag No. 1 schreibt:
Im Hauptmenü: Werkzeuge >> Voreinstellungen.
In dem sich öffnenden Fenster links "IPython-Konsole" auswählen.
Rechts Tab "Anzeige" wählen.
Ganz unten, (irreführender Weise unter "Quellcode") kann man da eine Puffergröße einstellen, die auf 500 voreingestellt ist.

Hallo Tactac, ich hab das Problem noch nicht gelöst..., hatte aber an der Stelle schon die 500 auf 2600 gesetzt.

[Die Antwort wurde nach Beitrag No.1 begonnen.]


Delastelle
Senior
Dabei seit: 17.11.2006
Mitteilungen: 1546
Herkunft:
 Beitrag No.2, eingetragen 2020-08-21 01:24    [Diesen Beitrag zitieren]

Hallo Bekell!

Falls es geht würde ich ja die Ausgabe in eine Datei umleiten.
So etwa:
programm > aaa.txt
(Dies funktioniert oft.)

Viele Grüße
Ronald


tactac
Senior
Dabei seit: 15.10.2014
Mitteilungen: 1882
Herkunft:
 Beitrag No.1, eingetragen 2020-08-20 21:25    [Diesen Beitrag zitieren]

Im Hauptmenü: Werkzeuge >> Voreinstellungen.
In dem sich öffnenden Fenster links "IPython-Konsole" auswählen.
Rechts Tab "Anzeige" wählen.
Ganz unten, (irreführender Weise unter "Quellcode") kann man da eine Puffergröße einstellen, die auf 500 voreingestellt ist.


Bekell
Aktiv
Dabei seit: 05.09.2008
Mitteilungen: 2108
Herkunft:
 Themenstart: 2020-08-20 20:57    [Diesen Beitrag zitieren]

Hallo, ich hab die Vermutung, daß Spider das Lifting begrenzt. Ich hätte jetzt 2500 Zahlenpaare kriegen sollen, er zeigt mir in der Konsole nur die letzten 500 Das hatte ich in C++ nie. Ich vermute irgendeine Voreinstellung, habe aber nichts gefunden. Kann jemand, der Spider kennt, mir sagen, wo ich da was verändern kann.  

Danke für den Tip!


 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]