consulta ejercicio 17 y 20

consulta ejercicio 17 y 20

de CEMINO MARTINEZ, Fabrizzio -
Número de respuestas: 7

Una consulta en el ejercicio 17 de ingresar 2 cadenas e imprimir true si la primera cadena precede a la segunda me da todo bien menos en la ultima entrada. 

En el ejercicio 20 tengo bien el programa menos la parte de print en la cual tengo que generar 20 espacios en las variables a,b y c. Me podrían ayudar sobre como colocar los 20 espacios?

Muchas gracias

En respuesta a CEMINO MARTINEZ, Fabrizzio

Re: consulta ejercicio 17 y 20

de MADOERY, PABLO GUSTAVO -
Hola Fabrizzio.

Ejercicio 17:
Cuando la consigna dice: "Para la comparación se considera que las letras mayúsculas y minúsculas son equivalentes." eso significa que tenes que considerar una letra minuscula ('a') con el mismo orden que una letra mayúscula ('A'). Python no hace eso por defecto, por lo que tenes que usar el método .lower() o .upper() para llevar ambas cadenas a minusculas o a mayusculas.
El otro tema es que en este práctico no hace falta utilizar las instrucciones if. Si vos ejecutas lo siguiente print x > y se va a imprimir True o False dependiendo de si se cumple o no la condición de que x sea mayor a y.

Ejercicio 20:
La sintaxis del print es asi:
print "texto de ejemplo %s" % (variable ó literal)
Fijate que entre paréntesis tenes que poner una variable (en tu ejemplo puede ser a, b o c) o un literal (que puede ser una cadena entre comillas).
Si pones una variable el print va a imprimir el valor de esa variable. Si pones un literal, el print va a poner exactamente ese literal.
En tu caso hay un error porque vos estas diciendo con el "%20.3f" que vas a poner un flotante entre paréntesis, mientras que estas pasando un literal (cadena de texto).

Fijate si con estas ayudas sale y si no volvé a escribir.
Saludos
En respuesta a MADOERY, PABLO GUSTAVO

Re: consulta ejercicio 17 y 20

de CEMINO MARTINEZ, Fabrizzio -
buenas tardes, en el ejercicio 17 probé como usted me había dicho y en los resultados me da que esta todo bien menos en la ultima que en la entrada aparece los nombres Pedro y Andres que me tiene que dar false pero me da true y no se como corregir eso porque en teoría tendria que darme false pero el progrma me tira un true
En respuesta a CEMINO MARTINEZ, Fabrizzio

Re: consulta ejercicio 17 y 20

de MADOERY, PABLO GUSTAVO -
Hola Fabrizzio.
Te recomiendo un par de acciones para poder resolver el problema:
1) Fijate de probarlo en el Python Tutor y ver que valores toman las variables cadena1 y cadena2 luego de que aplicas el método lower.
2) Fijate en el libro o en los videos de las clases como hay que utilizar esos métodos para poder modificar efectivamente el valor de una variable.

Proba eso y si no sale volvé a escribir por aqui.
Saludos
En respuesta a MADOERY, PABLO GUSTAVO

Re: consulta ejercicio 17 y 20

de CEMINO MARTINEZ, Fabrizzio -
ahora probé y el programa me da true por el hecho de que la palabra "pedro" es mas corta que "andres" entonces me da True en vez de False. No se como corregir ese error
En respuesta a CEMINO MARTINEZ, Fabrizzio

Re: consulta ejercicio 17 y 20

de MADOERY, PABLO GUSTAVO -
Fabrizzio,

Van algunas consideraciones:

1) Cuando la consigna dice "El programa debe imprimir True si la primera cadena PRECEDE a la segunda en orden alfabético", eso quiere decir que el programa tiene que imprimir True si la primera cadena está ANTES en orden alfabético. Para eso se utiliza el operador < entre las dos cadenas. Podes verlo en el libro.

2) Cuando se ejecuta la instrucción:
cadena1.lower()
no se está modificando el valor de cadena1 porque lo que hace el método es convertir a minúsculas el valor de cadena1 y DEVOLVERTE una copia de ese valor convertido en minusculas. El valor de cadena1 NO se esta modificando.
si vos ejecutas esta otra instruccion:
x = cadena1.lower()
vas a tener en x el valor de cadena1 convertido a minusculas.
Fijate como usas esto para tener realmente en cadena1 y en cadena2 el texto convertido en minusculas.
Podes corroborar en PythonTutor que valores toman las variables cuando haces cada cosa. (https://pythontutor.com/visualize.html#mode=edit)

3) La forma en que Python define el operador < entre cadena1 y cadena 2 es asi:
Primero se obtiene el codigo ASCII (numero) de la primera letra de cadena1 y se compara con el codigo ASCII (numero) de la primera letra de cadena2.
Si el primer numero es menor que el segundo numero ya se retorna True. Si el primer numero es mayor que el segundo numero se retorna False.
Si son iguales se hace el mismo procedimiento con las siguientes letras de cada cadena.
Si haciendo este procedimiento te quedas sin letras de la primera cadena, se retorna True.
Si haciendo este procedimiento te quedas sin letras de la segunda cadena, se retorna False.