Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5645
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Stefan Behnel <python-de@behnel.de> |
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] f-string Formatanweisung |
| Date | Mon, 22 Jun 2020 14:55:40 +0200 |
| Lines | 102 |
| Message-ID | <mailman.252.1592830727.24731.python-de@python.org> (permalink) |
| References | <rcq1j2$5b5$1@dont-email.me> <3c7649df-8e7a-6099-878c-a10882a90955@behnel.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8 |
| Content-Transfer-Encoding | 8bit |
| X-Trace | news.uni-berlin.de DtWPMVS2PaV+1QOtIosSEADDvolJB9QQA+wZfn8yUQKA== |
| Return-Path | <python-de@behnel.de> |
| X-Original-To | python-de@python.org |
| Delivered-To | python-de@mail.python.org |
| Authentication-Results | mail.python.org; dkim=pass reason="2048-bit key; unprotected key" header.d=behnel.de header.i=@behnel.de header.b=DYZp5NlE; dkim-adsp=pass; dkim-atps=neutral |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; t=1592830726; s=strato-dkim-0002; d=behnel.de; h=In-Reply-To:Date:Message-ID:From:References:To:Subject: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=7BtIPO1EvSA/dOd87dcCp6opoaz1NLrW18WhCxuUtEE=; b=DYZp5NlE3SygiP/HDLoYi2nDnPLeJn+B8O0cn1FUMrVs+l79LW63i9Na2WcupN/c7j MUwdS1Sp2tcCTc/AO6zo6AH0a19iEpf7wmG6omHzKduhV3sBfZ+3gG9FDkH8YPdUTfBV 50SNERvVXeOK0gnMYhR2NaIoTcfei+Gv8Nl25NGNcpADAx0FlYmsr5ACCl0MCv6EN6U6 uE1sRR7fJgJpdg00+yDdxejHBMMQdRQw6tcUicmeJsZvI+fWIN4gVa6ZSDy9HMDtgEyN cd/sp94aRkH076HFQyupwFh4rcVMVjGSe1ptq0fNVOHrOGvTWRrRuLfmxUTsvBMfGd5q RaoQ== |
| X-RZG-AUTH | ":E1MMdFW4b++AXZOTwA41DOYM0Dv9LNWvavC/fJZ6Wfgmp/Lh1ANWCRaaq2R1hHsoZh74ArcRjqdrtbnfdSk7SR00Qivwavc27kbrx2CHRUeo5xXR" |
| X-RZG-CLASS-ID | mo00 |
| User-Agent | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 |
| In-Reply-To | <rcq1j2$5b5$1@dont-email.me> |
| Content-Language | de-DE |
| X-BeenThere | python-de@python.org |
| X-Mailman-Version | 2.1.33 |
| Precedence | list |
| List-Id | Die Deutsche Python Mailingliste <python-de.python.org> |
| List-Unsubscribe | <https://mail.python.org/mailman/options/python-de>, <mailto:python-de-request@python.org?subject=unsubscribe> |
| List-Archive | <http://mail.python.org/pipermail/python-de/> |
| List-Post | <mailto:python-de@python.org> |
| List-Help | <mailto:python-de-request@python.org?subject=help> |
| List-Subscribe | <https://mail.python.org/mailman/listinfo/python-de>, <mailto:python-de-request@python.org?subject=subscribe> |
| X-Mailman-Original-Message-ID | <3c7649df-8e7a-6099-878c-a10882a90955@behnel.de> |
| X-Mailman-Original-References | <rcq1j2$5b5$1@dont-email.me> |
| Xref | csiph.com de.comp.lang.python:5645 |
Show key headers only | View raw
Hallo Martin,
schön, dass du deinen Code hier veröffentlichst. Lass es mich zum Anlass
nehmen, weiter unten noch ein paar Kommentare dazu zu schreiben.
Das hier
s='f"'+(f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}")+'"'
scheint mir ein Versuch zu sein, einen f-string innerhalb einer
Zeichenkette zu generieren. War das beabsichtigt? Zumindest wird er dann
nirgendwo verarbeitet. Wie Mike schon bemerkte, fehlt da irgendwas, aber
mir ist nicht so ganz klar, was der Zweck war und was dann die richtige
Korrektur wäre. Kannst du das ein bisschen erklären?
ruppert@hs-worms.de schrieb am 22.06.20 um 12:36:
> #!/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)
Zusätzlich zu dem, was Mike schon gesagt hat: es wäre vermutlich auch für
dich einfacher gewesen, in diesem Code einen Fehler zu finden, wenn du den
Code mit mehr Abständen hingeschrieben hättest. Als jemand, der schon oft
genug kopfschüttelnd vor meinem eigenen Code von vor ein paar Jahren
gestanden hat, kann ich dir sagen: Code wird immer für Menschen
geschrieben, nicht für Maschinen.
Ich finden z.B. das hier
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)
sehr schwer zu lesen, wohingegen ich das folgende viel klarer finde:
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)
Noch besser als das letzte Kommando finde ich in diesem Fall:
f = f"%-{dl}s %-{fw}s %-{fw}s"
Und der Zahl "3.321928" würde ich auch noch einen Namen geben, damit klar
ist, woher die so plötzlich kommt und was für eine Bedeutung die hat, z.B.
DEZIMALE_STELLEN_PRO_FRZLFIFF = 3.321928
dezimale_stellen = int(fl / DEZIMALE_STELLEN_PRO_FRZLFIFF + 1)
Vielleicht ist das nicht auf den ersten Blick klar, aber es könnte
irgendwann ein Tag kommen, an dem du jemandem auf den Knien danken
möchtest, dass eine Variable im Code "dezimale_stellen" heißt und nicht
"dl". Im besten Fall dir selbst.
Stefan
Back to de.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 10:36 +0000
Re: [Python-de] f-string Formatanweisung Mike Müller <mmueller@python-academy.de> - 2020-06-22 14:27 +0200
Re: [Python-de] f-string Formatanweisung Mike Müller <mmueller@python-academy.de> - 2020-06-22 14:31 +0200
Re: [Python-de] f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 13:22 +0000
Re: [Python-de] f-string Formatanweisung Stefan Behnel <python-de@behnel.de> - 2020-06-22 14:55 +0200
Re: f-string Formatanweisung "Andreas B." <ab@sysing.de> - 2020-06-22 15:03 +0200
Re: f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 13:28 +0000
Re: [Python-de] f-string Formatanweisung Stefan Behnel <python-de@behnel.de> - 2020-06-22 15:14 +0200
Re: [Python-de] f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 14:03 +0000
Re: [Python-de] f-string Formatanweisung ruppert@hs-worms.de - 2020-07-13 11:13 +0000
csiph-web