Python - Najwyższy wynik

Python - Najwyższy wynik
D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0

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()!

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
3

Jak próbowałeś rozwiązać problem, masz jakiś kod?

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0

Pewnie należy zastosować pętlę for.

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6966
0

@darek88: pokaż jak wygląda lista.

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
1
Kopiuj
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}")
ledi12
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
2

max

edit:

Kopiuj
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)
Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

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]

Kopiuj
count = 0
for i in lista:
    if i > count:
        count = i

print(count)
loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
1
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

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0

Przedstawione rozwiązania są nieprawidłowe.

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0

screenshot-20250115130342.png

Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
1

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.

Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
1
Kopiuj
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)
loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
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.

Pyxis
  • Rejestracja: dni
  • Ostatnio: dni
0

Sprawdź, co było w treści lekcji, bo to może być kluczowe, by zrozumieć, jakie rozwiązanie jest wymagane.

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0

Prawidłowe rozwiązanie

Kopiuj
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}")


D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0
Kopiuj
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}")

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Witam
Jestem zielony w Pythonie, a mam do przygotowania 3 proste funkcje z listą.

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Chodzi o napisanie 3 następujących funkcji, żeby były napisane w możliwie najprostszy sposób:

  1. 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.
  2. Napisz funkcję suma_listy(lista), która przyjmuje listę liczb jako argument i zwraca sumę wszystkich jej elementów.
  3. Napisz funkcję liczby_wieksze_niz_srednia(lista), która przyjmuje listę liczb i zwraca nową listę z elementami większymi niż średnia arytmetyczna tej listy. Jeśli lista jest pusta, funkcja powinna zwrócić pustą listę.

Z góry dziękuje za pomoc.

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1788
0

jak prowadzący cwany to każe ci wytłumaczyć co robi kod który niby sam napisałeś

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
0

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

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
1
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ń.

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0
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]

Przykładowe użycie:

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))

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

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]

Przykładowe użycie:

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))

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0

Przy przeszukiwaniu list rozwiązań warto wybrać najoptymalniejszą drogą - np. przeszukiwanie binarne.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

Binarne jest na posortowanej kolekcji.

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0
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.

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.