Percentuale Python

kekko95

Utente Attivo
363
1
CPU
Intel e5200 @3.5 Ghz
Scheda Madre
ASUS P5QL-E Rev. A3
HDD
Western Digital 1Tb, Maxtor 6Y120P0 120 Gb
RAM
Kingston DDR2 800 Mhz 6gb (2*3)
GPU
NVIDIA GeForce 9500 GT 1Gb DDR2 Rev. C1
Audio
Integrata
Monitor
Samtron 19" 1280*1024
OS
Windows 7 Ultimate x64, Ubuntu 11.10
Ciao a tutti. Sto imparando una funzione del print che mi permetta di rendee il testo per il programmatore più leggibile ed intuitivo ma ho un problema. Se scrivo cosi è esatto:

a=int(input("Dimmi il primo numero da inserire"))
b=int(input("Dimmi il secondo numero da inserire"))
c=int(input("Dimmi il terzo numero da inserire"))
d=input("Per sapere quanto vale la somma premere il tasto INVIO")
if a+b+c>=0:
print("La somma dei numeri %s %s %s è maggiore o uguale a 0;. Si tratta dunque di un numero positivo."%(a,b,c))

Ma se nella stessa funzione print faccio cosi mi da errore:

a=int(input("Dimmi il primo numero da inserire"))
b=int(input("Dimmi il secondo numero da inserire"))
c=int(input("Dimmi il terzo numero da inserire"))
d=input("Per sapere quanto vale la somma premere il tasto INVIO")
if a+b+c>=0:
print("La somma dei numeri %s %s %s è maggiore o uguale a 0;Precisamente fa %s+%s+%s. Si tratta dunque di un numero positivo."%(a,b,c))

Allora ho provato a fare in questo modo ma mi restituisce sempre errore:

a=int(input("Dimmi il primo numero da inserire"))
b=int(input("Dimmi il secondo numero da inserire"))
c=int(input("Dimmi il terzo numero da inserire"))
d=input("Per sapere quanto vale la somma premere il tasto INVIO")
if a+b+c>=0:
print("La somma dei numeri %s %s %s è maggiore o uguale a 0;Precisamente fa %s+%s+%s. Si tratta dunque di un numero positivo."%(a,b,c)%(a,b,c))

L' errore è: not enough arguments for format string

forse invece di %s devo scrivere altro? Spero mi sappiate aiutare.. Grazie :)


 

campo23

Utente Attivo
621
118
CPU
Ryzen 7 3700x
Dissipatore
Noctua NH-U12A
Scheda Madre
MSI X570 Gaming Edge WIFI
HDD
Samsung 960 EVO 256gb
RAM
Vengeance DDR4 32GB 3000Mhz
GPU
EVGA RTX 2060 XC Black
Monitor
Samsung U28H750
PSU
Seasonic Focus Gold 650
Case
Phanteks Eclipse P400 Tempered Glass
OS
Windows 11 Professional x64
prova a scrivere %d ;)
 

kekko95

Utente Attivo
363
1
CPU
Intel e5200 @3.5 Ghz
Scheda Madre
ASUS P5QL-E Rev. A3
HDD
Western Digital 1Tb, Maxtor 6Y120P0 120 Gb
RAM
Kingston DDR2 800 Mhz 6gb (2*3)
GPU
NVIDIA GeForce 9500 GT 1Gb DDR2 Rev. C1
Audio
Integrata
Monitor
Samtron 19" 1280*1024
OS
Windows 7 Ultimate x64, Ubuntu 11.10
ho provato come dici tu ma mi da sempre errore. Non è che potresti riscrivermelo con la modifica? Forse ho cambiato %d nel posto sbagliato.
Cosa cambia tra %d e %s? :)
 

incolto

Utente Èlite
4,310
2,305
CPU
AMD Athlon II x2 240e
Scheda Madre
AS Rock 880GM-LE
HDD
Samsung HM080HC 80GB
RAM
Corsair ValueSelect DDR3 2x2GB @1333 9-9-9-24
GPU
integrata
Audio
integrata
Monitor
SyncMaster P2470HD
PSU
400w
Case
Kraun
OS
Windows 7
%d è per gli interi. %s per le stringhe.
Se è come il C... hai %c per i caratteri (se ricordo bene) e %f per i numeri con la virgola.
Poi ci son le diverse formattazioni... per decidere quante cifre far vedere... e altre cose che però non ricordo...
 
  • Mi piace
Reazioni: kekko95

campo23

Utente Attivo
621
118
CPU
Ryzen 7 3700x
Dissipatore
Noctua NH-U12A
Scheda Madre
MSI X570 Gaming Edge WIFI
HDD
Samsung 960 EVO 256gb
RAM
Vengeance DDR4 32GB 3000Mhz
GPU
EVGA RTX 2060 XC Black
Monitor
Samsung U28H750
PSU
Seasonic Focus Gold 650
Case
Phanteks Eclipse P400 Tempered Glass
OS
Windows 11 Professional x64
allora per prima cosa %d+%d+%d dentro il printf non ti rida la somma ma ti da solo la stringa per esempio 1+2+3, quindi se vuoi scrivere il totale devi metterlo in una variabile
seconda cosa %(a,b,c) %(a,b,c) non va bene, devi scrivere solo una volta %(a,b,c,a,b,c)
 

kekko95

Utente Attivo
363
1
CPU
Intel e5200 @3.5 Ghz
Scheda Madre
ASUS P5QL-E Rev. A3
HDD
Western Digital 1Tb, Maxtor 6Y120P0 120 Gb
RAM
Kingston DDR2 800 Mhz 6gb (2*3)
GPU
NVIDIA GeForce 9500 GT 1Gb DDR2 Rev. C1
Audio
Integrata
Monitor
Samtron 19" 1280*1024
OS
Windows 7 Ultimate x64, Ubuntu 11.10
ok ma ho sempre lo stesso problema:

a=int(input("Dimmi il primo numero da inserire"))
b=int(input("Dimmi il secondo numero da inserire"))
c=int(input("Dimmi il terzo numero da inserire"))
d=input("Per sapere quanto vale la somma premere il tasto INVIO")
if a+b+c>=0:
print("La somma dei numeri %d %d %d è maggiore o uguale a 0;Precisamente fa %d+%d+%d. Si tratta dunque di un numero positivo."%(a,b,c)%(a,b,c))

errore: not enough arguments for format string

Secondo me è sbagliata la parte che evidenzio in verde. Forse non vanno messe attaccate le due percentuali? Puo essere?

Edit: provvedo a modificare e ti faccio sapere :)

---------- Post added at 14:44 ---------- Previous post was at 14:33 ----------

Bene ho risolto... vi ringrazio :) ho fatto cosi:

a=int(input("Dimmi il primo numero da inserire"))
b=int(input("Dimmi il secondo numero da inserire"))
c=int(input("Dimmi il terzo numero da inserire"))
x=(a+b+c)
d=input("Per sapere quanto vale la somma premere il tasto INVIO")
if a+b+c>=0:
print("La somma dei numeri %d %d %d è maggiore o uguale a 0;Precisamente fa %d. Si tratta dunque di un numero positivo."%(a,b,c,x))

è giusto affermare che %d serve per riportare numeri mentre %s stringhe (testi,numeri, testi+numeri)?

Se non vi dispiace, dato che siete competenti più di me, riuscireste a dare un occhio anche a quest' altro mio problema esposto in una discussione precedente? :)
http://www.tomshw.it/forum/programmazione/228642-python-3-a.html
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili