Python Girilen verinin Str mi İnt mi olduğunu anlama

Python da bir veri girişi yaptığımızda bunun str mi int mi olduğuna göre işlem yaptırmam gerekiyo. Mesela str ise harflerine ayırmam int ise asal olup olmadığını görmem gerekiyor. Bunun için ne yapabilirim?

n = input()
try:
    number = int(n)
    is_prime_number(number)
except ValueError:
    divide_str(n)

Öncelikle teşekkür ederim ancak daha bu kadar kod görmedik. Daha basit bir şekilde ifade etmeniz benim için daha makul olur. Misal: if veri==str: gibisinden bir şeyler kullanabilir miyim?

Merhaba,

data = input()
data.isnumeric() //data daki tüm karakterler rakam ise True döner.

Girilen veri (input ile aldigini varsayarsak) her zaman str. Yapabilecegin tek sey int’e cevrilip cevrilemedigini kontrol etmek, bunun pitonik yontemi de islemi yapip olasi exception’lari yakalamak, yani yukaridaki ornege baya benzeyen bir sey.

Ne kadar gordunuz? Niye gordugun sekliyle yapmiyorsun?

1 Beğeni

input ile aldiginiz degerler her turlu string olarak elinize gecer zaten sonra veriyi islemeniz gerekiyor icinde sadece rakam varsa o zaman int e cevirebilirsiniz aldiginiz inputun int mi yoksa str mi oldugunu direkt olarak bu nedenle bilemiyorsunuz

mesela yukardaki kodda yapilan sey girilen string i int a cevirmeye calisiyor eger basarisiz olursa valueerror verdigi icin diger blogu calistiriyor eger basarili olursa alt satira gecip is_prime_number fonksiyonunu calistiriyor

Yapamadığım için sorma gereği duydum şu an fonksiyonlar konusunu işliyoruz. Bir değer girmemizi bu değerin sayı veya yazı olmasına göre işlemlere tabii tutulmasını istiyor bizden bunu da fonksiyon olarak tanımlamamız gerekiyor. Takıldım yapamadım.

return ifadesini, fonksiyon bitmeden erken return'u gorduyseniz yapabilirsin. Biraz kurcala kodu. Bak, arada anlatimi bile gelmis.

Bir str'nin int olup olamayacagini anlamanin yontemini gosterdilerse gosterdikleri sekilde yap. Gostermedilerse, ne sekilde yaparsan yap gostermedikleri bir sekilde yapmis olacaksin zaten? Internete sorup dogrusunun bu oldugunu ogrendigini soyleyebilirsin.

Bi isguzar cikip cevabin tamamini yazmadigi surece bu soruyu referans olarak bile gosterebilirsin. Odevini senin icin yapmadik, ogrenmene yardimci oluyoruz.

Hayır benim için yapın demiyorum zaten sadece siz benden bilgili olduğunuz için yardım istemiştim.

Sana böyle bir şey söylemiştim ya, bunun fonksiyonunu sen yazabilirsin.

  • Önce string in her elemanını döngüye sokarsın.
  • Sonra döngüdeki her karakter için “0123456789” içinde olup olmadığını kontrol edersin. Eğer bu karakter, rakamların içinde değilse False, döngü bitimine ulaşırsan da true dönersin. Bunun implementation’ ını sen yapabilirsin. Aklıma başka çözüm gelmiyor.

Umarım işgüzarlık yapmadım, yaptığımı düşünüyorsanız sileceğim postumu.

Dediğin gibi basit fonksiyonlarla birşey yaptım
a=input('eleman:')
if a.isnumeric()== True :
print('''Bu Bir İnt'dir''')
a=int(a)
if a/a==1 or a/1==a:
print('bu sayı asaldır')
else:
print('Bu Bir STRdir')
print(a, sep=' ')

Boyle dediginizi dusunmedim. Sorunun neden referans gosterilebilecegini soyledim: Odevi yapmadigimiz, sadece odevle ilgili bir soruya cevap verdigimiz icin.

Yok yok. siz dogru cevabi verdiniz.

Odevin gereksinimlerinden biri soruyu cevaplayan fonksiyon yazmak ya. Bu ornek kodu alip duruma gore True/False donduren bir fonksiyona cevirirsek cevabi kasikla beslemis olacagiz. O noktaya kadar sorun yok.

int’e cevrilip cevrilemeyecegini nasil anlarim” sorusunun cevabi “try: int; (int); except: (degil)”

(Ozellikle ders daha teorik bir CS programinin parcasiysa) String’i karakter karakter isleyen bir DFA/state machine veya bu makineyi temsil eden bir regular expression + re modulu de kullanilabilir.

1 Beğeni

Cevaplarınız için teşekkür ederim hepinize.