Aprender a Programar: Python

CaNaRy_r00lz

#120 Bueno llevo una semana escasa en esto, y patino muchas veces por fallos tontos xD que no recuerdo que había que poner algo jaja

No se, a mi es como se me ha ocurrido hacerlo pero tengo la costumbre de hacer las cosas complicadas, y siempre hay formas más sencillas por eso preguntaba xD

Deoxys

Por eso no te preocupes, lo de tener un paréntesis mal o equivocarte por 1 en un bucle de vez en cuando son errores que nadie deja de cometer nunca :P

Por lo otro no te preocupes, es mejor que hagas lo que se te ocurra en el momento y luego vuelvas en un mes y releas/reescribas el código con lo que has aprendido. Si te preocupas demasiado por dejarlo todo 'bonito' al principio vas a tardar mil años en hacer algo :)

1 respuesta
CaNaRy_r00lz

#122 Tomo nota, otra cosa que me preocupa es que yo cada "cosa" la estoy guardando en un archivo *.py pero todos ellos tiene x= y= etc etc y si al final quiero hacer un exe con todo dentro y junto, no será un problema tener muchas variables llamadas X o Y o Z ? o hay alguna forma de delimitar eso? por "lineas" por así decirlo, es decir, de la linea 1 a la 20 es un programa de la 22 a la 30 otro etc etc

1 respuesta
Deoxys

#123 Lo suyo es hacer funciones como te he comentado antes. Por ejemplo, si tu programa de la línea 1 a la 20 suma x e y, creas una función así

def suma(a,b):
  """
  Esat función suma bla bla bla
  """

  return a+b

y así con todo. Cuando necesites sumar dos números haces suma(a,b) y se ejecuta el código que hayas pasado con las variables que le metas.

Si las variables con el mismo nombre las tienes, por ejemplo, en un archivo cosab.py y quieres acceder desde cosaa.py, puedes importar el módulo

import cosab

cosab.[función en cosab]

Si vas a usar nombres muy parecidos en los diferentes archivos es una buena manera de solucionarlo.

en la documentación tienes algo de información sobre names y namespaces

1 1 respuesta
CaNaRy_r00lz

#124 aja entonces da igual si despues de la primera funcion como has puesto tu ahí pongo otra funcion tb usando a y b no?

Vale lo segundo que comentas me gusta bastante también, ya que pensaba que para hacer eso tendría que hacer como librerias jaja

voy a pegarle un vistado a la documentacion, thx

1 respuesta
Deoxys

#125 Sí, cuando usas a y b como parámetros de una función es interno de la función. Eso sí, no vas a poder (que yo sepa) acceder a otras variables a y b que estén fuera de la función. Busca 'function scope' y te saldrán cosas interesantes.

1 1 respuesta
CaNaRy_r00lz

#126 Thx, lo del scope era lo que me interesaba, tener un sinfín de variables con el mismo nombre pero que no se vean afectadas entre sí, para tener que no estar llamando archivos.

Por cierto vi un video de como hacer un "exe" pero dejaba muchos archivos, con esto se puede hacer un exe portable? es decir, lo ejecutas usas el programita y ya no tienes que instalar ni nada

1 respuesta
Deoxys

#127 Python es un lenguaje interpretado, no necesitas crear un exe. Lanzando cualquier archivo .py se ejecutará lo que esté dentro del archivo.

Si quieres empaquetarlo por alguna razón (Imagino que para no necesitar tener python instalado) hay utilidades que lo hacen, pero normalmente no es necesario. http://www.py2exe.org/

1 1 respuesta
CaNaRy_r00lz

#128 Gracias, si precisamente es para eso, para no tener que tener python instalado, y poder llevarlo a cualquier pc sin pensar en nada más, thx

Pero mirando como funciona eso, no es sólo un exe, es un exe y varios archivos más, yo busco un exe solamente, pero temo que no se pueda hacer xD, si acaso hacer un instalador para poner todos los archivos juntos y tenerlos primero juntos en el instalador

Me he hecho otro "programa" no se si llamarlo así que calculas una coordenada partiendo de una coordenada conocida su distancia y azimut.

Los datos son X=100 Y=100 Azimut =100grd (grados centesimales, nada de sexagesimales o radianes) y distancia reducida de 100m

Lo que me pasa es que necesito hacer el seno y coseno con grados centesimales y claro esto sólo acepta "radianes" entonces tengo que hacer un chanchullo que para mi resta precision, pk a más operaciones intermedias mas precision pierdes, he estado mirando y en math o son sexagesimales o son radianes, y buscando por google no encuentro nada, hay algun repositorio con librerias o como puedo buscar una libreria que trabaje con centesimales?

# Coordenadas del punto conocido

from math import *

x_pto = float(input('Coordenada X: '))
y_pto = float(input('Coordenada Y: '))

# Azimut

Azi = (float(input ('Azimut en GRADS: '))) / 200*pi

# Distancia

D = float(input('Distancia reducida: '))

# Incremento de coordenada

xsin = sin(Azi)
ycos = cos(Azi)

print ("Seno de X: ",xsin)
print ("Coseno de Y: ",ycos)

D_hoz_x = D*xsin+x_pto
D_hoz_y = D*ycos+y_pto

# Resultado final

print ("Coordenada X: " ,D_hoz_x)
print ("Coordenada Y: " ,D_hoz_y)


1 respuesta
B

#129

Para el exe: http://www.py2exe.org/

Para descargar nuevas librerías, lo más cómodo es utilizar pip: https://pypi.python.org/pypi/pip, googleas sobre lo que quieres hacer, encuentras la librería y luego te la descargas con esta herramienta, no sé como es en windows, pero en gnu/linux tan sencillo como hacer en un terminal:

pip install nombredelalibreria

Un saludo.

1
Clinisvud

Estoy intentando hacer como práctica una especie de Civilization, algo parecido a esto en cutre:

No tengo muy claro cómo dibujar el mapa. Lo que tengo hecho de momento es una matriz y según el número dibuja un terreno u otro, pero no sé si es mejor dejar el mapa en una imagen aparte y cargarla en el juego. ¿Alguna sugerencia?

1 respuesta
Nucklear

#131 Pues depende de si estas haciendo un terreno procedural o un mapa fijo si te entiendo bien. Si es tilebased tendras que gestionarlo con una matriz e imprimir cada tile en la coordenada+tamaño_tile_anterior y lo mismo con la altura.

CaNaRy_r00lz

Una pregunta, seguramente sea una gilipollez pero no soy capaz de hacerlo funcionar, estoy siguiendo un tutorial de como hacer funciones y demás, y me he dado cuenta que debido a las diferencias entre Python 2 y 3 hay cosas como cuando pones print "hola" (ver2) y print ("hola") (ver 3), pero aqui no consigo ver donde falla

def hola(alguien):
    print ("Hola",alguien,"!")
    print ("Estoy programando en Python.")

Y luego esto tampoco entiendo pk no funciona

def cuad1(num):
    print (num*num)

def cuad2():
    n = input("Ingrese un numero: ")
    cuad1(n)

Se que son cosas muy sencillas, pero no tengo otro sitio más donde mirar ni saber como arreglarlo

1 respuesta
sonyer

#133

En el primero pon print ( "Hola" + alguien + "!" )

Y en el segundo prueba con raw_input en vez de input.

Del segundo no estoy muy seguro, pero en el primero estas introduciendo 3 parametros a la funcion print, en realidad solo necesita 1.

De todas formas cuando pongas otra duda pon mas informacion del error a la hora de la ejecución pls.

1 respuesta
CaNaRy_r00lz

#134 Perdón, di por sentado que al ser algo tan sencillo no necesitaría poner el error

El primero incluso poniendo + no funciona

spoiler

En el segundo raw_input no me lo reconoce y el error que da sin el raw_input es este

spoiler
1 respuesta
B

.

2 respuestas
CaNaRy_r00lz

#136 Anda coño, claro eso será pk el tuto que sigo es de python 2 y yo tengo el 3.4 :S pk lo mismo pasa con los print "hola" que en mi python tengo que poner ("hola") .

Gracias!

Acabo de probar el segundo y me sigue dando error, el primero si era lo que comentas las comillas! pero el segundo me dice esto

spoiler
1 respuesta
Daredevil

#137 El error te lo dice claramente, no puedes multiplicar dos NO enteros ya que ese valor que le das (5) el lo toma como un string y tienes que formatearlo a entero cómo ya te han comentado en #136

1 respuesta
CaNaRy_r00lz

#138 joder de lo tarde que era anoche no me di cuenta del int, sólo puse las comillas y demás, thx macho xD perdon por el retraso

8 días después
B

Buenas necesito vuestra ayuda para una practica.

Estoy accediendo a un diccionario que dentro contiene otros diccionarios. La question es que en alguno de les diccionarios de dentro del grande a veces no estan todas las keys. El problema es que yo necesito guardar en un vector todos esos diccionarios internos, pero solo si estan todos los valores, si alguno no esta, debo pasar al siguiente.
Como puedo saber si existen? Yo pensba que haciendo un:

dic es el diccionario grande (de hoteles) y hoteles seria el diccionario con toda la info del hotel

for hotels in dic ['HotelListResponse']['HotelList']['HotelSummary']:
if hotels['hotelRating'] and hotels['RoomRateDetailsList']['RoomRateDetails']['RateInfo']['ChargeableRateInfo']['@total']:

en el if habria todo lo que quiero comprobar que exista antes de guradarlo en un array, el problema viene que cuando alguno no existe, en vez de pasar al siguiente hotel del for, me peta el programa. Alguna idea? graciass

1 respuesta
B

#140

Buenas, hai métodos que te permiten poner por defecto algún valor, de serie, aunque lo he utilizado con diccionarios simples que sería:

hotels.setDefault('campoquetuquieras', -1)

De esta forma al recuperar el 'campoquetuquieras' siempre te devolverá su valor real o -1 y por tanto, en el if puedes checkear que si el campo es != -1 imprima. Evidentemente puse yo -1, puedes poner el valor por defecto que quieras.

Existe algo similar de forma dinámica con el método get:

hotels.get('campoquequieras', -1)

En el momento te devuelve o bien su valor o bien -1 y similar al anterior.

En el caso de diccionario de diccionarios:

hotels.['diccionariosecundario'] = hotels.get('diccionariosecundario',{})
hotels.['diccionariosecundario'].get('campoquequieras', -1) 

En todo caso, si es un proyecto personal y no quieres usar una base de datos, si tienes que hacer un diccionario de diccionarios yo casi te animaría a probar con xml/json.

Un saludo.

bornex

Aquí os dejo un link bastante interesante de una web que se dedica a poner las tecnologías que usan las grandes empresas tecnológicas. Para aquellos que dice que Python no vale, o para que curioseéis de que es lo que se mueve por esos sitios.

http://stackshare.io/stacks

2 respuestas
E

#142 quien dice que python no vale? LOL para Google su lenguaje prioritario es python junto con c++

link interesante

E

#142 muy buena página xD gracias

1 mes después
B

No es spam, por si es de vuestro interés, curso del MIT gratuito y por 50$ con certificado sobre introducción a las ciencias de la computación con python:

https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x7

El temario tiene buena pinta, yo aún sabiendo python y algoritmia, estructuras de datos, ... me voy a apuntar, siempre se aprende algo nuevo.

2
CaNaRy_r00lz

Puf yo estaba haciendo el básico de coursera pero me pierdo me he quedado atascado y eso que no puedas postear tu código para que te ayuden me da mucho por culo, me he desmoralizado del todo :S además que al no estar enfocado a lo que yo quería hacer más me ha costado :S

1 respuesta
B

#146

Bueno hombre, pasarte el curso aqui no, pero si dices que necesitas y el código seguro que alguno de nosotros te podemos echar un cable.

El del MIT parece bastante exigente, piden unas 12h/semana si no sabes nada de algoritmia ni python, yo lo intentaré llevar al día y espero que no me lleve mas de 2-3h semana, pero si alguno se apunta siempre se puede echar un cable también, digo yo, que para eso estamos.

7 meses después
CaNaRy_r00lz

Acabo de ver esta noticia, y aunque el hilo lleva tiempo parado creo que es cuanto menos interesante

http://planetadiego.com/2016/03/19/intel-lanza-su-distribucion-de-python-para-uso-en-matematicas-y-busca-desarrolladores-para-probarla/

4 años después
Chikedor222

Lo que hay en el primer post sigue siendo lo mejor o hoy por hoy hay cosas mejores para aprender? Lo digo porque no sea que se haya quedado anticuado.

1 respuesta
15 días después
NocAB

#149 yo miraría los cursos mejor valorados de Coursera, edX y similares

Y me han pasado esto que no tiene mala pinta:
https://valenciaplaza.com/geekshubs-academy-organiza-un-hackathon-online-para-ensenar-a-programar-desde-cero

1

Usuarios habituales