Python - Najwyższy wynik

Python - Najwyższy wynik
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:około miesiąc
  • 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:12 minut
  • Postów:4896
3

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


D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:około miesiąc
  • Postów:172
0

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

Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:6 minut
  • Postów:6647
0

@darek88: pokaż jak wygląda lista.


🕹️⌨️🖥️🖱️🎮
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:około miesiąc
  • 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:ponad 5 lat
  • Ostatnio:28 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)

Robię http response status cody w martwych ciągach
edytowany 2x, ostatnio: ledi12
lion137
Ładnie, ładnie:)
Konrado777
  • Rejestracja:ponad 2 lata
  • Ostatnio:2 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
  • Rejestracja:ponad 2 lata
  • Ostatnio:około godziny
  • Postów:1612
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:około miesiąc
  • 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:około miesiąc
  • Postów:172
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:około miesiąc
  • Postów:172
0

screenshot-20250115130342.png

Konrado777
  • Rejestracja:ponad 2 lata
  • Ostatnio:2 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
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
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:2 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
  • Rejestracja:ponad 2 lata
  • Ostatnio:około godziny
  • Postów:1612
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:około 23 godziny
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:około miesiąc
  • 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:około miesiąc
  • 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:około 2 miesiące
  • Ostatnio:około 2 miesiące
  • Postów:5
0

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

loza_prowizoryczna
Użyj Lispa, tam wszystko jest listą.
M1
  • Rejestracja:około 2 miesiące
  • Ostatnio:około 2 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:prawie 7 lat
  • Ostatnio:minuta
  • Postów:1661
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:2 minuty
  • Postów:8411
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
  • Rejestracja:ponad 2 lata
  • Ostatnio:około godziny
  • Postów:1612
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:około 2 miesiące
  • Ostatnio:około 2 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:około 2 miesiące
  • Ostatnio:około 2 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
  • Rejestracja:ponad 2 lata
  • Ostatnio:około godziny
  • Postów:1612
0

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


Przetrzyma wszystko
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:12 minut
  • Postów:4896
0

Binarne jest na posortowanej kolekcji.


loza_prowizoryczna
  • Rejestracja:ponad 2 lata
  • Ostatnio:około godziny
  • Postów:1612
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
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)