Python - Najwyższy wynik

Python - Najwyższy wynik
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
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:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4923
3

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


D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
0

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

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:minuta
  • Postów:6656
0

@darek88: pokaż jak wygląda lista.


🕹️⌨️🖥️🖱️🎮
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
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}")
edytowany 1x, ostatnio: Riddle
lion137
Sformatuj, i co drukuje?
Spine
Gdyby chociaż ta lista zawierała też imiona uczniów, to rozwiązanie by miało jakieś praktyczne zastosowanie
Pyxis
@Spine: statystyka też ma jakąś w sobie tam wartość. Ale fakt, to zadanie bardziej na zasadzie napisz pętlę.
ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 miesiące
  • 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)

Robię http response status cody w martwych ciągach
edytowany 2x, ostatnio: ledi12
lion137
Ładnie, ładnie:)
Konrado777
  • Rejestracja:ponad 2 lata
  • Ostatnio:3 miesiące
  • 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)
edytowany 2x, ostatnio: Konrado777
loza_prowizoryczna
loza_prowizoryczna
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 7 godzin
  • Postów:1629
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


Przetrzyma wszystko
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
0

Przedstawione rozwiązania są nieprawidłowe.

Konrado777
Konrado777
To jakie jest prawidłowe? Masz treść zadania z opisem?
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
0
loza_prowizoryczna
loza_prowizoryczna
A można bez logowania?
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
0

screenshot-20250115130342.png

Konrado777
  • Rejestracja:ponad 2 lata
  • Ostatnio:3 miesiące
  • 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.

loza_prowizoryczna
loza_prowizoryczna
Przecież Python to św. Graal w badaniach fizycznych. Czego innego oczekiwałeś?
Konrado777
Konrado777
Wiesz. ale jeśli można użyć funkcji sumowania całej listy to jaki ma cel, używanie sumowania pojedyńczego elementu do elementu?
loza_prowizoryczna
loza_prowizoryczna
Bo można, bo Python jest wolny, bo siadają do niego studenci po kursie C i odkrywają że to PHP tyle że bez wskaźników.
Konrado777
  • Rejestracja:ponad 2 lata
  • Ostatnio:3 miesiące
  • 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)
Pyxis
Równie dobrze można wprost potraktować treść zadania i napisać return student_scores[0]
loza_prowizoryczna
loza_prowizoryczna
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 7 godzin
  • Postów:1629
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.


Przetrzyma wszystko
Pyxis
  • Rejestracja:ponad 7 lat
  • Ostatnio:44 minuty
0

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

Konrado777
Konrado777
Na screenie jest treść zadania.
Pyxis
Widziałem, ale ja mówię o treści lekcji, a nie zadania. Chyba, że nie umiem w Udemy i tam są same zadania.
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
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}")


Pyxis
No przecież takie dał @Konrado777, to napisałeś, że nieprawidłowe.
Konrado777
Konrado777
Może źle podstawił zmienne.
Pyxis
Też tak pomyślałem...
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 dni
  • Postów:172
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:3 miesiące
  • Ostatnio:3 miesiące
  • Postów:5
0

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

loza_prowizoryczna
loza_prowizoryczna
Użyj Lispa, tam wszystko jest listą.
M1
  • Rejestracja:3 miesiące
  • Ostatnio:3 miesiące
  • 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:około 7 lat
  • Ostatnio:3 minuty
  • Postów:1674
0

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


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 godziny
  • Postów:8422
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


edytowany 1x, ostatnio: LukeJL
loza_prowizoryczna
loza_prowizoryczna
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 7 godzin
  • Postów:1629
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ń.


Przetrzyma wszystko
M1
  • Rejestracja:3 miesiące
  • Ostatnio:3 miesiące
  • 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:3 miesiące
  • Ostatnio:3 miesiące
  • 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
loza_prowizoryczna
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 7 godzin
  • Postów:1629
0

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


Przetrzyma wszystko
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4923
0

Binarne jest na posortowanej kolekcji.


loza_prowizoryczna
loza_prowizoryczna
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 7 godzin
  • Postów:1629
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.


Przetrzyma wszystko

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.