• No se han encontrado resultados

Trata siempre de documentar tus funciones, pues es ayuda para el usuario.

N/A
N/A
Protected

Academic year: 2021

Share "Trata siempre de documentar tus funciones, pues es ayuda para el usuario."

Copied!
18
0
0

Texto completo

(1)

TAREA 5

Nombre: Fecha: Matricula: Grupo: Problema 1.

Parte 1: Tipos de funciones

Para cada una de las siguientes funciones, especifique el tipo de dato de la salida. Se puede asumir que cada función es llamada con el argumento apropiado, tal como lo especifica su documentación. Si el resultado puede ser un entero o un flotante, seleccione “num”, que no es un tipo de dato de Python, pero indicaremos con esto que ambos tipos (int y float) son validos.

En Python los tipos de datos booleanos True y False pueden ser operado como si fueran los números enteros 1 y 0, respectivamente, pero no es tan bueno y es confuso (Pruebe en el shell con la siguiente instrucción >>> True+5 ).

¿Que son las líneas de bajo de las definiciones de las funciones? En este y otros problemas, la definición de las funciones se ve así: def a(x):

'''

x: int or float. '''

return x + 1

Que son las lineas entre def a(x): y return x + 1? Estas lineas son llamadas la documentación de la función (en ingles sería docstring of the function). La documentación de la función es un tipo especial de comentarios que son usados para especificar que es lo que hace la función. Típicamente, la documentación explica que tipo de datos espera la función como argumentos y cual es el tipo de valor de regreso (si es que la función regresa un valor).

En Python, la documentación de la función aparece inmediatamente después de la linea def y antes del cuerpo de la función. La documentación comienza y termina con tres comillas – estas pueden ser sencillas o dobles. Una forma de hacer una buena documentación sería la siguiente:

def Mi_Suma(x,y): """

(int o float, int o float) --> int o float #Especificamos los Argumentos de entrada y regreso Regresa el valor de la suma de la variable “x” y la variable “y” #Descripción

>>>Mi_Suma(3.6,2) #Ejemplos 5.6 >>>Mi_Suma(7,-3) 4 """ return x+y

(2)

1.1.1 def a(x): ''' x: int or float. ''' return x + 1

Indica el tipo de dato de salida que tendrá la función a. NoneType Num Int Float Boolean 1.1.2 def b(x): ''' x: int or float. ''' return x + 1.0

Indica el tipo de dato de salida que tendrá la función b. NoneType Num Int Float Boolean 1.1.3 def c(x, y): ''' x: int or float. y: int or float. ''' return x + y

Indica el tipo de dato de salida que tendrá la función c. NoneType

Num Int Float Boolean

(3)

1.1.4 def d(x, y): '''

x: Can be of any type. y: Can be of any type. '''

return x > y

Indica el tipo de dato de salida que tendrá la función d. NoneType Num Int Float Boolean 1.1.5 def e(x, y, z): '''

x: Can be of any type. y: Can be of any type. z: Can be of any type. '''

return x >= y and x <= z

Indica el tipo de dato de salida que tendrá la función e. NoneType Num Int Float Boolean 1.1.6 def f(x, y): ''' x: int or float. y: int or float ''' x + y - 2 1.1.7

Indica el tipo de dato de salida que tendrá la función f. NoneType

Num Int Float Boolean

(4)

Parte 2:

Asuma que las funciones de la Parte 1 han sido definidas y que se ejecutan las siguientes instrucciones en el shell de Python. Indique el tipo de dato y el valor que es desplegado, si la evaluación causa un error seleccione como tipo de dato NoneType y escriba la palabra 'error' en el cuadro de respuesta. Si el valor de una expresión es una función, seleccione function como tipo de dato y escriba 'function' en el cuadro de respuesta. 1.2.1 a(6) NoneType Num Int Float Boolean Function 1.2.2 a(-5.3) NoneType Num Int Float Boolean Function 1.2.3 a(a(a(6))) NoneType Num Int Float Boolean Function

(5)

1.2.4 c(a(1), b(1)) NoneType Num Int Float Boolean Function 1.2.5 d('apple', 11.1) NoneType Num Int Float Boolean Function 1.2.6 e(a(3), b(4), c(3, 4)) NoneType Num Int Float Boolean Function 1.2.7 f NoneType Num Int Float Boolean Function

(6)

Problema 2.

Asuma que se ejecutan las siguientes instrucciones en el shell de Python. Indique el tipo de dato y el valor que es desplegado, si la evaluación causa un error seleccione como tipo de dato NoneType y escriba la palabra 'error' en el cuadro de respuesta. Como siempre trate de resolver el problema a mano antes de ver la respuesta en un interprete de Python.

Asuma que se ha definido las siguientes funciones: def a(x, y, z): if x: return y else: return z def b(q, r): return a(q>r, q, r) 2.1 a(False, 2, 3) NoneType Int Float Boolean Function 2.2 b(3, 2) NoneType Int Float Boolean Function

(7)

Problema 3

Escribe la función “square” que tome un numero y regrese el cuadrado de ese número. Respuesta def square(x): ''' x: int or float. ''' Problema 4

Escriba una función Python, evalQuadratic(a, b, c, x), que regrese el valor de la siguiente ecuación:

ax2+bx+c

Esta función toma cuatro números y regresa un solo resultado

def evalQuadratic(a, b, c, x): '''

a, b, c: numerical values for the coefficients of a quadratic equation x: numerical value at which to evaluate the quadratic.

(8)

Problema 5

Escribe una función, clip(lo, x, hi) que regrese lo si x es menor que lo; hi si x es mayor que hi; y x en otro caso. Para este problema puedes asumir que lo < hi.

No se permite utilizar instrucciones condicionales para este problema (if -elif-else). En su lugar, utilice las funciones de Python min y max. Es posible que desee leer la documentación de min y la documentación de max, y practicar con estas funciones para usarlas correctamente antes de comenzar con este problema.

Esta función toma tres números y regresa solo un numero. def clip(lo, x, hi):

'''

Takes in three numbers and returns a value based on the value of x. Returns:

- lo, when x < lo - hi, when x > hi - x, otherwise '''

(9)

Problema 6

Asuma que se ejecutan las siguientes instrucciones en el shell de Python. Proporcione el tipo y el valor de las expresiones que se evalúan. Si la evaluación de una expresión causara un error, seleccione NoneType y escribir en el espacio de respuesta la palabra 'error'. Si el resultado es una función, seleccione la función y escribir "función" en el espacio de la respuesta.

Para sacar el mayor provecho de este problema, trata de averiguar las respuestas mediante la lectura del código, no ejecutándolo. Ejecute el código en su intérprete sólo después de haber comprobado sus respuestas un par de veces.

6.1 >>> a = 10 >>> def f(x):       return x + a >>> a = 3 >>> f(1) NoneType Num Int Float Boolean Function 6.2 >>> x = 12 >>> def g(x):       x = x + 1       def h(y):       return x + y       return h(6) >>> g(x) NoneType Num Int Float Boolean Function

(10)

Problema 7

Escriba el valor de la expresión que se presenta a continuación. Para sacar el mayor provecho de este problema, trata de averiguar las respuestas mediante la lectura del código, no ejecutándolo. Ejecute el código sólo después de que haya revisado varias veces sus respuestas.

7.1 def foo(x): def bar(x): return x + 1 return bar(x * 2) foo(3) Respuesta 7.2 def foo (x): def bar (z): return z + x return bar(3) foo(2) Respuesta:

(11)

Problema 8

Escribe una función en Python, fourthPower, que tome un número y regrese el valor elevado a su 4a potencia.

Debes usar la función square que definiste en el Problema 3 (Es necesario re-definir la función square en el cuadro de respuesta).

Esta función toma un número y regresa un número Respuesta:

def fourthPower(x): '''

x: int or float. '''

# Your code here

Problema 9

Escribe una función de nombre odd, que tome un número y regrese True cuando el número es impar y False cuando no lo sea.

Debe emplear el operador %, no usar if. Esta función toma un número y regresa un booleano. Respuesta:

def odd(x): '''

x: int or float.

returns: True if x is odd, False otherwise '''

(12)

Problema 10

Defina la función, isVowel(char), que regrese True si la variable char es una vocal ('a', 'e', 'i', 'o', 'u'), y False en caso contrario. Puedes asumir que el char es una sola letra ya sea minúscula o mayúscula (pe, 'A' y 'a' las dos son validas y así para las demás vocales).

No emplee la palabra in. Su función debe tomar una cadena simple (de un solo elemento) y regresar un booleano.

Respuesta:

def isVowel(char): '''

char: a single letter of any case

returns: True if char is a vowel and False otherwise. '''

# Your code here

(13)

Problema 11

Defina la función, isVowel2(char), que regrese True si la variable char es una vocal ('a', 'e', 'i', 'o', 'u'), y False en caso contrario. Puedes asumir que el char es una sola letra ya sea minúscula o mayúscula (, 'A' y 'a' las dos son validas y así para las demás vocales).

Esta función es similar a la anterior pero en este caso debe emplear in . Su función debe leer una cadena simple (de un solo elemento) y regresar un booleano.

Respuesta:

def isVowel2(char): '''

char: a single letter of any case

returns: True if char is a vowel and False otherwise. '''

(14)

Problema 12

En Python podemos identificar a los tipos de datos con el nombre genérico de objeto (Objetos tipo entero, objetos tipo flotante, objetos tipo cadenas de caracteres, objetos tipo listas, etc.). Los objetos son especiales porque tienen asociadas funciones, nos referimos a estas funciones como métodos del objeto. En este problema se trabajará con objetos tipo cadena de caracteres y sus métodos asociados. Una descripción completa de los métodos disponibles para los objetos de cadena de caracteres se puede encontrar en Python library reference on string methods. Otro recurso útil sobre los métodos de las cadenas de caracteres se encuentra aquí.

Este ejercicio tiene como objetivo que adquiera experiencia usando métodos. Lo más conveniente para emplear métodos de objetos es usando la notación "dot", entonces si s es una cadena de caracteres, al evaluar la expresión s.capitalize regresara que es un método para el objeto tipo cadena de caracteres, y evaluando s.capitalize() el método se ejecutara sobre la cadena s (en este caso se devuelve una nueva cadena, ya que las cadenas son inmutables). Un ejemplo de esto:

>>> s = 'abc' >>> s.capitalize

<built-in method capitalize of str object at 0x104c35878> >>> s.capitalize()

'Abc'

Para cada una de las expresiones de este problema, especifique el tipo y el valor. Si se genera un error, seleccione el tipo de 'NoneType " y escriba la palabra"error " en el espacio para la respuesta. Si el resultado es una función, seleccione como tipo "function" tipo y escriba la palabra "function" en el espacio para la respuesta.

Suponemos que hemos hecho las siguientes asignaciones: > str1 = 'exterminate!'

> str2 = 'number one - the larch'

Supóngase que las expresiones se evalúan en el orden mostrado – esto es, cada parte se evalúa directamente después de la parte anterior definida.

12.1 str1.upper NoneType Int Float Boolean Function String

(15)

12.2 str1.upper() NoneType Int Float Boolean Function String 12.3 str1 NoneType Int Float Boolean Function String 12.4 str1.isupper() NoneType Int Float Boolean Function String 12.5 str1.islower() NoneType Int Float Boolean Function String

(16)

12.6 str2 = str2.capitalize() str2 NoneType Int Float Boolean Function String 12.7 str2.swapcase() NoneType Int Float Boolean Function String 12.8 str1.index('e') NoneType Int Float Boolean Function String 12.9 str2.index('n') NoneType Int Float Boolean Function String

(17)

12.10 str2.find('n') NoneType Int Float Boolean Function String 12.11 str2.index('!') NoneType Int Float Boolean Function String 12.12 str2.find('!') NoneType Int Float Boolean Function String

Nota: Observe la diferencia entre el metodo find y el metodo index

12.13 str1.count('e') NoneType Int Float Boolean Function String

(18)

12.14 str1 = str1.replace('e', '*') str1 NoneType Int Float Boolean Function String 12.15 str2.replace('one', 'seven') NoneType Int Float Boolean Function String

Referencias

Documento similar

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

De acuerdo con Harold Bloom en The Anxiety of Influence (1973), el Libro de buen amor reescribe (y modifica) el Pamphihis, pero el Pamphilus era también una reescritura y

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

D) El equipamiento constitucional para la recepción de las Comisiones Reguladoras: a) La estructura de la administración nacional, b) La su- prema autoridad administrativa

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación