[Python-es] Entrada de datos por terminal

José Luis Torre Hernández joseluistorrehernandez en gmail.com
Vie Feb 25 10:47:09 CET 2011


El 25 de febrero de 2011 01:38, Fernando Guarini
<fernandoenzo en gmail.com>escribió:

> Hola a todos,
>
> He hecho una miniaplicación matemática que resuelve algunas matrices
> simples, y queriendo crearme una interfaz sencilla por terminal, me he dado
> cuenta de que tengo ciertos problemas.
>
> Mi objetivo es que yo escriba en el terminal por ejemplo:
> [[23,2,5],[2,8,1]]  y mi programa lo capte como una Lista.
>
> Sin embargo, la única manera de introducir datos que conozco es el
> raw_input, y haciendo esto, solo consigo que me lo interprete como string, y
> no soy capaz de ir más allá.
>
> Alternativamente, yo no sé crear interfaces gráficas, ni en Python ni en
> ningún otro lenguaje, así que si alguno cree que sería más sencillo hacerlo
> con una interfaz gráfica y me puede enlazar a algún tipo de tutorial básico,
> se lo agradeceré mucho.
>
>
> Muchas gracias y salu2!!
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
Hola Fernando:

Si realmente lo que quieres es escribir la matriz en una única línea de
entrada, creo que deberías utilizar expresiones regulares lo cual permite
analizar las entradas de una forma muy general.

Si lo que quieres es algo práctico, quizás te pueda servir hacer algo
similar a lo que yo hice en cierta ocasión (en C)

1) Editas un fichero y en él escribes la matriz (aquí tienes varias
posibilidades), por ej:
# fichero que contiene una matriz de siete filas y 4 columnas
7,  4
123.32   3      4  5
345.89   3.3   5  9
 123.32   3      4  5
345.89   3.3   5  9
 123.32   3      4  5
345.89   3.3   5  9
 123.32   3      4  5
# fin del fichero

2) En tu programa abres el fichero, lees el número de filas y de columnas y
luego usas un for dentro de otro para leer los elementos uno a uno.

3) Defines una función (luego con try...) para leer números reales, ej:
def leer_real:
     return float(imput())

Por otro lado, también puede optar por hacerlo interactivo solicitando en
número de filas y de columnas al usuario e ir introduciendo elemento a
elemento (depende de que usuarios y de qué dimensiones tenga la matriz, en
mi caso eran matrices del orden de 100x100, pero para matrices de hasta
10x10 puede servir).

Si las matrices son poco densas, puedes solicitar elemento a elemento:

Introducir un elemento
fila=
columna=
valor=

y después almacenar dicho valor en la matriz (si sólo son unos pocos
elementos puede ser cómodo)

En este último caso estaría bien poder modificar el elemento deseado de la
matriz.

Bueno, espero haberte ayudado

Saludos
José Luis
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110225/8998f2e1/attachment.html>


Más información sobre la lista de distribución Python-es