Pętla while. Pomoc w zadaniu. Python

Pętla while. Pomoc w zadaniu. Python
M0
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 5 lat
  • Postów:5
0

Zadanie:
W toalecie Air Force One, system rozpoznawania twarzy identyfikuje wejście prezydenta Donalda T. i uruchamia funkcję odtwarzania amerykańskiego hymnu. Program pobiera kolejne nuty hymnu, zakodowane jako liczby całkowite z pliku za pomocą funkcji get_note() i odtwarza je poprzez funkcję play(), do której jako argument przekazuje wartość nuty. Jeżeli funkcja get_note() zwraca wartość 0 (zero) oznacza to koniec danych w pliku.
API:
get_note() - funkcja zwraca wartość całkowitą, reprezentującą określoną nutę. Wartość 0 oznacza koniec pliku.
play( x ) - funkcja odtwarza nutę o wartości całkowitej x.
Zmodyfikuj ciało funkcji play_anthem() w taki sposób, aby odtworzyła cały hymn. Zwróć uwagę, aby hymn został odtworzony od pierwszej do ostatniej nuty. Nie wywołuj funkcji play() dla wartości 0, gdyż powoduje to przenikliwy pisk, którego prezydent nie znosi!

Kod napisany przeze mnie nie działa poprawnie. Pewnie nie dostrzegam czegoś. Proszę o pomoc.

Mój kod:

Kopiuj
def play_anthem():
        while get_note() != 0:
            play( get_note() )
edytowany 3x, ostatnio: cerrato
SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 5 godzin
0

Będziesz potrzebował dodatkowej zmiennej, bo sprawdzasz nieparzyste nuty a odtwarzasz parzyste. To będzie coś takiego, nie testowane

Kopiuj
note = get_note()
def play_anthem():
        while note != 0:
            play( note )
            note = get_note()
edytowany 2x, ostatnio: sig
M0
Dziękuję bardzo! Działa :D Miłego wieczoru ;)
artur_waw
  • Rejestracja:ponad 18 lat
  • Ostatnio:prawie 2 lata
  • Postów:155
0

W pythonie 3.8 powinno zadziałać:

Kopiuj
def play_anthem():
    while note := get_note():
        play( note )
edytowany 1x, ostatnio: artur_waw

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.