Python - Ciclo while con Python

 
Vista:
sin imagen de perfil
Val: 36
Ha aumentado su posición en 17 puestos en Python (en relación al último mes)
Gráfica de Python

Ciclo while con Python

Publicado por Alexander (8 intervenciones) el 25/08/2020 04:12:41
1
 
Hola a todo el que lea esto.
Necesito ayuda para encontrar una posible solución a este ejercicio. Toda ayuda se agradece.

Escenario:

1.- Toma cualquier número entero que no sea negativo y que no sea cero y asígnale el nombre c0.
2.- Si es par, evalúa un nuevo c0 como c0 ÷ 2.
3.- De lo contrario, si es impar, evalúe un nuevo c0 como 3 × c0 + 1.
4.- Si c0 ≠ 1, salta al punto 2.

Escribe un programa que lea un número natural y ejecute los pasos anteriores siempre que c0 sea diferente de 1. También queremos que cuente los pasos necesarios para lograr el objetivo. Tu código también debe mostrar todos los valores intermedios de c0.

Ejemplo:

Entrada de muestra: 15

Salida esperada:

46
23
70
35
106
53
160
80
40
20
10
5
16
8
4
2
1
pasos = 17


Entrada de muestra: 16

Salida esperada:

8
4
2
1
pasos = 4


Por cierto, genere este código pero no me lleva a ningún lado... Creo que debo seguir intentando

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c0 = int(input("Ingresa un número:"))
 
x = 0
y = 1
 
while c0:
    c0 %= 2
    print(c0)
    if c0 == x:
        c0 /= 2
        print(c0)
    if c0 == y:
        c0 *= 3
        c0 += 1
        print(c0)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Ciclo while con Python

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 25/08/2020 06:20:43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c = int(input("Ingresa un número:"))
while c<=0:
    c = int(input("Ingresa un número:"))
c0=c
pasos=0
while c0!=1:
    if c0%2 == 0:
        c0=int(c0/2)
        print(c0)
        pasos=pasos+1
    elif c0%2== 1:
        c0=3*c0 +1
        print(c0)
        pasos=pasos+1
print("pasos=",pasos)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
E:\PYTHON 2020>python while1.py
Ingresa un número:15
46
23
70
35
106
53
160
80
40
20
10
5
16
8
4
2
1
pasos= 17
 
E:\PYTHON 2020>python while1.py
Ingresa un número:16
8
4
2
1
pasos= 4
 
E:\PYTHON 2020>python while1.py
Ingresa un número:-6
Ingresa un número:-12
Ingresa un número:-13
Ingresa un número:0
Ingresa un número:-9
Ingresa un número:0
Ingresa un número:5
16
8
4
2
1
pasos= 5
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Ciclo while con Python

Publicado por PEDRO PEREZ (2 intervenciones) el 08/04/2021 18:19:41
1
2
3
4
5
6
7
8
9
10
11
12
c0= int(input("Ingresa un numero natural: "))
pasos=0
while c0>1:
    if c0%2==0:
        c0=c0/2
        pasos+=1
        print(int(c0))
    else:
        c0=3*c0+1
        pasos+=1
        print(int(c0))
print("pasos = ",pasos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Fernando

Ciclo while con Python

Publicado por Fernando (1 intervención) el 01/05/2023 14:42:37
Hola Pedro, me gustó mucho tu código. Es muy entendible. Gracias por aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Samir
Val: 14
Ha aumentado su posición en 281 puestos en Python (en relación al último mes)
Gráfica de Python

Ciclo while con Python

Publicado por Samir (4 intervenciones) el 22/05/2021 00:12:55
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
numeroIngresado = int(input("Ingrese un numero: "))
 
while numeroIngresado <= 0:
    print("El numero ingresado debe ser mayor a 0")
    numeroIngresado = int(input("Ingrese un numero: "))
 
c0 = numeroIngresado
pasos = 0
 
while c0 != 1:
    if c0 %2 == 0:
        c0 = c0 // 2
        pasos += 1
        print(c0)
    elif c0 != 0:
        c0 = 3 * c0 + 1
        pasos += 1
        print(c0)
 
print("Pasos: ",pasos)

Lo mas importante que se debe tener presente es el condicional While y su funcionamiento, Recordar que mientras While sea True entrara en el Bucle y al momento de comprar si c0 es diferente de 1 este saldrá del bucle. porque la condición While se deja de cumplirse While 1 != 1 False.

https://github.com/Gaspela
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ciclo while con Python

Publicado por georwins (8 intervenciones) el 04/05/2023 07:13:26
Hola Alexander espero que estes muy bien. Esta es mi codigo solucion en base a lo requerido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
try:
    pasos=0
    co=int(input("Ingresa un numero entero (NO negativo) : "))
    if co>0:
        if co%2==0:
            print(co)
            print(co/2)
            a=co/2
            pasos+=1
            while a!=1:
                if (a)%2==0:
                    print(a/2)
                    a=a/2
                    pasos+=1
                else:
                    print(3*a+1)
                    a=3*a+1
                    pasos+=1
            print("Pasos",pasos)
        else:
            print(co)
            print(3*co+1)
            a=3*co+1
            pasos+=1
            while a!=1:
                if (a)%2==0:
                    print(a/2)
                    a=a/2
                    pasos+=1
                else:
                    print(3*a+1)
                    a=3*a+1
                    pasos+=1
            print("Pasos",pasos)
    else:
        print("!EL NUMERO DEBE SER ENTERO POSITIVO!")
except ValueError:
    print("!El NUMERO DEBE SER ENTERO!")


Adicionalmente me tome el atrevimiento de anadir el try y except en caso que el usuario ingrese un float de tal manera que le haga la notificacion al usuario y el programa no se detenga de manera abrupta, espero te sirva alexander.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar