18/01/2020, 23:17:43 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: ¡Atención! Hay que poner la matemática con LaTeX, y se hace así (clic aquí):
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Problemilla en Python  (Leído 1451 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Rectilíneo
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 417


Don't go to the bathroom, Vincent


Ver Perfil
« : 17/02/2017, 17:30:07 pm »

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:
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.
En línea
feriva
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8.714



Ver Perfil
« Respuesta #1 : 17/02/2017, 18:28:27 pm »

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:

#-*- 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 (click para mostrar u ocultar)

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

Código:


#-*- 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



En línea

Rectilíneo
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 417


Don't go to the bathroom, Vincent


Ver Perfil
« Respuesta #2 : 18/02/2017, 06:51:55 am »

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

Spoiler (click para mostrar u ocultar)

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:
else:
print ("Hay menos de dos impares")

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

Saludos.
En línea
feriva
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8.714



Ver Perfil
« Respuesta #3 : 18/02/2017, 07:31:28 am »


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.
En línea

Rectilíneo
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 417


Don't go to the bathroom, Vincent


Ver Perfil
« Respuesta #4 : 18/02/2017, 10:21:36 am »

Se me acaba de ocurrir como hacerlo para el caso particular:

Código:
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.
En línea
Rectilíneo
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 417


Don't go to the bathroom, Vincent


Ver Perfil
« Respuesta #5 : 18/02/2017, 10:29:05 am »

Y otra más sencilla sabiendo que para cualquier número impar [texx]n[/texx], n%2==1:

Código:
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 :cara_de_queso:
En línea
feriva
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8.714



Ver Perfil
« Respuesta #6 : 18/02/2017, 16:12:37 pm »

Y otra más sencilla sabiendo que para cualquier número impar [texx]n[/texx], n%2==1:

Código:
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 :cara_de_queso:

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

Saludos.
En línea

Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!