Pythonban ezt hogy oldanátok meg?
Az input() utasítással kérjünk be egy karakterláncot és egyenként, egymás alá írjuk ki a
karaktereket, de a számjegyek helyett a '@' jelet írjuk!
érettségire gyakorlok, de itt eléggé elakadtam, azt értem hogy bejárásos ciklus kell, de nem tudom,hogy különböztessem ki a betűket a számoktól,hogy mindkettő helyet foglaljon a kimenetben.
Aki elmagyarázna, hálám üldözné. :)
pl felveszed a számjegyeket egy stringbe:
nums = "0123456789"
Utána a kapott karakterláncot karakterenként végignézed.
Ha az adott karakter benne van a nums-ban, akkor számjegy, ha nincs, akkor nem az.
find függvénnyel tudod nézni, hogy benne van-e
if nums.find(c)>-1
//Ez számjegy
else
//Ez nem számjegy
Vagy, a stringet végigjáró ciklusban:
if str[i].isdigit()
...
Én nem használnék ciklusokat, ha nem muszáj... inkább így csinálnám:
import re
a = '123dsf%sdgFE9j73'
a = re.sub(r"[0-9]", "@", a)
print("\n".join(list(a)))
re.sub(r"[0-9]", "@", a) kifejezés azt csinálja, hogy a string-ben az összes számjegyet (0-9) kukacra cseréli. Itt a reguláris kifejezésekkel és a re könyvtárral kell megismerkedni.
Ezután a sztringet karakterekre szétbontjuk list(a), majd az így kapott lista elemeit, newline karakterekkel elválasztva kiírjuk (itt a join-t kell megnézni).
Az 1. válasz jó, de bonyolult, ezt olyan nyelvekben használjuk, ahol nincs isdigit() függvény.
A második válasz lesz a te barátod.
A harmadik válasz nagyon magas szintű eszközt használ, ami nem érettségi anyag, és nem is könnyű elsőre megérteni. Ez a reguláris kifejezés (regex). Ha megérted, olyan eszközt kapsz a kezedbe a szövegelemzéshez, ami sokszor lesz még hasznodra a pályán, de ha nem akarsz komolyan programozni a jövőben, vagy még nem érted, akkor maradj a #2-nél.
Ha nem szereted túlbonyolítani a dolgokat, akkor megoldod egy sorban:
for c in input(): print('@' if c.isdigit() else c)
Persze számtalan módon megoldhatod, akár ilyen elvetemült (nem igazán pythonos) módon is:
s = input()
nums = "0123456789"
for i in range(len(s)):
....isdigit = False
....for j in range(len(nums)):
........if s[i] == nums[j]:
............isdigit = True
....if isdigit:
........print('@')
....else:
........print(s[i])
Ez mondjuk már egy fokkal pythonosabb:
s = input()
for c in s:
....if c.isdigit():
........print('@')
....else:
........print(c)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!