Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [python] assegnare valore a variabile,dopo un raw_input

    ciao a tutti e buone feste^^
    il mio problema è il seguente:

    codice:
    def distanza(x1, y1, x2, y2):
        dx = x2 - x1
        dy = y2 - y1
        print "dx vale", dx
        print "dy vale", dy
    x1 = raw_input ("x1  vale?")
    print x1
    x2 = raw_input ("x2  vale?")
    print x2
    y1 = raw_input ("y1  vale?")
    print y1
    y2 = raw_input ("y2  vale?")
    print y2
    distanza(x1, y1, x2, y2)
    mi restituisce questo errore:

    Traceback (most recent call last):
    File "C:\Documents and Settings\Cirio\Desktop\ds.py", line 14, in <module>
    distanza(x1, y1, x2, y2)
    File "C:\Documents and Settings\Cirio\Desktop\ds.py", line 2, in distanza
    dx = x2 - x1
    TypeError: unsupported operand type(s) for -: 'str' and 'str'

    ed inoltre mi sapete dire come far si che quando richiamo "distanza" essa prenda il valore x1,x2 ecc... dal valore che do da tastiera???grazie mille in anticipo

  2. #2
    codice:
    def distanza(x1, y1, x2, y2):
        dx = x2 - x1
        dy = y2 - y1
        print "dx vale" + dx
        print "dy vale" + dy
    x1 = int(raw_input ("x1  vale?"))
    print x1
    x2 = int(raw_input ("x2  vale?"))
    print x2
    y1 = int(raw_input ("y1  vale?"))
    print y1
    y2 = int(raw_input ("y2  vale?"))
    print y2
    distanza(x1, y1, x2, y2)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    grassie

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    dho -.-''
    mi da quest'errore:



    ke puo essere?

  5. #5
    Non si può concatenare (in modo diretto) una stringa con un valore intero.
    codice:
        print "dx vale" + dx
        print "dy vale" + dy
    Prova così:
    codice:
    def distanza(x1, y1, x2, y2):
        dx = x2 - x1
        dy = y2 - y1
        print "dx vale", dx
        print "dy vale", dy
        
    x1 = int(raw_input ("x1  vale?"))
    print x1
    x2 = int(raw_input ("x2  vale?"))
    print x2
    y1 = int(raw_input ("y1  vale?"))
    print y1
    y2 = int(raw_input ("y2  vale?"))
    print y2
    distanza(x1, y1, x2, y2)
    Ciao e Buon Natale.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    ok thanks

  7. #7
    Aggiungo che quel codice non esegue alcun controllo sui valori inseriti
    ergo se viene digitata una lettera lo script crasha

    Io creerei una funzione per gestire l'input tipo questa :

    codice:
    def GetIntVal(msg):
    	while True:
    		val =  raw_input( msg )
    		if( val.isdigit() ):
    			return int( val )
    		print "ERRORE : Inserire un valore intero !"
    
    
    def distanza(x1, y1, x2, y2):
    	dx = x2 - x1
    	dy = y2 - y1
    	print "dx vale", dx
    	print "dy vale", dy
    
    
    x1 = GetIntVal("x1  vale? ")
    x2 = GetIntVal("x2  vale? ")
    y1 = GetIntVal("y1  vale? ")
    y2 = GetIntVal("y2  vale? ")
    
    distanza(x1, y1, x2, y2)
    Ciao.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    cavolo..sono propio ai primi passi, ho provato a farne uno sulla falsa riga del primo.. mi viene sempre fuori lo stesso errore..

    import math
    def risultato(a, b):
    a2 = a**2
    b2 = b**2
    somma = a2+b2
    ris = math.sqrt(somma)
    print ris
    print "Ora calcoleremo il teorema di Pitagora"
    a = int(raw_input("Dammi il valore del primo cateto")
    print a
    b = int(raw_input("Dammi il valore del secondo cateto")
    print b
    risultato(a, b)

    @edit: risolto, avevo dimenticato unaparentesi

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    Originariamente inviato da Samuele_70
    Aggiungo che quel codice non esegue alcun controllo sui valori inseriti
    ergo se viene digitata una lettera lo script crasha

    Io creerei una funzione per gestire l'input tipo questa :

    codice:
    def GetIntVal(msg):
    	while True:
    		val =  raw_input( msg )
    		if( val.isdigit() ):
    			return int( val )
    		print "ERRORE : Inserire un valore intero !"
    
    
    def distanza(x1, y1, x2, y2):
    	dx = x2 - x1
    	dy = y2 - y1
    	print "dx vale", dx
    	print "dy vale", dy
    
    
    x1 = GetIntVal("x1  vale? ")
    x2 = GetIntVal("x2  vale? ")
    y1 = GetIntVal("y1  vale? ")
    y2 = GetIntVal("y2  vale? ")
    
    distanza(x1, y1, x2, y2)
    Ciao.
    io avevo pensato di gestirlo così l'errore, certamente il tuo è meglio, però volevo sapere se il mio era sbagliato, non riuscendo però a far continuare il programma:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-

    import math

    def risultato(a, b):

    print # una riga vuota per comodità

    dis = a**2 + b**2

    ris = math.sqrt(dis)

    print "Il risultato del Teorema di pitagora applicato al tuo triangolo equilatero", ris



    try:

    print " Benvenuto padrone, ora calcoleremo il teorema di Pitagora;"

    print # una riga vuota per comodità e chiarezza

    print # una riga vuota per comodità e chiarezza

    a = int (raw_input("Il valore del primo cateto:")) # ricordasi la chiusura di entrambe le parentesi

    b = int (raw_input("Il valore del secondo cateto:"))

    risultato(a, b)
    except:
    print "inseire numeri non lettere"
    raw_input("Premi invio per uscire")

  10. #10
    Utilizzare try/except (per di più generico) in questo caso non è molto bello.
    Molto più elegante un:
    codice:
    while 1:
         val =  raw_input(msg)
         if isinstance(val, int):
               return val
         else:
               print "error"
    Oppure, se proprio volessi utilizzare try/except:

    codice:
    while 1:
         val =  raw_input(msg)
         try:
              int(val)
         except ValueError:
              print "error"
         else:
              return val
    Utilizzare un "except" generico (ovvero senza specificare che tipo di eccezione ci si aspetta) non è buona abitudine.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.