¿Cómo usar una función con una entrada?

Ok, tengo una función que hice llamada DrawGraph. Esta función es prácticamente todo mi programa.

DrawGraph(x, y, xv, yv, s)

Al comienzo del programa, me gustaría tener que escribir estas funciones. E ingrese los números específicos, x, y, xv, etc....

para que pueda ingresar un número diferente cada vez que inicie el programa.

¿Cuál es la manera más fácil o incluso la mejor manera de hacer esto? No puedo esperar que sea demasiado difícil.

Lo que he intentado hasta ahora:

DrawGraph(x, y, xv, yv, s) = input()

DrawGraph(x, y, xv, yv, s) = input(x, y, xv, yv, s)

input(x, y, xv, yv, s)

...... ninguno de estos funcionó .......

sólo quiero tirar allí. Al final del programa, si no tengo entrada pero solo

DibujarGráfico(5, 5, 10, 10, 60)

funciona genial. Cuando empiezo a usar una entrada, realmente se estropea

preguntado el 11 de junio de 12 a las 19:06

¿Todos los argumentos son flotantes? -

7 Respuestas

Puedes simplemente hacer:

input()

Y escriba:

DrawGraph(0, 1, 2, 3, 4)

input toma cualquier expresión de Python y la evalúa. Esto puede convertirse en un agujero de seguridad.


Un mejor enfoque sería utilizar raw_input():

args = map(float, raw_input().split())
DrawGraph(*args)

Ese código toma la entrada, la convierte en una lista y luego convierte cada elemento en un flotador.

Respondido el 11 de junio de 12 a las 19:06

Python Turtle no responde cuando intento tu sugerencia: Greg Peckory

¿Cuál? ¿Qué es "tortuga pitón"? - Eric

A menos que desee analizar los valores de una entrada, sería más fácil solicitar cada valor y guardarlo en una variable de uno en uno, y luego llamar a su función.

x = input("Enter x:")
y = input("Enter y:")
xv = input("Enter xv:")
yv = input("Enter yv:")
s = input("Enter s:")

DrawGraph(x, y, xv, yv, s)

Esto obtendrá los valores del usuario y luego llamará a la función con esos valores.

Respondido el 11 de junio de 12 a las 19:06

Tenga en cuenta que las impresiones no son necesarias. La entrada puede tomar una solicitud de usuario para el mensaje. Actualicé tu fragmento para reflejar esto. - Finglas

¡Decir ah! Duh. Gracias, no he hecho ninguna entrada de usuario con python en años. - Paul Ballen

así es como me gustaría hacerlo. Desafortunadamente, también recibo un error aquí. Tal vez sea un error en algún otro lugar de mi guión. TypeError: no se puede convertir el objeto 'flotante' en str implícitamente - Greg Peckory

Necesita convertir las entradas, que son strings en floats. Entonces, agrega algo como x = float(x) para cada variable, siguiendo el input() llamadas. - Chinmay Kanchi

gracias por toda la ayuda y las respuestas. En cierto modo estaban bien. Usaré el método de Paul Whelans para hacerlo. Tuve que hacer un pequeño cambio para que funcionara bien. Lo que hice fue: x = int(input("Ingrese x:")) y = int(input("Ingrese y:")) xv = int(input("Ingrese xv:")) yv = int(input( "Ingrese yv:")) s = int(input("Ingrese s:")) DrawGraph(x, y, xv, yv, s) Float también funciona en lugar de usar int. Así que gracias en particular a Paul Whelan por tu respuesta :) - Greg Peckory

x, y, xv, yv, s = input()

La entrada tendría que estar en la forma:

1,2,3,4,5

or

x = input()
y = input()
xv = input()
yv = input()
s = input()

La entrada para esto sería en la forma:

1
2
3
4
5

De cualquier manera, entonces necesitaría pasar las variables a su función.

Tenga en cuenta que la entrada puede tomar un parámetro de cadena como indicación del usuario, por ejemplo:

x = input("Give me x:")

Respondido el 11 de junio de 12 a las 19:06

método no. 1 = ValueError: demasiados valores para desempaquetar (se esperaban 5) método no. 2 no parece tener ningún error, pero la ventana de la tortuga python no responde. Lo mismo parece suceder con todas las demás respuestas correctas. Tal vez no sea el guión el problema. - Greg Peckory

Hay una buena pregunta de desbordamiento de pila en la entrada del usuario en python aquí

Puede aceptar los valores como parámetros de línea cmd o usar raw_input para obtenerlos.

contestado el 23 de mayo de 17 a las 13:05

args = [int(i) for i in raw_input().split()]

DrawGraph(*args)

Para Python 3, simplemente reemplazaría raw_input() con input(). Estoy seguro de que hay una manera un poco más fácil (aparte del uso potencialmente peligroso de la versión anterior de input(), como se menciona en la respuesta de Eric), pero estoy un poco apurado en este momento y no tengo tiempo para pensar demasiado en eso.

Respondido el 11 de junio de 12 a las 19:06

def do_draw_graph():
    x  = int(raw_input("Value for x? "))
    y  = int(raw_input("Value for y? "))
    xv = int(raw_input("Value for xv? "))
    yv = int(raw_input("Value for yv? "))
    s  = int(raw_input("Value for s? "))
    DrawGraph(x, y, xv, yv, s)

Funciona cuando se usa el turtle módulo en IDLE

Respondido el 12 de junio de 12 a las 01:06

 raw_input() is renamed to input() in Python3 

  x=int(input("enter x" )) 
  y=int(input("enter y" ))
  xv=int(input("enter xv" ))
  yv=int(input("enter yv" ))
  s=int(input("enter s" ))
  DrawGraph(x,y,xv,yv,s)

 it depends on what type of number are the inputs. if they'r decimals like 1.2 instead of int use float

respondido 02 mar '17, 20:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.