Kezdőoldal » Számítástechnika » Programozás » Pythonban ezt hogy oldanátok meg?

Pythonban ezt hogy oldanátok meg?

Figyelt kérdés

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é. :)



2017. nov. 30. 14:30
 1/5 anonim ***** válasza:
69%

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

2017. nov. 30. 14:36
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
53%

Vagy, a stringet végigjáró ciklusban:


if str[i].isdigit()

...

2017. nov. 30. 14:46
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

É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).

2017. nov. 30. 15:12
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
67%

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.

2017. nov. 30. 16:04
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

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)

2017. nov. 30. 20:31
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!