The Python Challenges
el regreso
Reto #2: Decimales de Pi
(https://cdn.pixabay.com/photo/2016/04/19/12/59/pi-1338548_960_720.jpg)
La idea de este reto es implementar un script capaz de retornar el n-ésimo decimal de Pi sin calcularlo sino usando esta página: http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html (http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html)Consideraciones
- Se pide obtener los decimales, por lo que el primer 3 no cuenta
- La función recibirá un argumento (posición) indicando el primer decimal a obtener, este será el primer argumento pasado a la función. Tener en cuenta que posición=0 no representa nada, por lo que la función deve devolver None y posición=1 indica el primer número decimal
- Opcionalmente, la función recibirá un segundo argumento (cantidad) que indicará la cantidad de dígitos a obtener a partir de la posición indicada en el primer argumento
- si el argumento posición es mayor que la cantidad de decimales que proporciona la página, la función debe devolver None
Ejemplos
pi(1) -> 1
pi(1, 3) -> 141
pi(14, 2) -> 93
pi(0) -> None
Reglas
- TODAS las dudas hacerlas en este post, así si algo no queda claro es aclarado para todos los participantes a la vez. Así que bajo ninguna circunstancia se resuelven dudas por privado
- La solución debe estar escrita en Python 3.*
- Seguir en la medida de lo posible las PEP8
- La elegancia de la solución otorga puntos extra
- Cumplir con la plantilla. (La calificación la hace un bot por lo que es importante seguirla), el no cumplimiento de la plantilla acarrea una sanción en tiempo.
- El resultado retornado por la función debe ser un entero, no lista ni string.
Plantilla
def pi(posicion, cantidad=None):
resultado = 0 # Resultado a retornar
return resultado # Retornamos el resultado
if __name__ == "__main__":
# Hacer las pruebas del scrip
# en este bloque para no interferir
# con la calificación del bot
pi(1) # ejemplo de llamada a la función
Ayuda
- urllib (https://docs.python.org/3/library/urllib.html)
Calificación
[/b]
Este reto lo gana el script más rápido
Recomendación: Hacer lo que se pide y preferiblemente evitar los prints puesto que consumen tiempo y el bot sólo califica lo que retorna la función.
NOTA: Para este reto se penalizarán la cantidad de librerias externas utilizadas.
Enviar la solución por mp a @Once el reto cierra el domingo a las 11:59PM hora Colombiana
Happy codingSaludos.
*Reservado para las soluciones*
Hola, me surge la siguiente duda
Al incumplir esta medida del PEP8
Maximum Line Length
Limit all lines to a maximum of 79 characters.
https://www.python.org/dev/peps/pep-0008/#maximum-line-length (https://www.python.org/dev/peps/pep-0008/#maximum-line-length)
¿Se aplica penalización?
Gracias
Hola
@larry852 (https://underc0de.org/foro/index.php?action=profile;u=50833)si no puedes acortar la longitud de la línea, no hay problema, como dice el post, la idea es cumplirlas cuando sea posible (no siempre se pueden cumplir todas) además, la idea de incluir las PEP8 la calificación es solo para que los que se animen a participar sepan que existen y por lo menos las lean, así se van acostumbrando a escribir código un poco más "standard" y mucho más legible.
Aprovecho para aclarar, para todos los participantes que las normas que no se deben incumplir son:
- Identación a cuatro espacios (https://www.python.org/dev/peps/pep-0008/#indentation)
- Importación de módulos (https://www.python.org/dev/peps/pep-0008/#imports)
- Uso de los espacios, aclaro, sólo tendré en cuenta no usarlo como en el último ejemplo:
nunca hacer esto: (https://www.python.org/dev/peps/pep-0008/#pet-peeves)
x = 1
y = 2
long_variable = 3
Gracias por la pregunta y organizaré más esta parte para que quede más claro en el próximo reto.
Saludos!