Pytanie o kod kompletnie nie wiem co z tym

Cześć.
Męczę się bo potrzebuję stworzyć program jaki zmieni w ciągu znaków powtarzany znak jaki się powtórzy na $. Przykładowo słowo technikinformatyk będzie jako technik$nforma$y$
Jak w ogóle się do tego zabrać? `

print("podaj wyraz?")
imie = input()
print (imie [0:])
   

Wyświetla mi oczywiście wszystko, ale nie wiem jak się zabrać za powtarzane…

Może tak?

name = input("Podaj wyraz: ")
changed_letter = name.replace("t", "$")
print(changed_letter)

Lub tak.

name = input("Podaj wyraz: ")

for i in name:
  if name.count(i) > 1:
    changed_letter = name.replace(i, "$")
    print(changed_letter)
1 polubienie

Mam też coś @roobal :slight_smile:
Dzięki za odpowiedź i kod.

print("podaj wyraz?")
w= input()
 
w2 = ""
for ch in w:
  if ch in w2:
     ch = "$"
   w2 += ch
print(w2) 

Nie wiem czy to chciałeś osiągnąć, ale kod, który podałem daje taki wynik.

$echnikinforma$yk
tech$iki$formatyk
techn$k$nformatyk
techni$informaty$
techn$k$nformatyk
tech$iki$formatyk
$echnikinforma$yk
techni$informaty$

W tym kodzie nie możesz dodawać +1 do stringa, tu musiałby być integer (liczba). Możesz to spróbować zrobić tak, chociaż wyjściowo uzyskasz to samo, co w moim kodzie. Według mnie nie ma sensu tak sobie kompikować życia :wink:

w = input("Podaj wyraz: ")
 
w2 = {}
for ch in w:
    if ch in w2:
        w2[ch] += 1
    else:
        w2[ch] = 1

for ch, val in w2.items():
    if val > 1:
        replaced = w.replace(ch, "$")
        print(replaced)

W tej wersji jednak inne jest wyście :slight_smile:

techinkinformatyk
$echinkinforma$yk
tech$nk$nformatyk
techi$ki$formatyk
techin$informaty$

@roobal
Ten kod co mam wyświetla jak w tym ćwiczeniu chciałem czyli output:
podaj wyraz?
technikinformatyk
technik$$forma$y$
i nawet działało :slight_smile:
Potrzebowałem jak użytkownik poda technikinformatyk to wynik mu się wyświetli jako
technik$$forma$y$

Nie mogło działać, gdyż Twój kod zwraca błąd.

w2 += ch
            ^
IndentationError: unindent does not match any outer indentation level

Natomiast Ty chcesz zamienić kilka liter w jednym stringu (i, n, t , k), czyli musiałbyś dopasować za jednym razem kilka liter. Pętla for w moim kodzie szuka liera po literze, tej samej, dlatego dla każdego duplikatu masz kilka wyjść.

Coś ze znakami. Teraz jest ok, zadziało mi - tylko przy ok sfornatowanym
print(„podaj wyraz?”)
w= input()

w2 = „”
for ch in w:
if ch in w2:
ch = „$”
w2 += ch
print(w2)

Takie coś:

Kod daje wynik.

technik$$forma$y$

Jednak według tego co napisałeś, nie spełnia Twojego założenia. Nie spełnia nawet przykładu, który podałeś.

W przypadku tego słowa, wynik powinien być mniej więcej taki.

$ech$$$$$forma$y$

Wybacz @roobal jeśli coś nakrecilem w treści :slight_smile:
Program taki chciałem, że przy napisaniu
technikinformatyk
Kod daje wynik.

technik$forma$y$

Przy nbahuba wynik nbahu$$

Ok, czyli chcesz zmienić tylko znak, który się powtórzył :wink:

1 polubienie

Tak, w ten sposób chciałem :slight_smile:

:+1: