Foros del Web » Programando para Internet » Python »

Problemas con mini programas.

Estas en el tema de Problemas con mini programas. en el foro de Python en Foros del Web. Buenas, disculpen si mis dudas no son de un calibre mayor o si tal vez sean estúpidas, pero bueno, no tengo a quien preguntarle Estoy ...

  #1 (permalink)  
Antiguo 03/11/2011, 10:32
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Pregunta Problemas con mini programas.

Buenas, disculpen si mis dudas no son de un calibre mayor o si tal vez sean estúpidas, pero bueno, no tengo a quien preguntarle

Estoy haciendo mini programas que tenía como ejercicios de C++ y estoy traduciéndolos a Python para poder aprender y practicar, tengo un par de ellos que me lanzan ciertos errores que, según leí no deberían aparecer o bueno, mejor den ustedes su veredicto:

Mi problema radica propiamente en este programa:

Código:
# -*- coding: utf-8 -*-
monto_compra = float(raw_input("Buenos días, por favor ingrese el monto de sus compras: ")
if monto_compra > 1000:
	rebaja = monto_compra*100/10
	monto_total = monto_compra - rebaja
	print "Su rebaja es de: " +str(rebaja) 
	print "La suma total a pagar es de: "+str(monto_total)
else: 
	print "Su monto no supera la cantidad mínima para rebajas"
Se supone que calcula una rebaja del 10% del total de la compra si esta supera el valor de 1000 pero me tira este error:

Código:
File "rebaja_de_compra.py", line 3
    if monto_compra > 1000:
                          ^
SyntaxError: invalid syntax
No se supone que luego de un if elif y else van " : " ???

Gracias de antemano

Última edición por nanotime; 03/11/2011 a las 10:33 Razón: Agradecer.
  #2 (permalink)  
Antiguo 03/11/2011, 10:51
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

Lo que pasa es que te falta un paréntesis de cierre para la función float.
  #3 (permalink)  
Antiguo 03/11/2011, 11:15
Avatar de lord11_irwin  
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: Problemas con mini programas.

Tiene razon razpeitia te falta un parentesis en el float:
monto_compra = float(raw_input("Buenos días, por favor ingrese el monto de sus compras: "))
  #4 (permalink)  
Antiguo 03/11/2011, 11:38
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Muchas gracias, será mucho problema que deje el tema abierto por si me salen más problemas con los mini programas?
  #5 (permalink)  
Antiguo 03/11/2011, 13:56
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Problemas con mini programas.

No sé si me estaré colando yo pero creo que tienes un fallo en la lógica del programa:
Cita:
if monto_compra > 1000:
rebaja = monto_compra*100/10 # 10 * monto_compra
monto_total = monto_compra - rebaja # -9 * monto_compra
Al final siempre te va a salir -9 * monto_compra, creo que lo que querías hacer es esto:
Código Python:
Ver original
  1. if monto_compra > 1000:
  2.     rebaja = monto_compra * 0.1 # 10%
  3.     monto_total = monto_compra - rebaja
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #6 (permalink)  
Antiguo 03/11/2011, 14:26
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Pregunta Respuesta: Problemas con mini programas.

Cita:
Iniciado por _cronos2 Ver Mensaje
No sé si me estaré colando yo pero creo que tienes un fallo en la lógica del programa:

Al final siempre te va a salir -9 * monto_compra, creo que lo que querías hacer es esto:
Código Python:
Ver original
  1. if monto_compra > 1000:
  2.     rebaja = monto_compra * 0.1 # 10%
  3.     monto_total = monto_compra - rebaja
Saludos (:
Tienes toda la razón del mundo, tenía que multiplicar por 10 y dividir 100, cuando vi los resultados en negativo me di cuenta de la trastada que cometí jajajaja xD.

Ahora dejo este otro problemita simple: Tiene que tomar tres números y decir cual es el mayor. Lo corrí el frío y fue perfecto, sin problemas, pero quise darle un formato como tal, que me dijese que el número tal es mayor a tal y tal de los que ha introducido el usuario y no me dijese "El numero 'x' es mayor que los demás"... Estoy practicando la concatenación de datos y hasta donde sé, con un +str(variable) bastaría ¿No? Bueno a mi no me corre los mensajes, me pide que ingrese los números y ya, no hace nada más, no imprime

Aquí el código:

Código:
# -*- coding: utf-8 -*-
a = int(raw_input("Introduzca un número: "))
b = int(raw_input("Introduzca otro número: "))
c = int(raw_input("Introduzca el último número número: "))
if a>b and b>c:
	print "Es mayor\t"+str(a)+"que\t"+str(b)+"y"+str(c)
elif b>a and a>c:
	print "Es mayor\t"+str(b)+"que\t"+str(a)+"y"+str(c)
elif c>b and b>a:
	print "Es mayor\t"+str(c)+"que\t"+str(a)+"y"+str(b)
Sencillamente, luego de introducir datos, me manda a la cagada, no hace nada jajajaja xD
  #7 (permalink)  
Antiguo 03/11/2011, 15:50
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Problemas con mini programas.

A ver así:
Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2.  
  3. ns = []
  4. strn = 'El mayor era '
  5. letras = ['a', 'b', 'c']
  6.  
  7. for i in range(0, 3):
  8.     ns.append( int( raw_input('Introduzca un número: ') ) )
  9.  
  10. maximo = max(ns)
  11. pos = ns.index(maximo)
  12. ns.pop(pos) # Borramos este elemento
  13.  
  14. strn += letras[pos]
  15. letras.pop(pos)
  16. strn += ', ' + ' y '.join(letras) + ' eran menores'
  17. print strn
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #8 (permalink)  
Antiguo 03/11/2011, 16:07
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

@_cronos2, como pasaste de menos código a mas código, para un ejercicio tan simple.

Código Python:
Ver original
  1. a = int(raw_input("Introduzca un número: "))
  2. b = int(raw_input("Introduzca otro número: "))
  3. c = int(raw_input("Introduzca el último número número: "))
  4. a, b, c = sorted([a, b, c], reverse=True)
  5. print "%d es mayor que %d y %d" % (a, b, c)
Aquí mi código.
  #9 (permalink)  
Antiguo 03/11/2011, 17:07
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Problemas con mini programas.

Ouch, no se me ocurrió ordenarlo, y al hacerlo con max tenía que borrar el elemento D:
+1
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 03/11/2011, 19:31
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Cita:
Iniciado por razpeitia Ver Mensaje
@_cronos2, como pasaste de menos código a mas código, para un ejercicio tan simple.

Código Python:
Ver original
  1. a = int(raw_input("Introduzca un número: "))
  2. b = int(raw_input("Introduzca otro número: "))
  3. c = int(raw_input("Introduzca el último número número: "))
  4. a, b, c = sorted([a, b, c], reverse=True)
  5. print "%d es mayor que %d y %d" % (a, b, c)
Aquí mi código.
Increíble, realmente, pero solo no entiendo una minúscula cosa, ¿que hace sorted y la variable reverse = true? Estás ordenando una lista, pero no veo las condiciones. Estoy un tanto confundido.
  #11 (permalink)  
Antiguo 03/11/2011, 21:39
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

Cita:
Iniciado por nanotime Ver Mensaje
Increíble, realmente, pero solo no entiendo una minúscula cosa, ¿que hace sorted y la variable reverse = true? Estás ordenando una lista, pero no veo las condiciones. Estoy un tanto confundido.
sorted, como es de esperarse recibe una lista de parámetro y regresa la misma lista ordenada.

reverse = True, es un parámetro opcional de una función.

Por default te ordena los objetos con la función cmp para la comparación y los ordena de manera ascendente (de menor a mayor) usando una versión modificada de merge sort para ordenar, al final de devuelve una copia de la lista.

Son cosas que aprenderás con el tiempo, la verdad lo puede haber puesto en una linea pero quería que fuera un poco legible.
  #12 (permalink)  
Antiguo 03/11/2011, 21:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

De hecho te dejo la versión en una sola linea de código.

Código Python:
Ver original
  1. print "%d es mayor que %d y %d" % tuple(sorted([int(raw_input(i)) for i in ["Introduzca un número: ", "Introduzca otro número: ", "Introduzca el último número número: "]], reverse=True))
  #13 (permalink)  
Antiguo 03/11/2011, 22:03
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Entonces, en este caso sorted envía la lista a,b,c de menor a mayor y reverse (es una función?) que siendo = true invierte sorted, no?
  #14 (permalink)  
Antiguo 03/11/2011, 22:15
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Debo estar volviendolos locos con tantas preguntas, me disculpo, pero en casi todos los casos no tengo a quien recurrir y cuando no tengo ni idea de que pasa las cosas son peores.

Este programa me fastidia un poco:

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2. """ Programa que genera un número aleatorio entre 0 y 500, luego un premio aleatorio entre
  3. 100 y 2000, si el número sorteado es múltiplo de 5 entonces el usuario se lleva 70% del premio """
  4. import random
  5. print "Se generará un número entre 0 y 500"
  6. numero = random.randit(0,500)
  7. print "El número es: "+srt(numero)
  8. premio = random.randint(100,2000)
  9. print "El premio sorteado es: "+str(premio)
  10. if numero%5 == 0:
  11.     premio = premio*70//100
  12.     print "Usted ha ganado: "+str(premio)
  13. else:
  14.     print "No ha ganado"

El problema es :
Código:
Se generará un número entre 0 y 500
Traceback (most recent call last):
  File "premio_aleatorio.py", line 6, in <module>
    numero = random.randit(0,500) 
AttributeError: 'module' object has no attribute 'randit'
Creo que de aquí en más dejaré que se acumulen dudas para no spamear
  #15 (permalink)  
Antiguo 03/11/2011, 22:44
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

randit ? creo que quisiste decir randint
  #16 (permalink)  
Antiguo 03/11/2011, 22:47
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Sí, era eso, gracias. Haré más ejercicios y cuando tenga un par o un poco más estancados vengo, así no molesto tanto... Quizá un par de horas ajajaja
  #17 (permalink)  
Antiguo 04/11/2011, 13:09
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Problemas con mini programas.

Nanotime...puedes hacer una duda por tema y con titulos explicativos...para que sea más facil buscar temas...si estas sacando ejercicios de internet lo más seguro es que luego venga otro que esta aprendiendo con la misma duda.

No creo que halla problema en que se vean muchos temas tuyos, mientras sean dudas que realmente has intentado resolver por tu cuenta y no has podido.

Salu2! ;)
__________________
"Porque nada se...
quiero saberlo todo"
  #18 (permalink)  
Antiguo 10/11/2011, 09:53
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Bueno no he tardado en volver a tener problemas con python jaja. Ahora la cosa es un tanto más interesante, necesito hacer que una función me retorne los números comprendidos entre a y b, osea, dos números introducidos por el usuario.

Lo probé sin el raw_input y me funcionó, pero cuando le pido al usuario que introduzca los números la terminal me bota

Código Python:
Ver original
  1. #-*- coding: utf-8 -*-
  2. """ Programa que pide dos números al usuario y luego imprime mediante una función
  3. los números comprendidos entre el primer número y el segundo """
  4. num = raw_input(int('introduzca un número: '))
  5. num1 = raw_input(int('introduzca otro numero: '))
  6. def numeros_comprendidos(num,num1):
  7.     print num
  8.     print num1
  9.     cont = num
  10.     while cont <= num1:
  11.         print cont
  12.         print '*-*'
  13.         cont = cont + 1
  14. numeros_comprendidos(num,num1)

A ver que me pueden decir
  #19 (permalink)  
Antiguo 10/11/2011, 10:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

En este mensaje lo hiciste bien, pero ahora lo haces al revés.

Recomendación leer bien tu código y saber que hace exactamente cada una de tus funciones.
  #20 (permalink)  
Antiguo 10/11/2011, 10:17
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Problema corregido, perdón, errores de novato.
  #21 (permalink)  
Antiguo 12/11/2011, 14:32
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Bueno, he avanzado otro poco y esta vez mi problema como tal no es algo brutal, sino de lógica. He estado trabajando con tuplas y viendo un ejercicio encuentro cosas pequeñas que, aunque puedo aprender por inercia, no es la idea. Quiero entender propiamente de que se trata esto.

Código Python:
Ver original
  1. tupla1=('juan',18,1.92)
  2. indice=0
  3. while indice<len(tupla1):
  4.     print tupla1[indice]
  5.     indice=indice+1

Duda simple (pero importante): ¿Por qué se declara la variable indice? Osea, es = 0 pero ¿Como 0 puede ser menor a el string 'juan'? Esta función me tiene algo atormentado jajaja pero bueno, recurro aquí cuando no me da más el coco.

Como siempre gracias y disculpas si molesto.
  #22 (permalink)  
Antiguo 12/11/2011, 15:19
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

De hecho primero necesitas comprender cada pedazito de código.

Linea 1: A tupla ('juan', 18, 1.92) le asignas el nombre tupla1
Linea 2: Al entero 0 le asignas el nombre indice
Linea 3: Mientras indice sea menor a la longitud de tupla1 en este caso la longitud de tupla1 es 3, por que tiene 3 elementos.
Linea 4: Imprime el elemento indice de tupla1. Tu puedes acceder a un elemento de una tupla por el indice empezando desde cero. Por ejemplo tupla1[0] es 'juan' y tupla1[1] es 18.
Linea 5: Incrementas el indice, si valía 0 ahora vale 1.
  #23 (permalink)  
Antiguo 14/11/2011, 16:45
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Sip, fue tarde esa noche que por alguna razón entendí luego de darle varias vueltas. Avancé otro poco y me topé luego con uno que me fastidio y que aún no entiendo por completo.

Es de formato con cadenas; un tanto complicado al principio pero entendible. La cosa es que no pude hacer el problema que proponían y tuve que ver la respuesta. Muy simple:

Código Python:
Ver original
  1. nombres=['juan','ana','luis']
  2. sueldos=[1500.55,2700.00,910.66]
  3. for indice in range(0,len(nombres)):
  4.     print '%-20s  %10.2f' % (nombres[indice],sueldos[indice])

Si no me falla la lógica aquí están introduciendo la variable indice en el rango 0 de la lista nombres y luego ponen a la izquierda todos los strings y dicen que los valores sueldo son de 10 espacios enteros con 2 decimales nada más. Al final asignan el valor de indice a nombres y sueldos como un subindice (?)... Me cuesta un poco procesar esto aunque se ve relativamente simple, más que todo porque no sé que es o hace range exactamente (Tengo una idea por el 0 que se ve) pero no sé como la variable indice aumenta para recorrer la lista, ¿Con range y len? Esas cosas no las aclaran en el tutorial que llevo

Como siempre gracias y bueno, mis preguntas deben ser fastidiosas pero trato de detallar para que cualquier otro que las lea y vea las respuestas tenga una buena referencia y aclare sus dudas lo mejor posible.
  #24 (permalink)  
Antiguo 14/11/2011, 17:08
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Problemas con mini programas.

range crea un array en función de los parámetros que le pases:
Código:
range(start, end, step)
O sea:
Código:
range(0, 5) # [0, 1, 2, 3, 4]
range(0, 5, 2) # [0, 2, 4]
En este caso lo que haces es un array con los índices de los elementos de ambos arrays, y después lo recorres con el bucle:
Código Python:
Ver original
  1. for i in range(0, len(nombres)):
No sé si vienes de otro lenguaje, pero en el bucle for de Python no hace falta que aumentes una variable iteradora en cada paso, sino que el propio Python va recorriendo el iterable de uno en uno, así que en este caso no es que a indice se le sume nada, sino que toma el valor del siguiente elemento del array devuelto por range. Por último:
Código Python:
Ver original
  1. print '%-20s  %10.2f' % (nombres[indice],sueldos[indice])
Aquí lo que haces es imprimir los elementos de los dos arrays accediendo mediante su posición (indice).
Saludos (:
Edit: Otra manera de hacerlo, a mí personalmente me gusta más:
Código Python:
Ver original
  1. for nombre, sueldo in zip(nombres, sueldos):
  2.     print '%-20s  %10.2f' % (nombres[indice],sueldos[indice])
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #25 (permalink)  
Antiguo 14/11/2011, 21:42
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Problemas con mini programas.

Cita:
Iniciado por _cronos2 Ver Mensaje
Edit: Otra manera de hacerlo, a mí personalmente me gusta más:
Código Python:
Ver original
  1. for nombre, sueldo in zip(nombres, sueldos):
  2.     print '%-20s  %10.2f' % (nombres[indice],sueldos[indice])
Creo que quisiste decir:
Código Python:
Ver original
  1. for nombre, sueldo in zip(nombres, sueldos):
  2.     print '%-20s  %10.2f' % (nombre,sueldo)
  #26 (permalink)  
Antiguo 14/11/2011, 22:21
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Problemas con mini programas.

Ahhh entonces lo que hace en este caso range(0 len(nombres) es crear un array desde 0 hasta la cantidad de elementos de la tupla/lista nombres y luego los va recorriendo hasta llegar al final. Ese tipo de cosas no las sabía, habrá una lista en español de las funciones de python? Ya me pongo a buscar.

Gracias muchachos
  #27 (permalink)  
Antiguo 15/11/2011, 00:29
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Problemas con mini programas.

Cita:
Iniciado por razpeitia Ver Mensaje
Creo que quisiste decir:
Código Python:
Ver original
  1. for nombre, sueldo in zip(nombres, sueldos):
  2.     print '%-20s  %10.2f' % (nombre,sueldo)
Ups, se me pasó borrar esa parte +1 :)
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #28 (permalink)  
Antiguo 15/11/2011, 08:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con mini programas.

Muchachos, en Python no hay arrays (al menos no de forma nativa, existe el módulo array). En Python tenemos listas y tuplas.
Tener el concepto claro les ayudará a buscar ayuda y documentación, y a entender el funcionamiento de este tipo de objetos.


saludos.
  #29 (permalink)  
Antiguo 15/11/2011, 12:22
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Problemas con mini programas.

Cita:
Iniciado por AlvaroG
Muchachos, en Python no hay arrays (al menos no de forma nativa, existe el módulo array).
Muy cierto, sólo es que como vengo de otros lenguajes a veces se me olvida porque la sintaxis es la misma
Y, ¿para qué un módulo array? Digo, teniendo listas no se me ocurre que podría aportar algo que se supone que viene a ser lo mismo.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #30 (permalink)  
Antiguo 15/11/2011, 12:38
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con mini programas.

Eso es porque son cosas diferentes desde el punto de vista de estructuras de datos.

Un vector, o array, es un espacio de memoria reservado para almacenar una cierta cantidad de objetos, generalmente del mismo tipo. Si tenés que almacenar números enteros de 4 bytes, reservando 32 bytes tenés espacio para 8 números.
La ventaja es que, teniendo la dirección de memoria donde comienza el vector, como ya se sabe el tipo de objeto que guarda el array (y por tanto su tamaño), se puede acceder al elemento (n + 1) simplemente agregando el tamaño del objeto a la dirección del elemento n.
Volviendo al ejemplo del vector de enteros, al hacer a[2] el sistema simplemente accede a la posición de memoria 2*4+(dirección de a)

Una lista es una estructura formada por un objetos tipo "nodo", que contienen, en su forma más básica, un espacio para guardar un dato y un espacio para guardar un puntero hacia el siguiente nodo. No se requiere asignar espacio en tiempo de creación sino que cada nodo se va creando a medida que se lo necesite, y si bien son mucho más flexibles que un vector, también son más lentas debido a que para acceder a a[1] tengo que leer el puntero almacenado en a[0], y seguirlo (ya no es una simple suma de las direcciones de memoria)

Volviendo a hacer una comparación con Java, un vector es lo que se crea vía int[] (por ejemplo), mientras que una lista se crea como instancia de ArrayList()


Saludos.

Etiquetas: ejercicio, mini
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 10:29.