• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie dla poczatkujacych

Object Storage Arubacloud
0 głosów
626 wizyt
pytanie zadane 18 marca 2023 w Python przez Asia BeDe Nowicjusz (130 p.)
Cześć,

Wykupiłam sobie kurs pythona dla początkujących na platformie by się trochę rozwinąć :) jestem mega zielona i bawie się w to dopiero kilka dni. Kurs polega na tym by dopiero po zrobieniu każdego zadania można dostać nowa teorie i nowe zadania. Z tym zadaniem mecze się już ponad dobę i nie mogę zrobić nic innego na platformie. Czy ktoś mnie poratuje i podpowie jak mam to zrobić. Wiem, ze nie można prosić o gotowe rozwiązania, ale ja jestem zdesperowana.

Prevent cheating

 

On Hyperskill, we sometimes need to check that the student's code doesn't use a particular method. For instance, when the task is to manually implement the factorial computation instead of using the factorial() function from the mathmodule. How could we do that?

It is straightforward. We can override math.factorial() to do something else — raise an error or print a message to the student. To do so, first, we define a function that does what we want (for example, prints a message) with the same arguments (since we want to disguise our new function as the original one). Then, outside this new function body, we need to assign it to math.factorial this way: math.factorial = new_math_factorial (pay attention to the absence of parentheses). Now, if the student tries to use math.factorial, our custom function will be raised. It happens because when multiple functions with the same name exist, the later one always overrides the prior.

In this task, you are a content creator at Hyperskill. Implement the example with the factorial yourself. Your program should override math.factorial() and make it printthe message Don't cheat! instead of calculating a factorial. You don't need to call anything.
 

 

Kod zaczyna się od:

Import math.

Pomocy!

i dziękuje jeśli ktoś się zlituje !

 

Asia
komentarz 18 marca 2023 przez Iei Obywatel (1,950 p.)

Raczej 

math.factorial = new_math_factorial

i wtedy umieścić w new_math_factorial to zdanie Don't cheat. Ale to jest tak zagmatwane, że nie wiem czy o to chodzi

komentarz 18 marca 2023 przez Asia BeDe Nowicjusz (130 p.)
Import math.
 
def math_factorial():
print("Don't cheat!")
math.silnia = new_math_factorial

Chyba nie...., ale dzieki

komentarz 18 marca 2023 przez Iei Obywatel (1,950 p.)

import z małej litery, bez kropki po math w pierwszej linijce no i pamiętaj o wcięciach w funkcji

komentarz 18 marca 2023 przez Asia BeDe Nowicjusz (130 p.)
import math
  
def math_factorial():
    print("Don't cheat!")
    math.silnia = new_math_factorial

wrong answer :(((

komentarz 18 marca 2023 przez Iei Obywatel (1,950 p.)
math.silnia = new_math_factorial

to już napisz poza funkcją 

1 odpowiedź

+1 głos
odpowiedź 18 marca 2023 przez tangarr Mędrzec (154,860 p.)

Żeby zrozumieć o co chodzi w zadaniu przeanalizuj i uruchom następujący kod

def funkcja():
    print("Oryginanla funkcja")
    
def inna_funkcja():
    print("Podmieniona funkcja")

funkcja()
funkcja=inna_funkcja
funkcja()

 

komentarz 18 marca 2023 przez Asia BeDe Nowicjusz (130 p.)
import math

def funkcja():
    math.factorial()
     
def inna_funkcja():
    print("Don't cheat!")
 
funkcja=inna_funkcja

 

komentarz 18 marca 2023 przez Asia BeDe Nowicjusz (130 p.)
Czy ja dobrze mysle?
komentarz 18 marca 2023 przez Iei Obywatel (1,950 p.)
Może lepiej zacznij od podstaw?
komentarz 18 marca 2023 przez Asia BeDe Nowicjusz (130 p.)
to wlasnie jest od podstaw...
komentarz 18 marca 2023 przez Iei Obywatel (1,950 p.)
edycja 18 marca 2023 przez Iei

W tym zadaniu masz napisać własną funkcję, która nadpisze standardową funkcję factorial z modułu math. Ten kod, który napisałaś ostatnio w komentarzu, robi coś innego niż jest w zadaniu

komentarz 18 marca 2023 przez tangarr Mędrzec (154,860 p.)

@Asia BeDe, Bardzo źle myślisz.
Treść zadania wprost mówi co masz zrobić. Kod który wkleiłem miał ci pomóc zrozumieć jak działa podmienianie funkcji.
Daj sobie dzisiaj z tym spokój. Nie myśl o tym, pobaw się czymś innym, daj głowie odpocząć. Wróć do problemu jutro, z wypoczętą głową.

1
komentarz 18 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
edycja 18 marca 2023 przez pasjonat_algorytmiki

Ogólnie radziłbym nauczyć się najpierw kompletnych podstaw składni języka, np: wypisywanie i wczytywanie danych, zmienne, if, elseify, else, pętle, tablice itp

 
 

 

 

komentarz 18 marca 2023 przez Asia BeDe Nowicjusz (130 p.)
W tym problem, ze w kursie jest to dalej a ja nie moge isc dalej bo kurs wymaga robienia po kolei zadan (kazde zadanie ma byc zaliczone). To jakies szalenstwo a ja za to zaplacilam i jestem przyblokowana :/
komentarz 18 marca 2023 przez tangarr Mędrzec (154,860 p.)

Nie pójdziesz dalej, jeżeli będziesz ślęczeć nad tym zadaniem bez odpoczynku.

Albo jesteś przemęczona i dlatego nie rozumiesz co masz zrobić albo programowanie nie jest dla ciebie. W tym drugim przypadku, nawet jeśli dostaniesz rozwiązanie i przejdziesz dalej to i tak się zablokujesz na kolejnym zadaniu.

Polecam zrobić sobie przerwę na odpoczynek psychiczny. Porób jakieś ćwiczenia ruchowe, zajmij się czymś innym, najlepiej jakąś prostą czynnością niewymagającą myślenia (sprzątanie, prasowanie, siłownia, basen).  Potem się wyśpij.

Wróć do problemu ze świeżą głową. Przeczytaj dokładnie opis zadania. Przetłumacz sobie osobno każde zdanie. Najlepiej zapisz to sobie. Potem wróć tutaj i przeczytaj komentarze. Zwróć uwagę na swój kod w jednym z komentarzy i porównaj go z moim przykładem. Może cytat

Then, outside this new function body, we need to assign it to math.factorial this way: math.factorial = new_math_factorial (pay attention to the absence of parentheses).

pomoże ci zauważyć gdzie masz błąd.

Jeżeli cały czas będziesz mieć problemy to wróć do początku kursu. Nie ma sensu iść dalej, jeżeli czegoś nie rozumiesz. Rozwiązanie zadania przez przypadek i przejście dalej nic ci nie da. Programowanie musisz zrozumieć. Musisz rozumieć co się dzieje w każdej linijce kodu. Pamiętaj, że w Pythonie wielkość liter ma znaczenie, np KOT i kot to dwa zupełnie inne identyfikatory. Pamiętaj, że w Pythonie wcięcia w kodzie mają ogromne znaczenie.

komentarz 18 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)

@Asia BeDe, 

Proste kilka rad. Jeżeli masz czas, to poglądaj sobie tutoriale od podstaw, np tu masz jakiś kurs podstaw pythona w godzinę, nie oglądałem, ale wydaje się być spoko:

https://www.youtube.com/watch?v=I1uOp-e03rw&t=67s

Potem jeżeli masz czas i możliwości itp. to odpalasz sobie szkopuła / spoja i robisz zadanka od najprostszych na pętle if-y, tablicę itp. Nie wiesz czegoś, to wysyłasz na forum pytanie. Ja robiąc zadania na szkopule, po kilku miesiącach nauki doszedłem do całkiem dobrego poziomu w pętlach, if-ach, tablicach, funkcjach itp. A potem czym dłużej się uczysz, tym poznajesz coraz ciekawsze problemy(a z czasem nawet jakieś algorytmy).

Moim zdaniem robienie zadań ze wspomnianego szkopuła / spoja itp. To najlepszy sposób na trening. Bo tutoriale/ksiażki itp. są fajne, żeby zrozumieć jak coś działa, ale praca własna, robienie zadań to podstawa.

 

komentarz 18 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)

@tangarr, 

"albo programowanie nie jest dla ciebie". O nie nie nie, bez takich. Każdy kiedyś zaczyna i pisanie, że coś nie jest dla Ciebie moim zdaniem jest okropne. Każdy niech sam sobie oceni, kiedy nie jest coś dla niego, ale dopóki się stara i mu się chce, to dobrze, że prosi o pomoc.

Ale uwaga, żeby sobie odpocząć jest słuszna.

komentarz 18 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Jeszcze raz podkreślę, że twój problem tkwi moim zdaniem w wyborze kursu do nauki. Obejrzyj sobie ten tutorial, powinien Ci dużo wyjaśnić. Na kanale Pasja Informatyki, masz też chyba serię pythona: https://www.youtube.com/watch?v=BVZHxKL14T0&list=PLOYHgt8dIdoz8uL9CTMyRGQ3ZzPaRBFEO

i masz też inne odcinki chyba.
2
komentarz 18 marca 2023 przez tangarr Mędrzec (154,860 p.)
Różnej maści boot campy próbują wmówić ludziom, że każdy może zostać programistą, ale nie jest to prawda. Ludzie mają różne predyspozycje, niektórych ograniczeń po prostu nie da się przeskoczyć.

To, że dla ciebie coś jest łatwe do zrozumienia to nie znaczy, że wszyscy inni też będą w stanie to zrozumieć jeżeli wystarczająco się do tego przyłożą.

Treść zadania wprost mówi co należy zrobić. Dlatego założyłem dwie alternatywy: przemęczenie umysłowe lub brak predyspozycji. W żadnym wypadku nie zgodzę się, że było to okropne. Było to realistyczne spojrzenie na sytuację. Nie próbowałem jej zniechęcać. Skupiłem się głównie na tym by pozwoliła sobie odpocząć. Dobrze wiem, jak pomaga spojrzenie na problem świeżym okiem po odświeżającym śnie.
komentarz 18 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
A może problemem była np. angielska treść. Też jest to możliwe.
1
komentarz 18 marca 2023 przez tangarr Mędrzec (154,860 p.)
Możliwe, dlatego sugerowałem dokładne przetłumaczenie treści zadania.

Inną możliwością (którą nie wprost zasugerowałeś) jest po prostu niska jakość materiału szkoleniowego.
komentarz 18 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
"Inną możliwością (którą nie wprost zasugerowałeś) jest po prostu niska jakość materiału szkoleniowego."

Też mi się tak wydaje. Takie zadanie na sam start wydaje mi się, że średnio świadczy o materiale. Moim zdaniem na start (pierwsze kilka godzin nauki), powinno się pokazać podstawy, a dopiero potem jakieś zadania. Dlatego podlinkowałem link do tych filmików.
komentarz 19 marca 2023 przez Iei Obywatel (1,950 p.)
@Asia Bede HyperSkill to jest jakaś nieznana platforma. Na przyszłość zastanów się nad wyborem jakiejś sprawdzonej, np. Udemy. Tam będziesz miała wszystko po polsku i bardzo mało prawdopodobne jest, że będziesz musiała męczyć się z takimi tajemniczymi zadaniami

Podobne pytania

+1 głos
2 odpowiedzi 2,529 wizyt
pytanie zadane 20 lutego 2016 w Java przez Aisekai Nałogowiec (42,190 p.)
+2 głosów
3 odpowiedzi 8,122 wizyt
pytanie zadane 18 lipca 2015 w C i C++ przez maciekvip90 Nowicjusz (140 p.)

92,674 zapytań

141,574 odpowiedzi

320,045 komentarzy

62,038 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...