Python #6 (pętla while)

Python #6 (pętla while)
Photo by Jesse Collins / Unsplash

Pętla while służy do wielokrotnego wykonywania fragmentu kodu, dopóki warunek logiczny jest spełniony (prawdziwy).

Dopóki warunek jest prawdziwy -> powtarzaj blok kodu

# Składnia
 while warunek:
    # instrukcje wykonywane w pętli
  • warunek – to wyrażenie logiczne (np. x < 10, hasło != "1234", True),
  • kod wewnątrz pętli musi być wcięty (zazwyczaj 4 spacje, indentation),
  • kiedy warunek stanie się False, pętla się zatrzyma,
  • pętlę zatrzymuje też break
  • pętla while True: jest nieskończona.
X = 0
while True:
    x = x + 1
    print(x)
    if x == 99:
        break  # WYŚWIETLI LICZBY OD 1 DO 99

while True:
    print("Hej!")
    break      # WYŚWIETLI Hej!

i = 100
while True:
    if i == 0:
        break
    print(i)
    i -= 1    # WYŚWIETLI LICZBY OD 100 DO 1

Jeśli warunek zawsze jest prawdziwy, pętla nigdy się nie zakończy — tworzy się pętla nieskończona:

while True:
    print("To będzie się powtarzać bez końca!")
WAŻNE: Ctrl + C (przerwanie pętli z klawiatury w konsoli)
Aby zrobić szybkie wcięcie -> zaznaczam fragment kodu i tab
aby cofnąć -> zaznaczam shift + tab

Instrukcje break i continue

break – natychmiast przerywa całą pętlę.

continue – przeskakuje do kolejnej iteracji, pomijając dalszy kod w bieżącej.

liczba = 0

while liczba < 10:
    liczba += 1
    if liczba == 5:
        continue  # pominie 5
    if liczba == 8:
        break      # zakończy pętlę
    print(liczba)
# Wynik: 1
#2
#3
#4
#6
#7

Zadanie:

# Jak z obecną wiedzą można by było zrobić grę polegającą na zgadnięciu liczby?
# Zgadujemy liczbę 1-100 (włącznie). Po każdym nieudanym podejściu użytkownik dostaje 
# informację czy jego strzał by za duży / za mały.
# Na początku przyjmijmy, że użytkownik ma 10 podejść - po ich wyczerpaniu przegrywa.
# Skorzystajcie z pętli while (da się też zrobić z for-em :) ).
# Jeśli pójdzie z tym zadaniem szybko - spróbujcie dodać wybór poziomu trudności 
# np. łatwy - 10 prób, średni - 5, trudny - 3. 


import random

losowa_liczba = random.randint(1, 100)

print("Witaj w grze")

try:
    i = int(input("Wybierz poziom trudności (1 - 10 prób, 2 - 6 prób, 3 - 3 próby; Wybierz 1, 2 lub 3): "))
    if i not in range(1, 4):
        print("Zły wybór!")
        i = int(input("Wybierz poziom trudności (1 - 10 prób, 2 - 6 prób, 3 - 3 próby; Wybierz 1, 2 lub 3): "))
    else:
        print("Dobry wybór!")
except ValueError:
    print("To nie jest liczba!")
    print("Koniec gry! Spróbuj jeszcze raz!")
    exit()
    


proby = 0
if i==1:
    proby = 10
if i==2:
    proby = 6
if i==3:
    proby = 3

while proby >0:
    odp_uzytkownika = int(input("Podaj liczbę od 1 do 100: "))  
    if odp_uzytkownika == losowa_liczba:
        print("Bingo!")
        break
    elif odp_uzytkownika > losowa_liczba:
        print("Twoja liczba jest większa")
    else:
        odp_uzytkownika < losowa_liczba
        print("Twoja liczba jest mniejsza")
    proby -= 1

if proby == 0:
    print(f"Przegrałeś! Spróbuj jeszcze raz! Wylosowana liczba to {losowa_liczba}")