Crea una función que reciba un número como un string y lo devuelva como un entero. ¿Qué pasa si el string no representa un número? ¿Puedes hacer que devuelva flotantes también? Por ejemplo:
'12' -> 12
'45' -> 45
'3.14159' -> 3.14159
https://platzi.com/blog/como-aprender-a-programar-desde-cero-platzi/
defto_int(str):try: return int(str) except: try: return float(str) except: returnNone print(to_int("3.1416")) print(to_int("Hola")) print(to_int("10"))
Reto 53 en JavaScript y en Python:
// Coercion en JavaScriptfunctionStringToNumber(numberSt) { const chars = numberSt.split('') // Si tiene caracteres que no son números o un puntoif (!chars.every(char => (parseInt(char) >=0 && parseInt(char) <= 9) || char === '.')) { return'Esto no es un número' } // Si tiene más de un puntoif (chars.filter(char => char === '.').length > 1) { return'Esto no es un número' } returnparseFloat(numberSt) } console.log(StringToNumber('12')) // 12console.log(StringToNumber('45')) // 45console.log(StringToNumber('3.14159')) // 3.14159console.log(StringToNumber('3.141.59')) // Esto no es un númeroconsole.log(StringToNumber('Hola')) // Esto no es un número
# Coercion en PythondefStringToNumber(numberSt):try: numberFloat = float(numberSt) if numberFloat == int(numberFloat): return round(numberFloat) else: return numberFloat except: return'Este no es un número' print(StringToNumber('12')) # 12 print(StringToNumber('45')) # 45 print(StringToNumber('3.14159')) # 3.14159 print(StringToNumber('3.141.59')) # Este no es un número print(StringToNumber('Hola')) # Este no es un número
En Python 😃
minusculas=('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') mayusculas=('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') defmain(entrada): cont=0for caracter in entrada: if caracter in minusculas or caracter in mayusculas: print('ESTO ES UN TEXTO') breakelse: cont=cont+1if cont!=0: numero(entrada) else: passdefnumero(entrada):if'.'in entrada: entrada=float(entrada) print(f'Esto es un decimal {entrada}') #breakelse: entrada=int(entrada) print(f'Esto es un entero {entrada}') #breakif __name__ == '__main__': entrada=input('Ingresa tu numero: ') entrada=str(entrada) main(entrada)
Resultado hecho con html, un poco de css y js
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Coerción</title></head><style> * { margin: 0; } .contenedor { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; } .inputs { display: flex; flex-flow: column; align-items: center; padding: 2rem; } .section { padding: 0.25rem2rem; display: flex; align-items: center; } .sectioninput, .sectionspan{ margin-left: 12px; font-weight: bold; } .btn { border: 2px solid black; border-radius: 6px; cursor: pointer; padding: 20px; } </style><body><divclass="contenedor"><h1style="margin-bottom: 24px;">De texto a número</h1><divclass="inputs"><sectionclass="section"> Ingresa el string que deseas transformar a número <inputid="num"placeholder="número"/></section><sectionclass="section"> Revisa la consola para ver el resultado </section></div><buttononclick="transformar()"class="btn">Transformar...</button></div><script>functiontransformar() { let num = document.getElementById('num').value if (num.includes('.')){ num = parseFloat(num) } else { if (isNaN(num)){ alert('Eso no es un número, pero te regresaré tu parrafo en código ASCII, revisa la consola c:') let array = num.split('') let charCode = [] array.map(letter => { charCode.push(letter.charCodeAt(0)) }) console.log(charCode) } else { num = parseInt(num) } } } </script></body></html>