Esercizio python

di il
9 risposte

Esercizio python

Questo programma crea una lista di liste ognuna delle quali formata da numeri interi, poi crea una nuova lista con la def proporzione e stampa il minimo di questa nuova lista
 # -*- coding: utf-8
import random
num = int(input("Inserire il numero di negozi\n"))
a = []
def crea(a):
	negozi = []
	for riga in range(a):
		negozi.append([])
		for colonna in range(2):
			negozi[riga].append(int(random.random()*100))
	return negozi
negozi=crea(num)
print (negozi)
def proporzione(lista):
	i = (lista[0]*1000)/(lista[1])
	return i
for x in range(len(negozi)):
	a.append(proporzione(negozi[x]))
print (min(a))
Non capisco però perchè devo fare per forza negozi[riga].append(int(random.random()*100)) e non posso fare negozi[riga].append(int(input()))... mi va in errore, io vorrei semplicemente leggere i numeri interi da input invece che generarli casualmente...

9 Risposte

  • Re: Esercizio python

    Quale errore ti viene segnalato di preciso?
  • Re: Esercizio python

    candaluar ha scritto:


    Quale errore ti viene segnalato di preciso?
    Invalid literal for int() with base 10
  • Re: Esercizio python

    Cosa inserisci come dato?
    Ho provato il tuo codice con Python 3.5 e funziona correttamente
    
    Inserire il numero di negozi
    2
    1
    1
    4
    4
    [[1, 1], [4, 4]]
    1000.0
    
    L'errore che segnali mi viene dato se inserisco un dato non numerico, es. "A":
    Inserire il numero di negozi
    2
    A
    Traceback (most recent call last):
      File "C:\Temp\prova3.py", line 12, in <module>
        negozi=crea(num)
      File "C:\Temp\prova3.py", line 10, in crea
        negozi[riga].append(int(input()))
    ValueError: invalid literal for int() with base 10: 'A'
    
  • Re: Esercizio python

    candaluar ha scritto:


    Cosa inserisci come dato?
    Ho provato il tuo codice con Python 3.5 e funziona correttamente
    
    Inserire il numero di negozi
    2
    1
    1
    4
    4
    [[1, 1], [4, 4]]
    1000.0
    
    L'errore che segnali mi viene dato se inserisco un dato non numerico, es. "A":
    Inserire il numero di negozi
    2
    A
    Traceback (most recent call last):
      File "C:\Temp\prova3.py", line 12, in <module>
        negozi=crea(num)
      File "C:\Temp\prova3.py", line 10, in crea
        negozi[riga].append(int(input()))
    ValueError: invalid literal for int() with base 10: 'A'
    
    Guarda il codice che ho scritto per non far generare numeri random e inserirli da input è questo:
     # -*- coding: utf-8
    import random
    num = int(input("Inserire il numero di negozi\n"))
    a = []
    def crea(a):
    	negozi = []
    	for riga in range(a):
    		negozi.append([])
    		for colonna in range(2):
    			negozi[riga].append(int(input()))
    	return negozi
    negozi=crea(num)
    print (negozi)
    def proporzione(lista):
    	i = (lista[0]*1000)/(lista[1])
    	return i
    for x in range(len(negozi)):
    	a.append(proporzione(negozi[x]))
    print (min(a))
    
    Se eseguo il programma:
    Inserire il numero di negozi
    30 10
    Traceback (most recent call last):
      File "Mortadella.py", line 3, in <module>
        num = int(input("Inserire il numero di negozi\n"))
    ValueError: invalid literal for int() with base 10: '30 10'
    
    Uso python 3.5.1
  • Re: Esercizio python

    Perchè inserisci '30 10'?
    Non devi semplicemente inserire il numero di negozi?
    scrivere int(input("")) prevede che venga inserito un solo intero, seguito dall'Invio.
  • Re: Esercizio python

    candaluar ha scritto:


    Perchè inserisci '30 10'?
    Non devi semplicemente inserire il numero di negozi?
    scrivere int(input("")) prevede che venga inserito un solo intero, seguito dall'Invio.
    Si scusa, hai ragione mi ero confuso :')
    Più che altro però non capisco perchè non posso mettere da terminale i numeri uno affianco all'altro. Dopo aver inserito il numero di negozi e dato invio, non posso scrivere 30 10 e poi invio, che mi esce quell'errore, mentre su java no...
  • Re: Esercizio python

    Non ho capito bene cosa vuoi fare; se vuoi far inserire tutti i valori separati da uno spazio allora devi richiamare una sola input() e poi lavorare con split()
  • Re: Esercizio python

    
    Inserire il numero di negozi
    2
    1
    1
    4
    4
    [[1, 1], [4, 4]]
    1000.0
    
    Invece di mettere l'input così, di metterlo in quest'altro modo
    
    Insrire il numeri di negozi
    2
    1 1 
    4 4 
    [[1,1],[4,4]]
    1000
    
  • Re: Esercizio python

    Qui http://stackoverflow.com/questions/1588058/read-two-variables-in-a-single-line-with-python trovi diversi modi per fare l'input di due interi
Devi accedere o registrarti per scrivere nel forum
9 risposte