Liebe Python-Freunde,
diesen Donnerstag, den 17.8.2009 (übermorgen!) findet wieder ein
PUB/DZUG-Treffen (Python und Zope User Group in Berlin) statt.
Ort und Zeit sind wie immer: 19 Uhr, im newthinking store [1].
Anschließend wird das Treffen wieder im Restaurant Tucholsky [2]
fortgesetzt. Zur Planung der Restaurantkapazitäten bitte ich euch
ein Häckchen in der Doodle-Umfrage [3] zu machen, wenn ihr an-
schließend noch mitkommen wollt.
Das Programm muss dieses mal etwas kurzfristig …
[View More]arrangiert werden.
Wer also schon immer mal einen kurzen Vortrag halten wollte, z.B.
zu einem der Themen im Python-Wiki [4] und diesen womöglich schon
in der Schublade hat, der (oder die) ist herzlich dazu eingeladen.
Dann bitte bei mir vorher kurz per E-Mail ankündigen!
Ansonsten werden einige, die auf der DZUG-Tagung letzte Woche in
München waren, locker darüber berichten. Dabei ging es unter an-
derem über die kommenden Versionen 4 und 5 von Plone. Sehr wahr-
scheinlich wird Veit dazu Prospekte verteilen.
Eine weitere Idee besteht darin, locker Buchempfehlungen zu den
Themen Python/Zope/Plone auszutauschen, was man am besten macht,
indem man das jeweilige Buch auch zum Treffen mitnimmt. Ich werde
am Donnerstag das Buch "Python for Linux and Unix System Admini-
stration" [5] dabei haben.
Liebe Grüße und bis Donnerstag,
Dinu
PS: Ich übernehme mit Veit bis auf Weiteres die Organisation die-
ser Treffen von Stephan, der das bisher vorbildlich gemacht hat,
aber nun seinen väterlichen Aufgaben höhere Priorität geben wird.
Nochmals vielen Dank, Stephan - ich hoffe, Du kannst trotzdem
noch vorbeischauen!
[1] newthinking store, Tucholskystr. 48, 10117 Berlin,
http://newthinking-store.de
[2] Restaurant Tucholsky, Torstraße 189, 10115 Berlin,
http://www.restauration-tucholsky.de
[3] http://doodle.com/rwqizz6ewxk6iscw
[4] http://wiki.python.de/User%20Group%20Berlin
[5] http://www.oreilly.de/catalog/9780596515829
......................................................................
Follow me on Twitter: http://twitter.com/dinugherman
[View Less]
Stefan Behnel <python-de(a)behnel.de> wrote:
> Hallo nochmal,
Hallo ebenfalls,
>
> es hilft doch durchaus, nicht nur Code zu lesen, sondern auch den Text, den
> du dazu geschrieben hast. :)
>
> ruppert(a)hs-worms.de schrieb am 22.06.20 um 12:36:
>> das unten befindliche Programm funktioniert mit f-String-Formatierung
>> nicht so, wie ich das erwarte. Wenn ich das F-String-Format, das ich
>> haben möchte, zuerst als Striing formatiere (s), sieht es …
[View More]richtig aus.
>
> Du meinst wohl diese Zeilen:
>
> f = "{{:0{:1d}d}} {{:0{:1d}b}} {{:0{:1d}b}}".format(dl,fw,fw)
>
> # s wird in der for-Schleife unten nicht interpretiert,
> # sondern als string ausgegeben:
>
> s = 'f"' + str(f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}") + '"'
>
> bzw. wenn ich mir nur den f-string ansehe:
>
> >>> dl = 5
> >>> fw = 6
> >>> f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}"
> '{i:05d} {gray:06b} {bin:06b}'
>
> Für mich sieht das soweit erstmal korrekt aus. Ich vermute, du möchtest
> etwas machen, was mit .format() funktioniert aber mit f-strings nicht:
Ja, genau das.
> den
> Formatstring programmatisch erzeugen statt hinzuschreiben, stimmt das?
Ja, genau.
> f-strings sind ein festes Sprachkonstrukt, das direkt in der Sprache (bzw.
> im Parser) auf String-Literalen ausgewertet wird, daher ist es nicht
> möglich, f-strings zu generieren. (Ok, du könntest eval() verwenden, aber
> das ist recht langsam und auch fehleranfällig ??? tu's lieber nicht.)
ok, danke für den Tip. Dann denke ich, den Versuch, meine Formatierung
mit f-Strings hinzukriegen, kann ich aufgeben.
> ".format()" dagegen wird dynamisch auf beliebigen Strings ausgewertet,
> nicht nur auf Literalen.
>
> Du kannst .format() und f-strings aber auch mischen:
>
> formatiere_ausgabe = \
> f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}".format
>
> print(formatiere_ausgabe(i=i, gray=gray, bin=bin))
Ja, darauf wird es hinauslaufen: f-strings verwenden, wo die
funktionieren und .format()-Formatierung wo f-Strings nicht
funktionieren.
>
> Hier ist "formatiere_ausgabe" die ".format" String-Methode, angewendet auf
> meinen Formatierungsstring, den ich per f-string erzeugt habe. Wenn ich
> diese Methode dann aufrufe, und meine drei Argumente übergebe, dann wird
> meine Ausgabe entsprechend dem Formatierungsstring zusammengestellt.
>
> Stefan
Viele Grüße
M.Ruppert
--
ruppert(a)hs-worms.de
[View Less]
Hallo,
das unten befindliche Programm funktioniert mit f-String-Formatierung
nicht so, wie ich das erwarte. Wenn ich das F-String-Format, das ich
haben möchte, zuerst als Striing formatiere (s), sieht es richtig aus.
Aber bei print(s) wird nicht das in s steckende f-string-Format
interpretiert, sondern einfach nur s als String ausgegeben.
Das Programm soll übrigens Binärzahlen in Gray umwandeln und zurück.
Mit der .format-Methode funktioniert das auch einwandfrei.
Aufruf des Programms in …
[View More]der kürzesten Weise:
grayCode.py 2 1
2 ist der kürzeste Graycode und 1 schaltet in den debug-Modus
Vielen Dank
Martin Ruppert
#!/usr/bin/python3
import sys
if(len(sys.argv)<2):
a=sys.argv[0].split('/')
a=a[len(a)-1]
print('usage:',a,'digits of GrayCode')
print(' eg.',a,'12')
exit(1)
def bintogray(bin):
return(bin^(bin>>1))
def graytobin(n,gray):
val=0
for i in range(n,-1,-1):
val = val|((((1<<(i+1))&val)>>1)^((1<<i)&gray))
return(val)
dbg=0
if(len(sys.argv)>2):dbg=int(sys.argv[2])
fl=int(sys.argv[1])
fw=fl
if(fw<4):fw=4
dl=int(fl/3.321928+1) #dezimale Stellen
if(dl<4):dl=4
f="%%-%ds %%-%ds %%-%ds"%(dl,fw,fw)
if(dbg>0):print("f=",f)
h=f%("#val","gray","bin")
f="{{:0{:1d}d}} {{:0{:1d}b}} {{:0{:1d}b}}".format(dl,fw,fw)
#s wird in der for-Schleife unten nicht interpretiert,
#sondern als string ausgegeben:
s='f"'+str(f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}")+'"'
if(dbg>0):print("f=",f)
if(dbg>0):print("s=",s)
for i in range(2**fl):
if(i%24==0):print(h)
gray=bintogray(i)
bin=graytobin(fl,gray)
print(f.format(i,gray,bin))
s='f"'+(f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}")+'"'
print(s)
--
ruppert(a)hs-worms.de
[View Less]
Mike Müller <mmueller(a)python-academy.de> wrote:
> Am 22.06.20 um 14:27 schrieb Mike Müller:
>> Das `f` gehört vor den String:
>>
>> a = 5
>>
>> print(f'{a}')
>>
>> nicht in den String:
>>
>> print(f"'{a}'")
>
> Die falsche Variante richtig geschrieben: ;)
>
> print("f'{a}'")
Vielen Dank für die schnelle Antwort.
Das, was Sie vorgeschlagen haben, hat auch bei mit funktioniert.
Es funktioniert nicht mehr, wenn …
[View More]die "Indirektionsstufe" ins Spiel
kommt. Dann wird nämlich immer nur der String ausgegeben, aber nicht
interpretiert.
Ich habe jetzt nochmal beide Varianten ausprobiert.
Bei mir wird immer nur der String ausgegeben, aber nicht interpretiert.
Es ist also alles so wie bisher. Wenn Sie mir helfen wollen, wäre es
vielleicht sinnvoll, dass Sie das Programm aus meinem Posting mal
ablaufen lassen würden.
Vielen Dank und Viele Grüße
M.Ruppert
[View Less]