Merhaba, Python programlama dilini kendi başıma öğrenmeye çalışıyorum. Bugün öğrenebildiğim teorik bilgileri bir programa dökmeye karar verdim ve başlıkta gördüğünüz projeyi yaptım. Kodlar şu şekilde:
Python:
# kullanıcının girdiği sayının asal olup olmadığını bulma
while True:
sayi = input("Öğrenmek istediğiniz sayıyı girin (Çıkmak için 'q' girin): ")
if sayi == "q":
print("Programdan çıkılıyor...")
break
else:
try:
sayi = int(sayi)
kontrol = 0
for i in range(2, sayi+1):
if sayi % i == 0:
kontrol += 1
if kontrol == 1:
print('Girdiğiniz sayı asaldır.')
else:
print('Girdiğiniz sayı asal değildir.')
except ValueError:
print('Lütfen sadece sayı girişi yapın!')
Sadece şöyle bir sorum olacak. Hata ayıklama kısmında (yani try... except... kod bloğunda) kullanıcı sayı girmediği zaman ValueError hatasını kullanıcıya verebiliyorum ancak kullanıcı hiçbir giriş yapmadığı zaman da ValueError olduğu için yine aynı hata mesajını gösteriyor. Ben kullanıcı giriş yapmadığında farklı bir hata mesajı vermek istiyorum. Bunu nasıl yapabilirim? Onun haricinde yorumlarınızı ve önerilerinizi bekliyorum.
soruna cevap verecek bilgim yok ama kodu hızlandırmak adına range'i 2 den sayi+1 e yapmana gerek yok hiç bir sayının kendinin karekökünden büyük asal böleni yoktur o yüzdeen sayi*0.5 +1 yapabilirsin
try except yapısından önce if else ile condition olarak input değeri girilip girilmediğini kontrol edebilirsin. python bilmiyorum ama konsept aynı sonuçta
try except yapısından önce if else ile condition olarak input değeri girilip girilmediğini kontrol edebilirsin. python bilmiyorum ama konsept aynı sonuçta
soruna cevap verecek bilgim yok ama kodu hızlandırmak adına range'i 2 den sayi+1 e yapmana gerek yok hiç bir sayının kendinin karekökünden büyük asal böleni yoktur o yüzdeen sayi*0.5 +1 yapabilirsin
Bir sayının asal olduğunu, sayıya kadarki tüm sayıları kontrol etmek yerine; sayının kare köküne kadar kontrol etmeniz yeterli. (Kökü dahil.)
Python:
import math
def isPrime(number):
flag = True
for i in range(2, math.ceil(math.sqrt(number))):
if(number % i == 0):
flag = False
break
if(number >= 2):
return flag
else:
return False
Ayrıca kontrol kısmını ayrı bir method haline getirebilirsiniz.
Bir sayının asal olduğunu, sayıya kadarki tüm sayıları kontrol etmek yerine; sayının kare köküne kadar kontrol etmeniz yeterli. (Kökü dahil.)
Python:
import math
def isPrime(number):
flag = False
for i in range(2, math.sqrt(number) + 1):
if(number % i == 0):
flag = True
break
if(number >= 2):
return flag
else:
return False
Ayrıca kontrol kısmını ayrı bir method haline getirebilirsiniz.
Karekök kısmını anladım ancak henüz fonksiyon ve import gibi şeyleri bilmediğimiz için kodunuzu zar zor anlayabildim. Yine de teşekkür ederim. @The Anorak
Ben kaynak olarak bu siteyi kullanıyorum? Bilginiz var mıdır? Yoksa ne tür kaynaklar ve gidiş yolu önerirsiniz?