Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: Kommata und Farbe
Autor
Schule Python: Kommata und Farbe
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2617
  Themenstart: 2021-10-28

\sourceon Python \numberson import math import numpy from sympy.ntheory import isprime from colorama import Fore, Back, Style x=int(210/2) nr=0 for y in range(x,0,-2): c=x a=c-(y+1) b=c+y+1 nr+=1 if isprime(a): ix=a print(nr,"=",f'{Fore.RED}ix{Style.RESET_ALL}',"+",b,"=",a+b) else: print(nr,"=",a,"+",b,"=",a+b,) \sourceoff Was mach ich falsch? Ich hab schon a durch ix ersetzt. Wenn ich die beiden Hochkommata ' nach f und der geschweiften Parenthese entferne, blockt alles... Eigentlich müssten sie weg, da ix ja kein Kommentar sondern eine Variable ist. Ziel: ist a prim, soll es rot sein in der Ausgabe... (Notebook)


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2948
  Beitrag No.1, eingetragen 2021-10-28

In einem f-String gibt es zwei Bestandteile: * unverändert zu lesende Zeichen * Variablen und andere Ausdrücke Letztere musst du in {...} einschließen: \sourceon python print(f"{nr} = {Fore.RED}{ix}{Style.RESET_ALL} + {b} = {a+b}") \sourceoff --zippy


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2617
  Beitrag No.2, vom Themenstarter, eingetragen 2021-10-28

Danke, Zippy


   Profil
__blackjack__
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.09.2021
Mitteilungen: 81
  Beitrag No.3, eingetragen 2021-10-29

@Bekell Anmerkungen zum Quelltext: Statt ``int(a/b)`` könnte man auch die Ganzzahldivision verwenden: ``a // b``. Ich persönlich mag negative Schrittweiten bei `range()` nicht wirklich, weil ich da zu viel Nachdenken muss wie das Ergebnis am Endpunkt aussieht, also was da noch drin ist und was nicht. Ich verwende da lieber ein aufsteigendes `range()` und `reversed()`. `c` und `ix` sind überflüssig, weil es einfach nur umbenannte Werte sind, die es schon unter anderen Namen gibt. Wenn man in einer Schleife einen laufenden Zähler zusätzlich benötingt, gibt es die `enumerate()`-Funktion. Dann muss man da nicht vor und in der Schleife Code für schreiben. ``if`` und ``else`` enhalten fast den gleichen Code. Der tatsächliche Unterschied zwischen den beiden Zweigen ist ja nur ob der Wert von `a` eingefärbt werden soll oder nicht. \sourceon Python \numberson from colorama import Fore, Style from sympy.ntheory import isprime x = 210 // 2 for nr, y in enumerate(reversed(range(1, x + 1, 2)), 1): a = x - (y + 1) b = x + y + 1 a_text = f"{Fore.RED}{a}{Style.RESET_ALL}" if isprime(a) else str(a) print(f"{nr}: {a_text} + {b} = {a + b}") \sourceoff


   Profil
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 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]