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

SPOJ "Obżartuchy" - błąd wykonania (NZEC)

VPS Starter Arubacloud
+1 głos
293 wizyt
pytanie zadane 19 sierpnia 2021 w Python przez jamie80 Początkujący (320 p.)

Witam. Jako totalny nowicjusz, postanowiłem rozwiązać zadanie na SPOJU "Obżartuchy". Niby wszystko mi działa i wszystko dobrze liczy, ale gdy przesyłam rozwiązanie, to otrzymuję komunikat, "Błąd wykonania (NZEC). Nie bardzo wiem o co w tym chodzi. Gdyby ktoś mógłby mi wyjaśnić o co chodzi? Poniżej podaję kod oryginalny z opisami:

licznik = input("Ile razy chcesz wykonać test? ")
licznik = int(licznik)
licznik_testu = 0

while licznik_testu < licznik:
	licznik_testu += 1

	wynik_wszystkich_ciastek = 0

	obzartuchy = input("\nIlu przybyło obżartuchów? ")
	obzartuchy = int(obzartuchy)

	ciastka_w_pudelku = input("Ile ciastek mieści się w jednym pudełku? ")
	ciastka_w_pudelku = int(ciastka_w_pudelku)

	licznik_obzartuchow = 0
	while licznik_obzartuchow < obzartuchy:
		licznik_obzartuchow += 1
		pozarcie_ciastka = input ("W ile sekund obżartuch je jedno ciasrtko? ")
		pozarcie_ciastka = int(pozarcie_ciastka)

		wynik_ciastek_obzartucha = 86400/pozarcie_ciastka
		wynik_ciastek_obzartucha = int(wynik_ciastek_obzartucha)
		wynik_wszystkich_ciastek += wynik_ciastek_obzartucha

	print(f"wszystkich ciastek zostało zjedzonych {wynik_wszystkich_ciastek}.")
	wynik_pudelek = wynik_wszystkich_ciastek / ciastka_w_pudelku
	wynik_pudelek = int(wynik_pudelek)
	wynik_reszty_z_pudelek = wynik_wszystkich_ciastek % ciastka_w_pudelku
	if wynik_reszty_z_pudelek == 0:
		print(f"Należy kupić {wynik_pudelek} pudełek.")
	else:
		print(f"Należy kupić {wynik_pudelek + 1} pudełek.")


Natomiast, poniżej przesyłam kod, który wysłałem do sprawdzenia na SPOJ:

licznik = input()
licznik = int(licznik)
licznik_testu = 0

while licznik_testu < licznik:
	licznik_testu += 1

	wynik_wszystkich_ciastek = 0

	obzartuchy = input()
	obzartuchy = int(obzartuchy)

	ciastka_w_pudelku = input()
	ciastka_w_pudelku = int(ciastka_w_pudelku)

	licznik_obzartuchow = 0
	while licznik_obzartuchow < obzartuchy:
		licznik_obzartuchow += 1
		pozarcie_ciastka = input ()
		pozarcie_ciastka = int(pozarcie_ciastka)

		wynik_ciastek_obzartucha = 86400/pozarcie_ciastka
		wynik_ciastek_obzartucha = int(wynik_ciastek_obzartucha)
		wynik_wszystkich_ciastek += wynik_ciastek_obzartucha

	wynik_pudelek = wynik_wszystkich_ciastek / ciastka_w_pudelku
	wynik_pudelek = int(wynik_pudelek)
	wynik_reszty_z_pudelek = wynik_wszystkich_ciastek % ciastka_w_pudelku
	if wynik_reszty_z_pudelek == 0:
		print(wynik_pudelek)
	else:
		print(wynik_pudelek + 1)

 

komentarz 20 sierpnia 2021 przez Wiciorny Ekspert (269,120 p.)
tylko, że aktualny kod jest błędny.
komentarz 20 sierpnia 2021 przez jamie80 Początkujący (320 p.)
Pewnie masz rację twierdząc, że kod jest błędny. Zdaję sobie sprawę, iż można to zrobić w o wiele łatwiejszy sposób. Jednak, czytałem ostatnio o pętli WHILE, więc postanowiłem wykorzystać ją w tym zadaniu. W sumie, to wszystko mi liczy i wyniki wychodzą poprawnie. Gdzie zatem tkwi błąd i o co chodzi z tym NZEC?

1 odpowiedź

+1 głos
odpowiedź 20 sierpnia 2021 przez Whistleroosh Maniak (56,900 p.)

input() pobiera całą linię danych. W linii 10 i 13 dwa razy korzystasz z input(), mimo iż dane, które chcesz pobrać, znajdują się w tej samej linii. Najłatwiej rozwiązać to zamieniając wszystko od 10 do 14 linii na:

obzartuchy, ciastka_w_pudelku = map(int, input().split())
komentarz 20 sierpnia 2021 przez Wiciorny Ekspert (269,120 p.)

tylko, że jeśli zostanie coś wpisane, nie pobierze całej lini według doc.
 

input() Return Value

The input() method reads a line from the input (usually from the user), converts the line into a string by removing the trailing newline, and returns it.

If EOF is read, it raises an EOFError exception.

ale, w ramach prompt

  • prompt (Optional) - a string that is written to standard output (usually screen) without trailing newline

, nie ma znaku nowej lini . 
 

komentarz 20 sierpnia 2021 przez Whistleroosh Maniak (56,900 p.)
Nie rozumiem. Gdzie ma coś być wpisane? Przetestowałem program, więc wiem, że działa. Chyba, że mówisz o tym, że input() nie pobiera wartości tego prompta, ale nie wiem co to zmienia

Podobne pytania

0 głosów
1 odpowiedź 359 wizyt
pytanie zadane 21 czerwca 2021 w Python przez Dron Początkujący (280 p.)
0 głosów
2 odpowiedzi 1,130 wizyt
pytanie zadane 2 maja 2019 w Python przez TomJar Nowicjusz (230 p.)
0 głosów
1 odpowiedź 3,670 wizyt
pytanie zadane 15 listopada 2018 w Python przez buchacz Nowicjusz (160 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...