[pyar] Soy novato y tengo dudas con los bucles en python.

Adrian Roldan roldanadrian en gmail.com
Dom Nov 20 21:27:17 ART 2011


El 20 de noviembre de 2011 18:10, Javier Marín <nano.world.contact en gmail.com
> escribió:

> Entiendo parcialmente lo de las raices cuadradas, aunque no logro hacerme
> la idea de como implementarlo, a ver que me sale... Algo así como for x in
> range(a**2) ? Pero eso me huele a errores de sintaxis horribles. Igual, voy
> a hacer distintos intentos y en cuanto no consiga solución y nada más me
> venga, les hablo.
>
> El 20 de noviembre de 2011 02:00, Walter R. Ojeda Valiente <
> wojedav en gmail.com> escribió:
>
> Para saber si el número "x" es primo, basta con dividirlo entre todos los
>> números comprendidos entre "2" y la raíz cuadrada de "x", ya que es
>> imposible que sea divisible por dos o más números mayores que su raíz
>> cuadrada. Si el resultado de la división es cero, el número no es primo.
>>
>> Por ejemplo, el número 50 puede hallarse multiplicando:
>>
>> 1 x 50 = 50
>> 2 x 25 = 50
>> 5 x 10 = 50
>>
>> La raíz cuadrada de 50 es 7 y algo.
>>
>> Siempre, al menos uno de los factores es menor o igual que 7. Lo mismo se
>> cumple para cualquier otro número. Siempre uno de los factores será menor o
>> igual que su raíz cuadrada. Por lo tanto, no tiene sentido que el ciclo
>> vaya más allá.
>>
>> Saludos.
>>
>> Walter.
>>
>>
>>
>> 2011/11/20 claudio canepa <ccanepacc en gmail.com>
>>
>>>
>>>
>>> 2011/11/20 Javier Marín <nano.world.contact en gmail.com>
>>>
>>>> Bueno chicos, apenas comienzo con esto y ando dandome tumbos con el
>>>> lenguaje, aunque me gusta. Ya tengo azules a los muchachos de un foro y
>>>> tampoco es idea hacerles Spam, ni tampoco a ustedes, así que me limito con
>>>> mis preguntas.
>>>>
>>>> No conozco bien los bucles en python y ando practicando, tengo dos
>>>> problemas propuestos:
>>>>
>>>> El primero es hacer una multiplicación con sumas sucesivas, osea 2*3 =
>>>> 2+2+2.
>>>>
>>>> Hice el código más o menos así:
>>>>
>>>> #-*- coding: utf-8 -*-
>>>> a = int(raw_input('Ingrese un número: '))
>>>> b = int(raw_input('Ingrese otro número: '))
>>>> s = 0
>>>> while s <= a:
>>>> s = s+b
>>>> print s
>>>>
>>>>
>>>> Muy sencillito, pero solo me recorre dos veces el bucle o 3, pero nunca
>>>> me da el resultado. Había visto un poco la estructura de control For in
>>>> pero según entiendo es para recorrer listas tuplas o diccionarios.
>>>>
>>>>
>>> Tu programa hace una cosa diferente que 'sumar b (a veces)'
>>> Reemplaza s por 'subtotal' y te va a resultar claro que la expresion del
>>> while no tiene sentido.
>>>
>>>
>>>
>>>> El segundo problema es también un poco fastidioso para mi siendo
>>>> novato, es leer un número y decir si es primo o no imprimiendo por
>>>> pantalla. Un numero primo es aquel numero natural únicamente divisible
>>>> entre 1 y el mismo. De este aún no he hecho mucho porque no tengo mucha
>>>> idea de como hacerlo, lo hice en C pero no es lo mismo.
>>>>
>>>> Alguna sugerencia o explicación? Gracias por adelantado a todos.
>>>>
>>>>
>>> Lo primero es tener en claro que se quiere escribir.
>>> Una descripcion simple para el caso de los primos seria:
>>>
>>> n es primo si y solo si ningun entero k con 1<k<n divide con resto cero
>>> a n
>>>
>>> Y como lo paso a python ?
>>>
>>> recorrer los k con 1 <k < n lo hago con for y xrange:
>>>
>>> for k in xrange(2, n):
>>>
>>> 'k divide a n' en python seria n%k==0 , que se lee como ' el resto de
>>> dividir n por k es igual a cero'
>>>
>>> y si algun k divide a n , entonces n no es primo
>>> si ningun k divide a n , n es primo
>>>
>>> Entonces, como escribirias una funcion es_primo(n) ?
>>>
>>> El caso n=1 es especial, hay que agregar un if para manejarlo.
>>>
>>>
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>>
>> --
>> Hay 10 clases de personas. Las que conocen aritmética binaria y las que
>> no.
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
>
> --
> Nano.
> @_nanodice_
> Blog: nano-dice <http://nano-dice.blogspot.com>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>




Si querés saber si n es primo basta con buscar divisores hasta la raíz de
n. Entonces el límite superior del for es la raíz de n.


algo así:


for k in xrange(2,int( math.sqrt(n)+1)):

sqrt(n) es la raíz de n
el int() es para convertir la raíz que es un float a entero y el +1 es para
incluir el resultado en el loop.

Saludos, Adrián.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111120/7d6908be/attachment.html>


More information about the pyar mailing list