Napisz program sprawdzający, czy wpisana z klawiatury liczba naturalna jest podzielna
przez 3. Wykonaj to zadanie bez wykorzystania operatora reszty z dzielenia. Zauważ, że
gdy zsumujesz cyfry wczytanej liczby, potem cyfry powstałej sumy i będziesz powtarzać
to sumowanie, aż uzyskasz jedną cyfrę, otrzymasz odpowiedź. Jeśli cyfrą, którą uzyskasz,
będzie 3, 6 lub 9, to wczytana liczba jest podzielna przez 3.
Na przykład dla liczby 32 415 należy obliczyć sumę 3 + 2 + 4 + 1 + 5 = 15, a następnie
1 + 5 = 6. Wynikiem jest cyfra 6, więc liczba 32 415 jest podzielna przez 3 potrebuje najlepiej gotowca
@timorh: Najpierw pokaż co sam zdążyłeś napisać.
>>> n = 32415
>>> sum(map(int, str(n)))
15
Powtarzaj sobie w pętli aż n < 10
.
Dlaczego nas tak bardzo nie szanujesz, że zakładasz konto tylko po to, żeby ktoś wkleił Ci gotowe rozwiązanie? Co my Ci zrobiliśmy, że nas tak nienawidzisz?
Jest to zadanie dla mojego dziecka które jest aktualnie chore i staram sie mu w tym pomóc a ja sam dużo nie wiem bo ja nie miałem inforamtyki w szkole.
Normalnie rodem jak z jakiegoś olx :P
Co w przypadku gdy nauczyciel poprosi twoje dziecko o omówienie działania tego kodu?
poza tym jeśli dziecko jest chore i nie jest w stanie napisać tego programu to też raczej nie powinno uczestniczyć w e-lekcjach. Jak napisal @UglyMan, zrobi jak wyzdrowieje.
A jeśli chcesz mu pomóc w zrozumieniu to dowiedz się jak działaj w Pythonie zmienne, operatory, pętle oraz zamienianie napisu w liczbę.
Myślę, że jako rodzic, z chęcią przeniósłbyś ten temat do działu ogłoszenia drobne, gdzie ktoś za być może niecałą stówkę chętnie je rozwiąże.
input_from_user:int = int(input("Podaj liczbę: "))
while(len(str(input_from_user)) != 1):
input_from_user:int = sum(int(x) for x in str(input_from_user))
if(int(input_from_user) in [3, 6, 9]):
print("Podana liczba jest podzielna przez 3.")
else:
print("Podana liczba nie jest podzielna przez 3.")
(lambda n: print(["nie", ""][not (n/3 - n//3)]+"podzielna"))(int(input()))
enedil napisał(a):
n = int(input()) n -= n // 3 print(["", "nie"][n == 0], "podzielna", sep="")
Matko boska! Co to za maszkara? :|
@Suchy702 Zrób tak:
n = int(input())
print("podzielna" if n % 3 == 0 else 'niepodzielna')
Nie wiem co za procenty używasz ale mam coś takiego i działa!
n = input()
while len(str(n)) > 1:
n = sum([int(i) for i in n])
print(["nie", ""][n in [3, 6, 9]], "podzielna", sep="")
Ale postaram się jeszcze skrócić
Suchy702 napisał(a):
@TomRiddle
Nie wiem co za procenty używasz ale mam coś takiego i działa!n = input() while len(str(n)) > 1: n = sum([int(i) for i in n]) print(["nie ", ""][n in [3, 6, 9]], "podzielna", sep="")
Ale postaram się jeszcze skrócić
No nie wiem, operowanie na liczbach jako stringach wydaje mi się turbo słabym pomysłem.
Jeśli nie możesz użyć %
to może możesz użyć //
? Czyli dzielenie bez reszty, i odjąć to od orginalnej liczby. To byłoby w sumie ten sam wynik co %
.
n = int(input())
mod = n - (n // 3) * 3
print("podzielna" if mod == 0 else 'niepodzielna')
Ale moim zdaniem to zadanie jest turbo bezsensu. To prawda że można sprawdzić czy liczba jest podzielna, poprzez jej notację w dowolnej bazie (np bazie 10), i potem je dodać, i tak iteratywnie sprawdzić podzielność, ale jest to wysoce kosztowny i nieopisowy sposób.