Podano listę wyników uczniów, zaimplementuj program, który oblicza najwyższy wynik z podanej listy.
NIE używaj żadnych wbudowanych funkcji, takich jak max() i sum()!
student_scores = [80, 60, 50, 65, 75, 55]
highest_score = student_scores[0]
for score in student_scores:
if score > highest_score:
highest_score = score
print(f"The highest score in the class is: {highest_score}")
max
edit:
def max_bitwise(x, y):
diff = x - y
mask = diff >> 31
return (x & ~mask) | (y & mask)
def find_max(lst):
if len(lst) == 1:
return lst[0]
return max_bitwise(lst[0], find_max(lst[1:]))
student_scores = [80, 60, 50, 65, 75, 55]
max_score = find_max(student_scores)
Sorted też jest na ban liście? Pewnie trzeba zrobić to ifami porównując w pętli iterowany element i wstawiać przed lub za poprzedni lub jeśli ma to być tylko najwyższy wynik to pętla i przypisanie wyniki zadeklarowanego przesniej przed pętlą jako couunt = 0 i jeśli poprzedni był niższy to nadpisanie na iterowany.
lista = [80, 60, 50, 65, 75, 55]
count = 0
for i in lista:
if i > count:
count = i
print(count)
darek88 napisał(a):
NIE używaj żadnych wbudowanych funkcji, takich jak max() i sum()!
https://numpy.org/doc/2.1/reference/generated/numpy.max.html
To ciekawy ten bootcamp. Zwykle rozwiązań powinno być kilka jak w code wars.
Nie wiem jaki cel ma takie zadanie, aby sobie utrudniać życie.
Pętle nie, numpy nie, funkcje wbudowane nie to wychodzi ,że spagetti kod z ifami i odniesieniamy indexowymi wg len listy.
student_scores = [80, 60, 50, 65, 75, 55]
highest = student_scores[0]
if student_scores[1] > highest:
highest = student_scores[1]
if student_scores[2] > highest:
highest = student_scores[2]
if student_scores[3] > highest:
highest = student_scores[3]
if student_scores[4] > highest:
highest = student_scores[4]
if student_scores[5] > highest:
highest = student_scores[5]
print("Najwyższy wynik to:", highest)
return student_scores[0]
Prostsze i łatwe do zrównoleglenia.
Potraktujmy scores jako wektory bitowe. Wtedy wystarczy wykonać na nich intersekcje - największy to ten który zawiera wszystkie pozostałe.
Sprawdź, co było w treści lekcji, bo to może być kluczowe, by zrozumieć, jakie rozwiązanie jest wymagane.
Prawidłowe rozwiązanie
highest_score = 0
for score in student_scores:
if score > highest_score:
highest_score = score
print(f"The highest score in the class is: {highest_score}")
Witam
Jestem zielony w Pythonie, a mam do przygotowania 3 proste funkcje z listą.
Chodzi o napisanie 3 następujących funkcji, żeby były napisane w możliwie najprostszy sposób:
Z góry dziękuje za pomoc.
To wszystko teraz ChatGPT może wygenerować, łącznie z wytłumaczeniem, co robi dany kawałek kodu.
przykładowy prompt:
Python "Napisz funkcję filtruj_parzyste(lista) , która przyjmuje tablicę 6-elementową jako dane wejściowe i zwraca nową listę zawierającą wyłącznie liczby parzyste" łącznie z wytłumaczeniem, co robi dany kawałek kodu, ale w formie dialogu z wykładowcą, który pyta
LukeJL napisał(a):
To wszystko teraz ChatGPT może wygenerować, łącznie z wytłumaczeniem, co robi dany kawałek kodu.
Przydałby się shoutbox połączony z czatem dla takich pytań.
loza_prowizoryczna napisał(a):
LukeJL napisał(a):
To wszystko teraz ChatGPT może wygenerować, łącznie z wytłumaczeniem, co robi dany kawałek kodu.
Przydałby się shoutbox połączony z czatem dla takich pytań.
loza_prowizoryczna napisał(a):
LukeJL napisał(a):
To wszystko teraz ChatGPT może wygenerować, łącznie z wytłumaczeniem, co robi dany kawałek kodu.
Przydałby się shoutbox połączony z czatem dla takich pytań.
Poszukałem trochę na necie i mam takie rozwiązania:
def filtruj_parzyste(lista):
"""
Funkcja przyjmuje listę 6-elementową i zwraca nową listę z liczbami parzystymi.
"""
return [x for x in lista if x % 2 == 0]
def suma_listy(lista):
"""
Funkcja przyjmuje listę liczb i zwraca sumę wszystkich elementów.
"""
return sum(lista)
def liczby_wieksze_niz_srednia(lista):
"""
Funkcja przyjmuje listę liczb i zwraca nową listę z elementami większymi
niż średnia arytmetyczna tej listy. Jeśli lista jest pusta, zwraca pustą listę.
"""
if not lista:
return []
srednia = sum(lista) / len(lista)
return [x for x in lista if x > srednia]
lista_testowa = [10, 15, 20, 25, 30, 35]
print("Liczby parzyste:", filtruj_parzyste(lista_testowa))
print("Suma elementów listy:", suma_listy(lista_testowa))
print("Liczby większe niż średnia:", liczby_wieksze_niz_srednia(lista_testowa))
def filtruj_parzyste(lista):
"""
Funkcja przyjmuje listę 6-elementową i zwraca nową listę z liczbami parzystymi.
Walidacja: Lista musi mieć dokładnie 6 elementów i zawierać tylko liczby dodatnie.
"""
if len(lista) != 6 or any(not isinstance(x, (int, float)) or x <= 0 for x in lista):
return "Błąd: Lista musi zawierać dokładnie 6 dodatnich liczb."
return [x for x in lista if x % 2 == 0]
def suma_listy(lista):
"""
Funkcja przyjmuje listę liczb i zwraca sumę wszystkich elementów.
Jeśli lista jest pusta, zwraca 0.
Walidacja: Lista musi mieć dokładnie 6 elementów i zawierać tylko liczby dodatnie.
"""
if len(lista) != 6 or any(not isinstance(x, (int, float)) or x <= 0 for x in lista):
return "Błąd: Lista musi zawierać dokładnie 6 dodatnich liczb."
return sum(lista)
def liczby_wieksze_niz_srednia(lista):
"""
Funkcja przyjmuje listę liczb i zwraca nową listę z elementami większymi
niż średnia arytmetyczna tej listy. Jeśli lista jest pusta, zwraca pustą listę.
Walidacja: Lista musi mieć dokładnie 6 elementów i zawierać tylko liczby dodatnie.
"""
if len(lista) != 6 or any(not isinstance(x, (int, float)) or x <= 0 for x in lista):
return "Błąd: Lista musi zawierać dokładnie 6 dodatnich liczb."
srednia = sum(lista) / len(lista)
return [x for x in lista if x > srednia]
lista_testowa = [10, 15, 20, 25, 30, 35]
lista_bledna = [10, -5, 20, 25, "a", 35] # Niepoprawna lista
lista_krotka = [10, 15, 20] # Za krótka lista
print("Liczby parzyste:", filtruj_parzyste(lista_testowa))
print("Suma elementów listy:", suma_listy(lista_testowa))
print("Liczby większe niż średnia:", liczby_wieksze_niz_srednia(lista_testowa))
print("\nTest błędnych danych:")
print("Liczby parzyste (błąd):", filtruj_parzyste(lista_bledna))
print("Suma elementów listy (błąd):", suma_listy(lista_krotka))
print("Liczby większe niż średnia (błąd):", liczby_wieksze_niz_srednia(lista_bledna))
Przy przeszukiwaniu list rozwiązań warto wybrać najoptymalniejszą drogą - np. przeszukiwanie binarne.
lion137 napisał(a):
Binarne jest na posortowanej kolekcji.
Implementacje zwracane przez czat też można posortować. Oczywiście dobór wagi należy do oceniającego.