Autor Tema: Problemilla en Python

0 Usuarios y 1 Visitante están viendo este tema.

17 Febrero, 2017, 09:30 pm
Leído 1873 veces

Rectilíneo

  • Aprendiz
  • Mensajes: 417
  • Karma: +0/-0
  • Sexo: Masculino
  • Don't go to the bathroom, Vincent
Hola, estoy aprendiendo a programar y tengo este problema:

"Escribe un programa en el que se introduzcan cuatro números y que informe de si al menos dos de ellos son impares".

Empezaría así:

Código: [Seleccionar]
a=input("Primer numero:")
b=input("Segundo numero:")
c=input("Tercer numero:")
d=input("Cuarto numero:")

Un número entero "n" será par si n%2==0 y será impar si n%2==1. Intuyo que tengo que usar condicionales pero no sé de que manera.

Saludos.

17 Febrero, 2017, 10:28 pm
Respuesta #1

feriva

  • Matemático
  • Mensajes: 8,995
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
  • ¡EUKERA!... ¡UEREKA!... ¡EUREKA! (corregido)
Hola, Rectilineo. Prueba a ver si así te vale; te he puesto comentarios explicativos (te lo he hecho para Pytho 3, aunque yo suelo usar 2; si lo quieres para 2 me lo dices)


Código: [Seleccionar]

#-*- coding: utf-8 -*-

lista = []  # Se define una lista vacía
 
contador = 0  # Se inicaliza un contador a cero

while len (lista) < 4:  # Mientras la cantidad de números en la ista sea menor que cuatro... 

n = int ( input ("Indtroduce el número: ") )  # Almacena en "n" los números
   
lista.append (n)  # Los va metiendo en la lista.

for j in (lista):         # EL bucle for recorre los elementos de la lista y los mete en "j"

if (j) % 2 == 0:   # Si j es par

print (j), "es par"   # Imprime es par
else:                         # Si no

print (j), "es impar"  # Imprime es impar

contador = contador + 1  # Lleva la cuenta de los impares

if contador >=2:     # Si la cuenta es igual o mayor que 2

print ("Al menos dos son impares")   # Lo dice.





Spoiler

#-*- coding: utf-8 -*-  # Esto es para que salgan los acentos

lista = []  ]#[color=blue Se define una lista vacía[/color]
 
contador = 0  # Se inicaliza un contador a cero

while len (lista) < 4:  # Mientras la cantidad de números en la ista sea menor que cuatro... 

   n = int ( input ("Indtroduce el número: ") )  # Almacena en "n" los números
   
   lista.append (n)  # Los va metiendo en la lista.

for j in (lista):         # EL bucle for recorre los elementos de la lista y los mete en "j"

   if (j) % 2 == 0:   # Si j es par

      print (j), "es par"   # Imprime es par
   else:                         # Si no

      print (j), "es impar"  # Imprime es impar

      contador = contador + 1  # Lleva la cuenta de los impares

if contador >=2:     # Si la cuenta es igual o mayor que 2

   print ("Al menos dos son impares")   # Lo dice.

[cerrar]

Se puede hacer más corto, sin lista y sólo con un bucle:

Código: [Seleccionar]


#-*- coding: utf-8 -*-

contador=0

for j in range (4):

a = int (input ("introduce el número: ") )

if a % 2 != 0:  # Si el resto es distinto de cero

contador = contador + 1

if contador >= 2:

print ("Hay al menos dos impares")


Saludos




18 Febrero, 2017, 10:51 am
Respuesta #2

Rectilíneo

  • Aprendiz
  • Mensajes: 417
  • Karma: +0/-0
  • Sexo: Masculino
  • Don't go to the bathroom, Vincent
Se puede hacer más corto, sin lista y sólo con un bucle:

Spoiler
Código: [Seleccionar]


#-*- coding: utf-8 -*-

contador=0

for j in range (4):

a = int (input ("introduce el número: ") )

if a % 2 != 0:  # Si el resto es distinto de cero

contador = contador + 1

if contador >= 2:

print ("Hay al menos dos impares")
[cerrar]

Muchas gracias feriva  :aplauso:
Todavía no me han explicado como usar el comando bucle pero entiendo lo que has hecho, que es lo importante. Al final de todo he añadido esto:

Código: [Seleccionar]
else:
print ("Hay menos de dos impares")

para que también salga un mensaje en caso de que haya menos de 2 impares.

Saludos.

18 Febrero, 2017, 11:31 am
Respuesta #3

feriva

  • Matemático
  • Mensajes: 8,995
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
  • ¡EUKERA!... ¡UEREKA!... ¡EUREKA! (corregido)

Muchas gracias feriva  :aplauso:
Todavía no me han explicado como usar el comando bucle pero entiendo lo que has hecho

Saludos.

De nada, me alegro de que te haya servido.

Me imaginé que no podrías usar bucles ni listas y tal, pero me resistía a hacerlo con cuatro inputs pensando que, en general, en vez de cuatro podrían ser muchos; pero también imaginé que, tratándose de ti, sabrías resolverlo de la otra manera.

Saludos.

18 Febrero, 2017, 02:21 pm
Respuesta #4

Rectilíneo

  • Aprendiz
  • Mensajes: 417
  • Karma: +0/-0
  • Sexo: Masculino
  • Don't go to the bathroom, Vincent
Se me acaba de ocurrir como hacerlo para el caso particular:

Código: [Seleccionar]
a=int(input("Primer numero:"))
b=int(input("Segundo numero:"))
c=int(input("Tercer numero:"))
d=int(input("Cuarto numero:"))

if (a%2!=0 and b%2!=0) or (a%2!=0 and c%2!=0) or (a%2!=0 and d%2!=0) or (b%2!=0 and c%2!=0) or (b%2!=0 and d%2!=0) or (c%2!=0 and d%2!=0):
  print ("Hay al menos dos impares")

else:
  print ("Hay menos de dos impares")

En caso de que quisieramos introducir más numeros el código se complicaría. Demasiadas combinaciones.

18 Febrero, 2017, 02:29 pm
Respuesta #5

Rectilíneo

  • Aprendiz
  • Mensajes: 417
  • Karma: +0/-0
  • Sexo: Masculino
  • Don't go to the bathroom, Vincent
Y otra más sencilla sabiendo que para cualquier número impar \( n \), n%2==1:

Código: [Seleccionar]
a=int(input("Primer numero:"))
b=int(input("Segundo numero:"))
c=int(input("Tercer numero:"))
d=int(input("Cuarto numero:"))

if (a%2+b%2+c%2+d%2>=2):
print ("Hay al menos dos impares")
else:
print ("Hay menos de dos impares")

Me gusta que haya diferentes soluciones al mismo problema :D

18 Febrero, 2017, 08:12 pm
Respuesta #6

feriva

  • Matemático
  • Mensajes: 8,995
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
  • ¡EUKERA!... ¡UEREKA!... ¡EUREKA! (corregido)
Y otra más sencilla sabiendo que para cualquier número impar \( n \), n%2==1:

Código: [Seleccionar]
a=int(input("Primer numero:"))
b=int(input("Segundo numero:"))
c=int(input("Tercer numero:"))
d=int(input("Cuarto numero:"))

if (a%2+b%2+c%2+d%2>=2):
print ("Hay al menos dos impares")
else:
print ("Hay menos de dos impares")

Me gusta que haya diferentes soluciones al mismo problema :D

Ésa me gusta mucho; te lo vas a pasar bien porque el Python es muy divertido, se pueden hacer muchas cosas.

Saludos.