Saltar navegación

Estrutura while (mentres)

Como se escribe

Diagrama de fluxo

Fluxo da estructura while
Creación propia. Fluxo da estructura while (CC BY-SA)

A estrutura while úsase cando temos que repetir unha serie de instrucións pero non sabemos cantas veces se debe repetir, senón que depende de se se cumple ou non unha condición. Avalíase a condición, executanse as sentencias, volvese  avaliar...é importante incluir algún cambio no bucle que provoque a parada da execución, en algún momento, debe deixar de cumplirse a condición.
Salientar que while  podese usar tamén cando se usa for, é dicir aínda que saibamos o número de iteracións.

Pseudocódigo
.......

3.Mentres condición,facer

3.1....
3.2...

4.Fin_Mentres

.........

Exemplo 1:Total da nómina

Programa

Código Python: Total nómina versión 1 , con condición

"""
Conseguir o total da nómina dun número indeterminado de traballadores,
pedindo o salario de cada un por pantaia, e introducindo -1 cando xa non hai máis
Data: 19 de abril de 2025
Autora: Eva
"""

NOM = 0  # Variable que gardará o total da nómina e acumula os que vai sumando
SAL = 0

while SAL != -1:  # Mentres o salario non sexa -1
    print("Por favor, introduza o salario do traballador. Cando remate, introduza -1")  # Vainos pedindo os salarios
    SAL = float(input())  # Leemos o salario
    if SAL != -1:  # Se o salario introducido non é -1
        NOM += SAL  # Vou sumando cada soldo na nómina total

# Cando se introduce como salario -1, saímos do bucle. Xa se terminou de introducir datos
print("O total da nómina son", NOM, "euros")  # Imprimo o total da nómina    

Sintaxe do while:


while SAL!=-1: #Mentres o salario non sexa -1

print("Por favor introduza o salario do traballador,cando remate,introduza -1 ") #Vainos pedindo os salarios
SAL=float(input()) #Leemos o salario
if SAL!=-1: #Se o salario introducido non é -1
NOM=NOM+SAL #Vou sumando cada soldo na nómina total

Código Python: Total da nómina versión 2, con bucle infinito

"""
Conseguir o total da nómina dun número indeterminado de traballadores,
pedindo o salario de cada un por pantaia, e introducindo -1 cando xa non hai máis
Data: 19 de abril de 2025
Autora: Eva
"""

NOM = 0  # Variable que gardará o total da nómina e acumula os que vai sumando

while True:  # Bucle infinito ata romper a condición
    print("Por favor, introduza o salario do traballador. Cando remate, introduza -1")  # Vainos pedindo os salarios
    SAL = float(input())  # Leemos o salario
    if SAL == -1:  # Se o salario introducido é -1, rompemos o bucle
        break
    NOM += SAL  # Vou sumando cada soldo na nómina total

# Imprimimos o total da nómina
print("O total da nómina son", NOM, "euros")  # Imprimo o total da nómina    

Este código usa un bucle while True que se interrompe coa declaración break ao introducir -1

Exemplo 2: Suma de números positivos

Programa

Código Python: Suma de números positivos versión 1, con condición

"""
Este programa recolle números decimais por pantaia, ata que lle metemos un 0 para rematar a serie,
e suma os que son positivos
Data: 19 de abril de 2025
Autora: Eva
"""

num = -10  # Dámoslle un valor non nulo para que se cumpra a condición e entre no bucle, pode ser calquera salvo o 0
suma = 0  # Vai gardando a suma dos positivos

while num != 0:  # Mentres o número non sexa cero, pide números e suma os positivos
    print("Introduza o número, cando remate a serie de números para sumar, introduza 0")  # Pedimos os números
    num = float(input())  # Gardamos o número para poder operar con el
    if num > 0:  # Se o número é positivo, sumámolo
        suma += num

# Cando se introduce o 0 como num, significa que rematamos de introducir datos, saímos do bucle e damos o resultado
print("O total da suma dos positivos da serie introducida é:", suma)    

Sintaxe do while:

while num!=0: #Mentres o número non é cero, pide números e suma os positivos

print("Introduza o número,cando remate a serie de números para sumar,introduza 0") #Pedimos os números
num=float(input())                                                                                                           #Gardamos o número para poder operar con el
if num>0:                                                                                                                        #Se o número é positivo, sumámolo
        suma=suma+num

Código Python: Suma de positivos versión 2 con while True

"""
Este programa recolle números decimais por pantaia, ata que lle metemos un 0 para rematar a serie,
e suma os que son positivos
Data: 19 de abril de 2025
Autora: Eva
"""

suma = 0  # Vai gardando a suma dos positivos

while True:  # Bucle infinito ata que rompamos a condición
    print("Introduza o número, cando remate a serie de números para sumar, introduza 0")  # Pedimos os números
    num = float(input())  # Gardamos o número para poder operar con el
    if num == 0:  # Se o número é 0, rompemos o bucle
        break
    if num > 0:  # Se o número é positivo, sumámolo
        suma += num

# Imprimimos o resultado da suma dos positivos
print("O total da suma dos positivos da serie introducida é:", suma)

    

Este método usa o bucle infinito while True e sae del coa declaración break cando o usuario introduce o número 0

Executa e comprende os seguintes exemplos

Instrucións

  • EXECUTA E COMPRENDE OS SEGUINTES PROGRAMAS.
  • APARTE DOS CONCEPTOS DE CONTADOR E ACUMULADOR, HAI VARIAS COUSAS NOVAS : O MÉTODO eval() E OS VALORES DE VARIABLE TRUE/FALSE

Números dunha cifra

1-Programa: buclewhile1.py
Imos realizar un programa que permita introducir números dunha cifra. Cando o número escrito sexa maior ou igual que 10, será equivalente a terminar.

  1. O programa mostrará unha mensaxe indicando a súa funcionalidade.
  2. Pedirá que se introduza un número.
  3. Debe estar a pedir números mentres os números sexan menores que 10.
print('Escribe números dunha sola cifra')
print('Máis dunha cifra, será equivalente a terminar')
numero=0
while numero<10:
      numero=input('Escribe un número: ')
      numero=eval(numero) # Outro xeito de converter a cadena de texto que devolve input() nun número

A construción do bucle while inclúe a condición numero<10, é dicir, o bucle
estará a repetir o bloque de instrucións mentres que o valor da variable número sexa menor que 10. A liña 3 é necesaria para que a primeira vez que se execute o bucle, número teña algún valor e poida comparalo co número 10.

Código Python: Números dunha sola cifra

print('Escribe números dunha sola cifra')  # Mensaxe inicial para o usuario
print('Máis dunha cifra, será equivalente a terminar')  # Explicación sobre como rematar o programa
numero = 0  # Inicializamos a variable

while numero < 10:  # Mentres o número introducido sexa dunha sola cifra
    numero = input('Escribe un número: ')  # Solicitamos un número ao usuario
    numero = eval(numero)  # Convertemos a cadea de texto devolta por input() nun número    

Números pares

2-Programa: buclewhile2.py

  1. O programa mostrará unha mensaxe indicando a súa funcionalidade.
  2. Definiremos un bucle infinito while True que será a que controlará a condición do bucle.
  3. Pedirá que se introduzan números pares.
  4. Cando se introduza un número impar executarase break e sairase do bucle
print('Escribe números pares')
print('Un número impar servirá para terminar')

while True:
numero=input('Escribe un número: ')
numero=eval(numero) # Outro xeito de converter a cadena de texto que devolve input() nun número
if numero%2==1:
break 

Código Python: Números pares

print('Escribe números pares')  # Mensaxe inicial para o usuario
print('Un número impar servirá para terminar')  # Explicación sobre como rematar o programa

while True:  # Bucle infinito ata que se rompa
    numero = input('Escribe un número: ')  # Solicitamos un número ao usuario
    numero = eval(numero)  # Convertemos a cadea de texto devolta por input() nun número
    if numero % 2 == 1:  # Se o número é impar, rompemos o bucle
        break    

Suma de números

3-Programa: contador-acumulador3.py

  1. O programa mostrará unha mensaxe indicando a súa funcionalidade.
  2. Definiremos 2 variables,  n que será o contador das veces que se executa o bucle e suma que será onde acumularemos a suma dos números que se introducen.
  3. Pedirá que se introduzan números.
  4. Cando se pulse Intro sen escribir ningún número, o programa finalizará (break).
  5. Se se introduce un número, auméntase nunha unidade a variable n (contador) e o valor do número introducido súmase ao valor que teña nese momento a variable suma, é dicir, acumúlase na variable suma.

print('Programa que pedirá números ata deixar unha entrada baleira')

print('O programa conta cantos números se introduciron')

print('e a suma de todos esos números introducidos')

print('(Entrada baleira = Terminar)')

n=0

suma=0

while True: 

       numero=input('Escribe un número: ')

       if numero=='':

             break

       else:

              numero=eval(numero) 

              n=n+1

              suma=suma+numero

print("Introducíronse",n,"números")

print("Os números suman",suma)

Código Python: Suma de números

print('Programa que pedirá números ata deixar unha entrada baleira')  # Mensaxe inicial ao usuario
print('O programa conta cantos números se introduciron')  # Explicación do obxectivo do programa
print('e a suma de todos esos números introducidos')  # Outro detalle sobre o programa
print('(Entrada baleira = Terminar)')  # Información sobre como terminar

n = 0  # Contador de números introducidos
suma = 0  # Acumulador para a suma dos números

while True:  # Bucle infinito ata que se rompa
    numero = input('Escribe un número: ')  # Solicitamos ao usuario un número
    if numero == '':  # Se a entrada é baleira, rompemos o bucle
        break
    else:
        numero = eval(numero)  # Convertimos a entrada a número
        n += 1  # Incrementamos o contador de números introducidos
        suma += numero  # Actualizamos a suma total dos números

# Mostramos os resultados
print("Introducíronse", n, "números")
print("Os números suman", suma)