🔺10.4 Ejercicios resueltos de funciones - Curso de programación desde cero (con Python)

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ต.ค. 2024
  • 👌 Si este video te resulta útil y quisieras dar tu apoyo (¡gracias! ❤️):
    ➡️ cafecito.app/p...
    o ➡️ www.paypal.me/...
    #10.4: EJERCICIOS RESUELTOS DE FUNCIONES:
    Definición e implementación de funciones. Uso de las funciones en un programa. Invocación de una función desde dentro de otra.
    0:42 - Función para validar un número de DNI
    9:14 - Función para contar caracteres de la última palabra de un string.
    28:53 - Programa con varias funciones. Llamada a una función desde otra función.
    40:29 - Función que, dado un número, retorna sus primeros 3 dígitos.
    Para ver el código de los ejercicios mostrados en este video:
    github.com/pro...
    En la comunidad del canal podrás encontrar resúmenes y material que puede serte útil para comprender mejor estos conceptos: / programaciondesdecero
    En este curso gratis para aprender a programar utilizaremos Python como lenguaje de programación y aprenderemos los conceptos básicos que luego podremos utilizar en otros lenguajes populares.
    Para saber cómo descargar e instalar Python, accede a este video: • 💻 Cómo instalar Python...
    ¿Te gustaría aprender a programar para crear aplicaciones, convertirte en un profesional o utilizarlo como herramienta en tu trabajo? Esta serie de videos te permitirá empezar a programar desde 0 y crear tus primeros programas de forma básica y sencilla.
    Es importante que, además de ver los videos, intentes resolver los ejercicios. Para eso utiliza la pausa, analiza los problemas planteados y luego verifica la solución con el video.

ความคิดเห็น • 74

  • @Pablo_Escalona
    @Pablo_Escalona 3 ปีที่แล้ว +2

    Tienes un don especial para explicar! Magnífico tu trabajo, tremendo aporte, te felicito. Saludos desde Chile.

  • @Obishman
    @Obishman 5 ปีที่แล้ว +6

    Bien!! creo que por primera vez terminé con un código tan compacto o mas que el tuyo, se me ocurrió usar la función strip para eliminar los espacios al principio y final:
    def palong(ffrase):
    long=0
    ffrase=ffrase.strip()
    for i in range(len(ffrase)):
    if ffrase[i]!=" ":
    long+=1
    else:
    long=0
    return long
    frase=input("Ingrese una frase: ")
    print("long de la última palabra: ", palong(frase))

  • @rudydd2
    @rudydd2 2 ปีที่แล้ว +1

    Excelente explicación, no tuve la vision de reutilizar algunas funciones pero, si funciona el codigo que realize.
    Ultimo programa del video.
    def DNIvalido(dni):
    cantidad=0
    while dni != 0:
    cantidad = cantidad + 1
    dni=dni//10

    return cantidad == 7 or cantidad == 8
    def primerNombre(longitud, cadena):
    auxiliar = " "
    nomAux=""
    for i in range(longitud):
    if auxiliar == cadena[i]:
    break
    else:
    nomAux = nomAux + cadena[i]
    return nomAux
    def apellido(longitud2, cadena2):
    auxiliar2 = " "
    apellidoAux = 0
    cadena2 = cadena2[::-1]
    for i in range(longitud2):
    if auxiliar2 == cadena2[i]:
    break
    else:
    apellidoAux = apellidoAux + 1
    return apellidoAux
    nombreCompleto = input('Ingrese el nombre del socio en el siguiente formato nombre1/nombre2/apellido: ')
    while nombreCompleto != "":
    nombreCompleto = nombreCompleto.strip()
    tamañoNombreCompleto = len(nombreCompleto)
    numero = int(input("Ingrese el DNI del socio: "))
    while DNIvalido(numero) == False:
    numero = int(input("El DNI es incorrecto ingreselo nuevamente: "))
    nombre = primerNombre(tamañoNombreCompleto,nombreCompleto)
    longitudApellido = apellido(tamañoNombreCompleto,nombreCompleto)
    print(nombreCompleto)
    print(numero)
    print(nombre+str(longitudApellido)+(str(numero)[0:3]))
    nombreCompleto = input('Ingrese el nombre del socio en el siguiente formato nombre1/nombre2/apellido: ')

  • @beerbaron9802
    @beerbaron9802 3 ปีที่แล้ว +2

    Muy bueno. Y la explicación sublime.

  • @marianofares9694
    @marianofares9694 4 ปีที่แล้ว +3

    Muy bueno! el problema de mostrar la longitud de la última palabra lo pensé de este modo y me funcionó igual (Solo pongo la función):
    def largoFrase(frase):
    frase=frase.strip()
    indice=frase.rfind(" ")
    ultimaPalabra=frase[indice+1:]
    return len(ultimaPalabra)

    •  3 ปีที่แล้ว +4

      Si bien el ejemplo que dio Mariano está perfecto, en este curso me centré en enseñar a crear nuestros propios algoritmos, usando lo menos posible las herramientas que nos dan "pre-armadas" los lenguajes de alto nivel. Aunque en una situación real escribiríamos algo más similar a lo que él propuso, la idea de este video es que aprendamos a crear nuestras soluciones dependiendo del lenguaje lo menos posible 😊.

  • @JoseAvalos-hc9ui
    @JoseAvalos-hc9ui 4 ปีที่แล้ว +3

    Simplemente genial!. Te ganaste un nuevo suscriptor!.

  • @nimodoxd4739
    @nimodoxd4739 4 ปีที่แล้ว +1

    FELICICDADES POR FIN ALGUIEN QUE SABE EXPLICAR

  • @victorpalmaleon2204
    @victorpalmaleon2204 2 ปีที่แล้ว

    excelente video! el segundo lo hice de esta manera
    def lenUltimaPalabra(frase):
    cantidad= len(frase)
    return cantidad
    phrase= input("Ingrese frase : ").strip()
    x=phrase.split(" ")
    result = lenUltimaPalabra(x[-1])
    print("longitud de ultima palabra es : ",result)

  • @eduardomartinez4954
    @eduardomartinez4954 4 ปีที่แล้ว +1

    Hola. En el ejercicio de contar los caracteres de la última palabra de una frase, a mí se me ocurrió "dar vuelta" la frase (me pareció divertido).
    def long_palabra(frase):
    frase = frase.strip()
    frase = frase[::-1]
    cantidad = 0
    for c in frase:
    if c != " ":
    cantidad += 1
    else:
    break
    return cantidad
    # Programa principal
    cadena = input("Ingrese una frase: ")
    print("Última palabra:", long_palabra(cadena), "caracteres.")

    •  4 ปีที่แล้ว +1

      Hola Eduardo 🙂 Sí, por supuesto es otra alternativa válida. ¡Bien pensado! Solo tené en cuenta que esto de invertir la cadena no es algo que existe en todos los lenguajes. Pero, mientras el lenguaje lo permita, podemos utilizar todas las herramientas que nos provee 👍

  • @marcelanaranjo4906
    @marcelanaranjo4906 3 ปีที่แล้ว +1

    Hola! mi solución fue esta
    def validaID():
    numero = input('Digite su identificación: ')
    if len(numero)>=7 and len(numero)

  • @nicolaschaparro5164
    @nicolaschaparro5164 2 ปีที่แล้ว +1

    te puedo decir que sos una genia???

  • @David-cg6ew
    @David-cg6ew 3 ปีที่แล้ว +2

    # MI PRIMER EJERCICIO SIN VER u.u psdta: Gracias a ti, pude entender :3
    def validar_dni(dni):
    if dni.isdigit:
    val = len(dni)
    if val==8 or val ==7:
    return True
    else:
    return False
    num_dni = input("Digite su número de DNI:")
    if validar_dni(num_dni):
    print("¡El número de DNI es valido!")
    else:
    print("¡El número de DNI es invalido!")

    • @leonardovioliorrantia8286
      @leonardovioliorrantia8286 2 ปีที่แล้ว

      Una solución muchísimo más simple y lógica !
      Una pregunta , aquí estás tratando “dni “ cómo un str verdad?

    •  2 ปีที่แล้ว

      La "simpleza" es algo muy subjetivo en este caso, ya que al usar "isdigit" estamos dependiendo de otra función incluida en el lenguaje en lugar de crear una función propia que, en este caso, es el objetivo del video (en este ejemplo la función solo depende de operaciones matemáticas que todo procesador y todo lenguaje permite hacer). La idea con este curso es aprender a programar desde cero y no aprender python, por eso prioricé la creación de un algoritmo que no utilice funciones ya existentes.

  • @drUnk-k3p
    @drUnk-k3p 3 ปีที่แล้ว +1

    Hola, creo que para el segundo ejercicio es más práctico definir:
    def lenLast(s):
    p = s.split()
    return len(p[-1])
    Aunque probé con varias cadenas y sí funcionó, no estoy seguro de si funciona perfectamente igual al código de este vídeo

    •  3 ปีที่แล้ว

      ¡Hola! Si bien es una opción posible, el objetivo de este curso no es buscar la forma más práctica de resolverlo sino generar nuestros propios algoritmos para desarrollar esta habilidad y poder transferirla a cualquier lenguaje, incluso alguno que no cuente con el método "split".

  • @bluedrawde2
    @bluedrawde2 ปีที่แล้ว +1

    def validacionDNI(n):
    c=0
    while n!=0:
    digito=n%10
    c=(digito-digito+1)+c
    n=n//10
    if c==7 or c==8:
    return True
    return False
    numero=int(input("ingrese su DNI:"))
    print("el dni es:",validacionDNI(numero))

  • @distasiopropiedades
    @distasiopropiedades 4 ปีที่แล้ว +1

    Validar dni, (ingresando INT para q en el programa sea numerico, y pasandolo a STR para la funcion)
    def validaDni(numero):
    numero=str(numero)
    if len(numero)==7 or len(numero)==8:
    return True
    return False
    dni=int(input("Ingrese dni: "))
    print(validaDni(dni))

    • @nicolasmadariaga3378
      @nicolasmadariaga3378 3 ปีที่แล้ว

      Lo pensé igual, solo que retornando:
      return longitud == 7 or longitud == 8,
      te evitas el if.
      Bien Pensado Nicolas...

  • @mariacelesterubinstein5965
    @mariacelesterubinstein5965 3 ปีที่แล้ว +1

    Muchas gracias por tus enseñanzas tan claras y accesibles!!! Quisiera saber por favor si estas dictando algun curso on line?

    •  3 ปีที่แล้ว

      ¡Hola! No aún. Estoy preparando un curso pero me va a llevar un tiempo hasta que pueda lanzarlo :)
      ¡Me alegro de que te gusten los videos!

  • @slackp8733
    @slackp8733 3 ปีที่แล้ว

    def count(text):
    palabra = []
    for n in text[::-1]:
    palabra.append(n)
    if n == " " and n[-1] != " ":
    break
    print(len(palabra) - 1)
    esta fue mi solucion al segundo ejercicio

  • @rudydd2
    @rudydd2 2 ปีที่แล้ว

    Para el segundo problema utilice la funcion strip para eliminar los espacio al inicio y al final de la cadenada, posterior inverti la cadena oara poder obtener la longitud de la ultima palabra.
    def longitud(palabra):
    cadena_sin_espacios = palabra.strip()
    cadena_invertida = cadena_sin_espacios[::-1]
    espacio = " "
    contador = 0
    while espacio != cadena_invertida[contador]:
    contador +=1
    return contador
    cadena = input("Ingrese el mensaje:")
    print("La longitud de la ultima palabra es de:", longitud(cadena),"caracteres")

  • @davidcordova1773
    @davidcordova1773 3 ปีที่แล้ว

    mi versión de la 3, aunque me costo mas de 7 horas la hice a mi modo:
    def nombres():
    print("========================================")
    nombre=input(""" Ingresa tu nombre completo
    ========================================
    """)
    nombres_separados=nombre.split()
    longitud=len(nombres_separados)
    if longitud==2:
    id_nombre=nombres_separados[0]
    cantidad_letras_apellido=len(nombres_separados[1])
    resumen(id_nombre,cantidad_letras_apellido)
    elif longitud==3:
    id_nombre=nombres_separados[0]
    cantidad_letras_apellido=len(nombres_separados[2])
    resumen(id_nombre,cantidad_letras_apellido)
    elif longitud==4:
    id_nombre=nombres_separados[0]
    cantidad_letras_apellido=len(nombres_separados[3])
    resumen(id_nombre,cantidad_letras_apellido)
    elif longitud >4:
    print("Escribe tu nombre bien, pendejo¡")
    nombres()

    elif longitud==1:
    print("Escribe tu nombre bien, pendejo¡")
    nombres()
    elif longitud==0:
    return 0

    def dni2():
    print("========================================")
    dni=input(""" Ingresa tu DNI
    este debe de tener entre 7 y 8 digitos
    ========================================
    """)
    if dni.isdigit()==True:
    contador=0
    for i in dni:
    if i!=" ":
    contador+=1
    if contador >=7 and contador

  • @RosmerParraVidal
    @RosmerParraVidal 3 ปีที่แล้ว

    def dni():
    cedula = input(print("
    Favor ingrese su numero de cedula: "))
    a = len(cedula)
    if a == 7 or a == 8:
    valor = True
    print(f"El numero ingresado es: {valor}
    ")
    print(f"La cantidad de caracteres es de: {a}
    ")
    else:
    valor = False
    print(f"El numero ingresado es :{valor}
    ")
    print(f"La cantidad de caracteres es de: {a}
    ")
    dni()
    Esta fue el codigo para resolver el ejercicio propuesto.

  • @brunomax001
    @brunomax001 3 ปีที่แล้ว

    Por que hace falta hacer un bucle dentro de la función para el primero ejericio, por ejemplo yo lo hice asi y es lo mismo:
    # en este caso asumo que los dni seran ingresado como string, por que almenos en mi pais siempre son 8digitos +1letra
    def DNI_valido(dni):
    return len(dni) >= 7 and len(dni)

    •  2 ปีที่แล้ว

      Cuidado: en ese caso estás pidiendo que la longitud sea 7 Y TAMBIÉN 8, lo cual es una contradicción lógica. Por otra parte, estás intentando obtener la longitud de un número, algo que len no permite hacer ya que opera sobre strings. Lo correcto sería convertir al número en string y luego obtener su longitud (algo como esto: len(str(dni)) donde primero convertimos a string y luego obtenemos su longitud) y en vez de "and" usar "or".
      Teniendo en cuenta esas consideraciones, no es incorrecta esa solución. Solo que opté por una que tuviera un algoritmo donde no dependiéramos de funciones dadas por el lenguaje (como es el caso de len) sino que tuviéramos que crear nuestra propia función.

  • @danielroberts8097
    @danielroberts8097 4 ปีที่แล้ว +2

    Sobre la ultima palabra, me funciona de la siguiente manera, pero no se si esta bien
    def longuitudultimapalabra(texto):
    if texto.strip()=='':
    return 'no se ingreso texto'
    else:
    listatexto=texto.split()
    return len(listatexto[-1])

    •  4 ปีที่แล้ว +1

      Sí, excelente 🙂

  • @Diego_-
    @Diego_- 3 ปีที่แล้ว +1

    Logré hacerlas todas pero con soluciones diferentes jaja

  •  5 ปีที่แล้ว +1

    ¿Dudas? ¿Preguntas sobre estos ejercicios? ¡Deja acá tu comentario!

    • @juanbanoscaro5955
      @juanbanoscaro5955 4 ปีที่แล้ว

      Hola, buenas tardes, como estás?
      Necesito que me expliques y ayudes a resolver este ejercicio en Python, que no he podido realizar, es el siguiente:
      El siguiente programa hace lo siguiente:
      a)Preguntar cuantos alumnos se tienen.
      b) Capturar 3 calificaicones de sus parciales por cada alumno y promediarlos.
      c) Se guarda en lista 1
      d) Se crea un bucle para decidir la calificación final, por ejemplo 8.6 sube a 9 y 8,4 baja a 8.
      e) Se imprimen las listas para compararlas.
      Este es el código:
      i=1
      lista = []
      lista2=[]
      alumnos= input("Ingresa el numero de alumnos ")
      while i

    •  4 ปีที่แล้ว

      ¡Hola! Lamentablemente no puedo prestar asistencia o tutorías personalizadas. En breve estaré ofreciendo cursos online, pero no por el momento. Disculpas por no poder ayudar.

    • @emilianolarenti556
      @emilianolarenti556 4 ปีที่แล้ว

      Hola! no era mas facil convertir el DNI a str y luego cortar de 0 a 3? . No se porque cuando ingreso la cadena vacia no sale del bucle

    •  4 ปีที่แล้ว

      ​@@emilianolarenti556 Esa es una opción, pero hay veces en que es necesario trabajar con el tipo de dato que se tiene (en este caso, numérico), entonces esta opción nos permite "cortar" una parte de un número sin tener que pasar por una conversión de tipo.
      Sobre la cadena vacía, ¿podrías poner acá tu código para ver qué sucede? Gracias :)

    • @emilianolarenti556
      @emilianolarenti556 4 ปีที่แล้ว

      @
      def verificarDNI(n):
      cantidad=0
      while n!=0:
      cantidad+=1
      n=n//10
      return cantidad==7 or cantidad==8
      def lenUltimaPalabra(cadena):
      longitud=len(cadena)
      if longitud==0:
      return 0
      cantidad=0
      for i in range(longitud):
      if cadena[i]!=" ":
      cantidad+=1
      else:
      if cadena[i]==" " and i

  • @raquelprivado4334
    @raquelprivado4334 3 ปีที่แล้ว

    Los he solucionado un poco/bastante diferente de lo que has desarrollado tu, te indico mis códigos:
    EJERCICIO 1
    def validarDNI(dni):
    if len(str(dni) )==7 or len(Str(dni))==8:
    return True
    else:
    return False
    EJERCICIO 2
    def longitud(cadena):
    cadena=cadena.strip()
    if cadena =="":
    return 0
    total=1
    while cadena[len(cadena)-total]!=" ":
    total+=1
    return total -1
    EJERCICIO 3
    def validarDNI(dni):
    if len(str(dni))==7 or len(str(dni))==8:
    return True
    else:
    return False
    def lonApe(nombre):
    i=1
    while nombre[len(nombre)-i]=" ":
    i+=1
    return i-1
    def extNombre(nombre):
    return nombre[0:nombre.find(" ")
    #Código General
    Nombre=input(Introduzca su nombre y primer apellido: ")
    nombre1=extNombre(Nombre)
    apellido=lonApe(Nombre)
    num=int(input("Introduzca número DNI: "))
    while validarDNI(num)==False:
    print("Número no valido")
    num=int(input("Introduzca nuevo número DNI: "))
    num=str(num)
    num=num[0:3]
    print("Identificador: ",nombre1+str(apellido)+str(num))
    Nombre=input("Introduzca su nombre y primer apellido)

  • @pandasaspd6588
    @pandasaspd6588 3 ปีที่แล้ว

    solo la función que se me ocurrió y funcionó:
    def lon(x):
    limpio = x.split()
    print(limpio[-1])
    return len(limpio[-1])
    imprime la ultima palabra del string y luego imprime su longitud

    •  3 ปีที่แล้ว +1

      ¡Hola, Matías! Sí, la forma que usaste (con el método split) sería más "prolija", porque usa una herramienta que ya provee el lenguaje, en vez de hacer la tuya propia. Pero te animo a que busques la forma de crear tu propio algoritmo, solo con el fin de aprender.
      Por otra parte, te recomiendo no utilizar un print y luego retornar otro valor dentro de la misma función. Sugiero ver el video sobre errores comunes al trabajar con funciones, dentro de este mismo curso.
      ¡Saludos!

    • @pandasaspd6588
      @pandasaspd6588 3 ปีที่แล้ว +1

      @ okey gracias, lo intentaré :b

  • @shuwohd2343
    @shuwohd2343 3 ปีที่แล้ว

    El código que utilizé para el segundo ejercicio fue este:
    frase = str(input('Escriba una frase: '))
    def len_ultima_palabra(str):
    longitud = 0
    str = str.strip()
    for i in str:
    if not i.isspace():
    longitud += 1
    else:
    longitud = 0
    return(longitud)
    print(len_ultima_palabra(frase));
    Es más corto que el que sale en el vídeo y en teoría funciona, aunque no se si está del todo correcto

  • @David-cg6ew
    @David-cg6ew 3 ปีที่แล้ว

    # EJERCICIO - 02:
    def longitud_ult_letra(texto):
    if texto.isalpha:
    texto = texto.strip()
    ult_letra = texto[-1]
    return ult_letra
    txt = input("Digite un texto: ")
    print(longitud_ult_letra(txt))

  • @pedroemilsecasaverdeayma8709
    @pedroemilsecasaverdeayma8709 3 ปีที่แล้ว

    En el segundo ejercicio de obtener la última palabra, utilicé este código:
    def last_word(sentence):
    a=sentence.strip().split(' ')
    return len(a[-1])

    •  3 ปีที่แล้ว

      ¡Perfecto! Es otra forma de hacerlo, también válida 🙂.

  • @distasiopropiedades
    @distasiopropiedades 4 ปีที่แล้ว

    Hice un par de funciones mas "cortas" como la de primer nombrem y la de ulrimos dni. Luego no genere una funcion para generar. simplemente sume en una variable todo y la mostre. Es valido?
    def validaDni(numero):
    numero=str(numero)
    if len(numero)==7 or len(numero)==8:
    return True
    return False
    def longitudUltima(frase):
    longitud=len(frase)
    if longitud == 0:
    return 0
    cantidad=0
    for i in range(longitud):
    if frase[i] !=" ":
    cantidad=cantidad+1
    else:
    if frase[i] ==" " and i

  • @marcelanaranjo4906
    @marcelanaranjo4906 3 ปีที่แล้ว

    Propuesta para solución ejercicio 2
    texto = input('Digite una frase: ')
    def longiSubcadena(texto):
    texto = texto.strip() #Para eliminar espacios inicio y final
    cadena = texto.split(' ') #Para convertir cadena en lista
    print(len(cadena[-1])) #Para seleccionar el último índice y contar los caracteres

    longiSubcadena(texto)

  • @benjaminbascary8219
    @benjaminbascary8219 2 ปีที่แล้ว

    Yo lo hice de la siguiente manera.. es valido?
    def longitud_ultima_palabra(frase):
    lista = frase.split()
    return len(lista[-1])
    a = input("FRASE:")
    print(longitud_ultima_palabra(a))

  • @davidcordova1773
    @davidcordova1773 3 ปีที่แล้ว

    la segunda simplemente es:
    print("========================================")
    frase=input(""" Ingresa una frase
    ========================================
    """)
    k=frase.split()
    contador=0
    for i in k:
    contador+=1
    print(k[contador-1])

  • @mauriarce2208
    @mauriarce2208 3 ปีที่แล้ว

    Unas dudas que me surgen del ultimo ejercicio, no es mas fácil usar el metodo split() para transformar la cadena en una lista de palabras de la cadena y de ahi poder manipular el nombre (que seria lista[0])o el apellido(que seria lista[-1])?? Y otra cosa, el input que siempre nos toma como un string lo que nos ingresa el usuario, no es mas facil dejarlo como un string(y usar por ejm, dni [:3], para sacar los tres digitos????
    pd les dejo como me resulto a mi
    def validar_dni(documento):
    if len(documento)8:
    return False
    else:
    return True
    def primer_nombre(nombres):
    lista=nombres.split()
    return lista[0]
    def tres_digitos_dni(documento):
    return documento[:3]

    def cant_letras_apellido(apellido):
    lista=apellido.split()
    return str(len(lista[-1]))
    nombres_completos=input("Ingrese su nombre y apellido o Enter para terminar: ")
    while nombres_completos!="":
    dni=input("Ingrese su D.N.I.: ")
    while not validar_dni(dni):
    print("DNI incorrecto ingrese nuevamente")
    dni=input("Ingrese su D.N.I.: ")
    print(primer_nombre(nombres_completos)+cant_letras_apellido(nombres_completos)+
    tres_digitos_dni(dni))
    nombres_completos=input("Ingrese su nombre y apellido o Enter para terminar: ")

    •  3 ปีที่แล้ว

      Si bien hay varias formas de resolver un mismo problema, la idea de este curso es aprender a generar nuestros propios algoritmos, en vez de usar los que ya provee el lenguaje (este curso se enfoca en aprender a programar, y no en el lenguaje Python). Pero sí, también es válida tu sugerencia y es otra forma de hacerlo.

    • @mauriarce2208
      @mauriarce2208 3 ปีที่แล้ว

      @ si despues me di cuenta que no habias dado listas aun en tu hermoso curso. Quiero aprovechar este momento pars decirte gracias y felicitaciones por tu canal de youtube y por tu forma de enseñar!! ❤❤❤

  • @nimodoxd4739
    @nimodoxd4739 4 ปีที่แล้ว +1

    def DNIvalido (dni):
    cantidad=0
    while dni!=0:
    cantidad=cantidad+1
    dni=dni//10
    return cantidad==7 or cantidad ==8
    print (DNIvalido(342))
    print (DNIvalido(12345678))
    NO ME RETORNA TRUE

  • @brunomax001
    @brunomax001 3 ปีที่แล้ว

    Profesora pero en el ultimo ejercicio lo que ya esta tocando es programación modular o me equivoco ?.
    Yo no entendi del todo el planteamiento y lo hice sin funnciones. La diferencia se nota, con funciones te queda un programa mas limpio.
    Esta fue mi solución sin usar funciones.
    #leer el nombre
    name=input('Nombre: ')
    # ingresar un campo vacio para finalizar
    while name != '':
    #leer dni
    dni=int(input('DNI: '))
    # validar dni , dejar en bucle si el dni no es correcto
    while True:
    DNI=str(dni)
    cantidad=0
    while dni !=0:
    cantidad+=1
    dni=dni//10
    if cantidad ==7 or cantidad ==8:
    break
    print('Dni invalido')
    dni=int(input('DNI: '))
    #obtener identificador
    name1=''
    apellido=''
    # validamos el numero de palabras
    palabra=0
    anterior=' '
    # bucle para obtener el numero de palabras
    for c in name:
    if anterior ==' ' and c !=' ' :
    palabra+=1
    anterior=c
    # si se obtiene mas de 2 palabras se da por echo que hay 2 nombres
    if palabra >2:
    espacio=0
    for i in range(len(name)):
    if name[i]==' ' and name[i+1] !=' ' and espacio==0:
    name1+=name[:i]
    espacio+=1
    else:
    if name[i]==' ' and name[i+1] != ' ' and espacio==1:
    apellido+=name[i+1:]
    break
    else:
    name1+=name[:name.find(' ')]
    apellido+=name[name.find(' ')+1:]
    #mostrar indetificador -> ID= nombre1+ len(apellido) + 3 digitos dni
    id=name1+ str(len(apellido))+DNI[:3]
    print('Identificador')
    print(id)
    #leer nuevo socio
    name=input()

    •  2 ปีที่แล้ว

      Sí, programación modular sería cuando dividimos a un programa en "módulos", es decir, en partes que permitan simplificar y organizar la solución. En el caso de tu código, si se tratara de un programa más largo (y hay algunos con millones de líneas de código) sería muy difícil hacer cambios o encontrar errores. Es por eso que la tendencia es a abstraer partes de la solución y que el código sea lo más "limpio" y legible que se pueda.

  • @rudydd2
    @rudydd2 2 ปีที่แล้ว

    Hola para resulver el primer problema converti el numero a string y posterior saque su lomgitud, consideras la resolucion de este problema correcta?.
    def verificacion (dni):
    if len(str(dni)) == 7 or len(str(dni)) == 8:
    validacion = True
    else:
    validacion = False
    return validacion
    def run():
    numero_identificacion=int(input("Ingrese su DNI para su verificacion: "))
    if verificacion(numero_identificacion) :
    print("El numero ingresado es valido")
    else:
    print("El numero ingresado no es valido")
    if __name__ == '__main__':
    run()

    •  2 ปีที่แล้ว +1

      Sí, es otra opción posible! Aunque yo opté por hacerlo con números para justificar un poco más el uso de una función, de manera de abstraer la complejidad del algoritmo que verifica el dni. En el caso que mostraste, la función verificacion(dni) podría comprimirse a solo una línea, haciendo lo siguiente:
      def verificacion (dni):
      return len(str(dni)) == 7 or len(str(dni)) == 8

    • @rudydd2
      @rudydd2 2 ปีที่แล้ว +1

      @ Gracias por comentario, espero que sigas aportando con mas vídeos de programación en python.

  • @leonardovioliorrantia8286
    @leonardovioliorrantia8286 2 ปีที่แล้ว

    En el primer ejercicio : Porque no usar len desde un principio y no ponerse con sumas y divisiones ?

    •  2 ปีที่แล้ว +1

      Porque la idea del curso es desarrollar el pensamiento algorítmico y las bases de la programación, entonces buscamos formas de hacer las cosas con las herramientas más básicas, sin depender tanto de las funcionalidades que nos da el lenguaje. Más allá de eso, el video intenta explicar cuándo y cómo usar funciones, entonces si usáramos len (una función ya provista por el lenguaje) no podríamos practicar creando una nosotros mismos.

  • @eduardarturozapatavalencia8481
    @eduardarturozapatavalencia8481 ปีที่แล้ว

    def validarDni(n):
    c=0
    while n!=0:
    digito=n%10
    c=(digito-digito+1)+c
    n=n//10
    if c==8 or c==7:
    return True
    return False
    def identificador(nombre1,apellido1,numero):
    numapell=len(apellido1)
    numapell=str(numapell)
    numero=str(numero)
    return nombre1+numapell+numero[0:3]
    #programa principal
    pnombre=input("ingrese primer nombre:")
    snombre=input("ingrese segundo nombre:")
    apellido=input("ingrese primer apellido:")
    dni=int(input("ingrese su DNI:"))
    while validarDni(dni)==False:
    print ("ingrese dni correcto:")
    dni=int(input("ingrese su DNI:"))
    if snombre==" ":
    print("Nombre:",pnombre,apellido)
    else:
    print("Nombre:",pnombre,snombre,apellido)
    print("DNI:",dni)
    print(identificador(pnombre,apellido,dni))

  • @stalinvillegastroya2116
    @stalinvillegastroya2116 3 ปีที่แล้ว

    Hola, muy bueno. Me sale mensaje de error "SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers"

    •  3 ปีที่แล้ว

      ¡Hola! El mensaje, en inglés, te está diciendo que no se permite poner ceros delante de un número entero (el cero se reserva para indicar la base, por eso te da un ejemplo de cómo escribir un número octal). Esto es así porque en matemática, por ejemplo, el número 15 y 015 son el mismo número y el cero se descarta.

  • @LoneWolf-sj3pd
    @LoneWolf-sj3pd 4 ปีที่แล้ว

    No hace falta una funcion para los primeros 3 digitos, sean 7 u 8 los 3 primeros digitos son los mismos: numerodni[0:3]

    •  4 ปีที่แล้ว

      ¿Te referías al último ejercicio? En este ejercicio, el número de dni está en formato numérico, con lo cual no es posible aplicar una rebanada para obtener los primeros tres números. Tal vez si convertimos primero el número a string y luego lo rebanamos, entonces sí sería posible tu solución. 🙂

  • @DarkMaster351
    @DarkMaster351 3 ปีที่แล้ว

    en el ultimo ejercicio no me funciona el import, o lo estoy poniendo mal, lo puse tal cual sale en el video y me sale "NameError: name 'DNIivalido' is not defined"

    •  3 ปีที่แล้ว +1

      Ese error indica que Python no encuentra el nombre (de función, variable, etc) 'DNIivalido'. Es posible que lo hayas tipeado incorrectamente, ya sea en la declaración o al intentar usarlo.

  • @rubiramirezsantiago7996
    @rubiramirezsantiago7996 4 ปีที่แล้ว

    el mio funciona bien, solo que ya no pude juntar los datos, perooo funciona jajajajaa
    #identificador
    def validarDNI(dni):
    cantidad=0
    while dni!=0:
    cantidad+=1
    dni//=10
    return cantidad==7 or cantidad==8
    def primeros_3(dni):
    contador=0
    while dni!=0:
    contador+=1
    dig=dni//10000000
    if contador==7 and dig==0:
    return dni//10000
    elif contador==8:
    return dni//100000
    def nombre_iden(nombre):
    if nombre.count(" ")==1:
    return nombre[0:nombre.find(" ")]
    else:
    return nombre
    print("Bienvenido, ingrese su nombre completo (nombre y apellido) y su DNI: ")
    nombre=input("nombre: ")
    while nombre!="":
    apellido=input("apellido: ")
    dni=int(input("digite su DNI: "))
    while validarDNI(dni)==False:
    dni=int(input("digite su DNI: "))
    print("su identificador es: ", nombre_iden(nombre.capitalize()),len(apellido),primeros_3(dni) )
    nombre=input("nombre: ")
    postadata, si alguien tiene una idea, sera recibida con gustoo, ya trate con capitalize y no me funciono.

    • @TG-pg6vx
      @TG-pg6vx 3 ปีที่แล้ว

      Tenes que concatenarlos con el signo + y pasarlo a string ya que sino te saldría un error.
      Asi:
      print("su identificador es: ",nombre_iden(nombre.capitalize()) + str(len(apellido)) + str(primeros_3(dni)))

  • @pandasaspd6588
    @pandasaspd6588 3 ปีที่แล้ว

    def numero_dni(n):
    if len(n) != 7 and len(n) != 8:
    return False
    else:
    return True
    while True:
    dni = (input('Ingrese el numero de DNI: '))
    if numero_dni(dni) == True:
    print(numero_dni(dni))
    repetir = input('Deseas introducir otro DNI? s/n:').lower()
    if repetir == 's':
    continue
    else:
    break
    else:
    intentar_denuevo = input('Numero de DNI no valido, deseas intentarlo otra vez? s/n: ')
    if intentar_denuevo == 's':
    continue
    else:
    break
    print('Fin del programa')