elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  cmd ejecucion def con *args
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: cmd ejecucion def con *args  (Leído 3,842 veces)
winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
cmd ejecucion def con *args
« en: 19 Abril 2016, 15:26 pm »

Hola a todos. Vereis, bajo windows he creado un .py usando editor de txt con el siguiente codigo:
Código:
def media(*args):
sumatorio = 0
if numero in args:
sumatorio+=numero
total=sumatorio/len(args)
return total

Me gustaria poder ejecutar esta funcion desde la consola CMD pero he probado a ejecutarlo desde su directorio asi:
c:> nombreprograma.py media(1,2,3,4,5,6) y no me aparece ningun resultado. Es obvio que algo hago mal. Sabeis que?


En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: cmd ejecucion def con *args
« Respuesta #1 en: 19 Abril 2016, 20:38 pm »

no sé si estoy entendiendo ¿querés llamar a la función desde la línea de comandos cómo un argumento?
si querés usar argumentos sería sobre el nombre del archivo y no llamando a la función. así como está es imposible que funcione ni la función ya que nunca la llamas.
si estás aprendiendo busca sobre llamar a funciones y sobre pasar argumentos.


En línea

winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: cmd ejecucion def con *args
« Respuesta #2 en: 19 Abril 2016, 21:29 pm »

Veras, lo que quiero es llamar desde el cmd de windows a la funcion media(*args) del programa nombreprograma.py  introduciendo si es posible los argumentos que yo quiera (una serie de numeros mas o menos grande). Todo ello desde la consola windows, para ver si me arroja el resultado en la misma consola. Es posible? O estoy intentando algo que no se puede hacer?
Perdona las dudas extrañas, estoy aprendiendo y se me ocurrio intentar lanzar un programa por consola.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: cmd ejecucion def con *args
« Respuesta #3 en: 20 Abril 2016, 00:08 am »

no estoy seguro de donde sacaste que con "*args" podrías... esto se hace así

Código
  1. import sys
  2.  
  3. print "se recibieron", len(sys.argv), "argumentos"
  4.  
  5. print "los argumentos recibidos fueron"
  6. for i in sys.argv:
  7.  print i
  8.  
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: cmd ejecucion def con *args
« Respuesta #4 en: 20 Abril 2016, 00:09 am »

Creo que lo he solucionado mejorando el codigo y ejecutandolo desde cmd ahora si que logro ver el resultado por consola y correctamente. Pego el codigo:

Código:
lista =[]

def media(lista):
sumatorio = 0
for numero in lista:
sumatorio+=int(numero)
total=sumatorio/len(lista)
return total


while True:
x = input("Introduce un numero o pulsa 0 para terminar: ")
if x == "0":
break
else:
lista.append(x)

print ("La media ponderada de los numeros introducidos es igual a:",media(lista))
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: cmd ejecucion def con *args
« Respuesta #5 en: 20 Abril 2016, 06:31 am »

veo que no me diste bola ni tampoco a engel lex
¿en tu nuevo código, dónde está el pase de argumentos para que los haga el script?
estoy aburrido y me gusta python por lo tanto modifique un poco tu código para que veas lo que es pasar argumentos:
Código
  1. import sys
  2. argu= sys.argv
  3. argu= argu[1:]
  4. lista =[]
  5. for arg in argu:
  6.    arg = int(arg)
  7.    lista.append(arg)
  8. def media(lista):
  9.    sumatorio = 0
  10.    for numero in lista:
  11.        sumatorio+=int(numero)
  12.    total=sumatorio/len(lista)
  13.    return total
  14. print ("La media ponderada de los numeros introducidos es igual a: ",media(lista))
  15.  

para ejecutarlo desde cmd ponés: python script.py  1 2 3 4 5
o sea llamás al compilador el nombre de tu script y los argumentos separados por espacios y listo.

salvo que no hayas entendido que es pasar argumentos esa es la forma en que se puede hacer.
En línea

winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: cmd ejecucion def con *args
« Respuesta #6 en: 20 Abril 2016, 20:34 pm »

Gracias tincopasan, busque solventar el problema de otro modo, pero tienes razon, tecnicamente lo que hacia yo no era pasar argumentos en linea de comandos, sino pedir datos por consola.
Tu codigo me ha ayudado a entender lo que decia engel lex, realmente desconocia el funcionamiento de sys.argv, solo habia leido sobre *args y *kwargs. Disculpa por mi falta de conocimientos.
Solo una duda mas cuando codeas estas lineas:
argu= sys.argv
argu= argu[1:]
Sobreentiendo que sys.argv no lista sus miembros desde la posicion 0 como las listas, sino que comienza en la posicion 1?
Voy a leer sobre sys.argv porque la verdad es que es totalmente novedoso para mi. Gracias por encauzarme del modo correcto.

Edito: Leyendo sobre el tema he visto porque usas la posicion 1 de sys.argv como si fuese el primer parametro en vez de usar el cero. Por lo que he visto el primer valor del array (sys.argv[0]) es el nombre del archivo (script.py) y a continuación, sys.argv[1] contiene el primer parámetro, en este caso por ejemplo si los argumentos introducidos son 1 2 3 4 5 6 sys.argv[1] equivaldria al string 1, sys.argv[2] al string 2 y asi sucesivamente. Gracias de veras tincopasan y engel lex por orientarme.
« Última modificación: 20 Abril 2016, 20:39 pm por winnipu » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: cmd ejecucion def con *args
« Respuesta #7 en: 20 Abril 2016, 21:23 pm »

antes de hacer la pregunta intentaste hacer un print a sys.argv?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ejecución en LAN
Programación Visual Basic
ciruit 4 2,569 Último mensaje 19 Noviembre 2005, 00:16 am
por ciruit
Ejecución en C [HELP]
Programación C/C++
Borluck 7 6,167 Último mensaje 7 Mayo 2013, 17:33 pm
por Borluck
Args en python
Scripting
Sentex 4 2,687 Último mensaje 25 Septiembre 2017, 01:50 am
por **Aincrad**
Dudas utilizando *args en python.
Scripting
Dani-el soldado de Dios 4 5,431 Último mensaje 4 Octubre 2021, 17:55 pm
por Dani-el soldado de Dios
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines