Problem oko zadatka

Zdravo,

imam jos jedan problem. Rec je o zadatku https://petlja.org/biblioteka/r/Zbirka-python/ima_li_cifru.
Na nekim primerima mi izbacuje WA. Ideja ja bila da unesem n kao string i da petlja prolazi kroz promenljivu, i ako ima cifre da je doda u promenljivu koja ima vrednost 0. Kroz if pogledam da li je a > 0 i ako jeste stampamo da ima a u suprotnom da nema.
Moj kod:
n = input()
k = int(input())
a = 0
for i in range(len(n)):
if i == k:
a += k
if a > 0:
print(‘broj’, n, ‘sadrzi cifru’, a)
else:
print(‘broj’, n, ‘ne sadrzi cifru’, k)

Zdravo,

Izvini što tek sad odgovaram. Video sam tvoju poruku i napisao sam ti odgovor ali nisam pritisnuo send, a pomislio sam da sam odgovorio.

Vidim da si lepo krenuo, ali hajde probaj da razmisliš šta se tačno dešava sa programom koji si ti napisao.

Rekao si mu ovako: Uđi u petlju od 1 do nekog broja i u svakom prolazu kroz petlju, ako je deljivo, napiši da je deljiv = true, a ako nije, napiši da je false. Međutim, program će prolaziti kroz petlju do kraja petlje, nevezano za to da li su svi brojevi deljivi ili ne, što znači da će tvoja logička promenjljiva imati vrednost koju dobije u poslednjem koraku petlje nevezano za to da li su ostali koraci bili deljivi ili ne. Svaki put će da ide od 1 do broja n i ako je k deljiv sa n, promenljiva deljiv će imati vrednost True, a tvoj program će ispisivati “da”.
Ovo je problematično zato što u slučajevima kada je, recimo, k deljivo sa n, ali ne i sa n-1 (na primer, 90 je deljivo sa 5, ali ne i sa 4), tvoj program će ispisati “da”, a treba da ispiše ne.

Razmisli kako bi ovo rešio.

Pozdrav

Hvala na odgovoru za zadatak sa deljivim brojem, to sam uspeo da resim, ali mi nije jasno zasto mi na nekim primerima izbacuje WA za zadatak https://petlja.org/biblioteka/r/Zbirka-python/ima_li_cifru.
Koji god primer da postavim dobro radi:
Kod:
n = input()
k = int(input())
a = 0
for i in range(len(n)):
if i == k:
a += k
if a > 0:
print(‘broj’, n, ‘sadrzi cifru’, a)
else:
print(‘broj’, n, ‘ne sadrzi cifru’, k)

Ako si baš hteo da uneseš string napravio si problem u tome što ti brojač ne uzima vrednost cifara nego vrednost njihovih pozicija u stringu. Ako imaš petlju u kojoj i uzima vrednosti do len(neki_string), i će imati vrednosti 0, 1, 2, 3, 4… broj_cifara-1. Probaj da pokreneš vaj kod i da vidiš šta će da se desi:

n = input()
for i in range(len(n)):
    print(i)

Dakle, tebi je u svakom prolasku kroz petlju, i ima vrednost redom od 0 do broj_cifara-1, a pri tome i NE UZIMA vrednost cifre na toj poziciji, nego uzima vrednost POZICIJE. Ako želiš da ti i ima vrednost elementa iz stringa to uradiš tako što pronađeš elemnt stringa sa tim indexom. Probaj da pokreneš sledeći kod i vidiš šta će da se desi.

n = input()
for i in range(len(n)):
    x = n[i]
    print(x) 

Nadam se da ti ovo pomaže da rešiš zadatak ovako kako si počeo. Ako ne, probaj da ga rešiš tako što ćeš koristiti mod da bi dobio cifru na određenoj poziciji.