Python101 – Hatalardan Kurtulma

try ile hata ayıklama Diyelim ki artık mükemmel bir programa sahipsiniz, kusursuz çalışıyor.

try ile hata ayıklama

Diyelim ki artık mükemmel bir programa sahipsiniz, kusursuz çalışıyor. Bir ayrıntı dışında; geçersiz kullanıcı girişi olduğunda çöküyor. Ama böyle bir durumda korkmamıza gerek yok. Çünkü Python bizim için özel bir kontrol yapısına sahip. try kontrol bloğu hatalarla başa çıkmamızı sağlıyor. Sorunu olan bir program örneğine bakalım: 

print("Ctrl C veya -1 yazarak çıkın")
sayi = 1
while sayi != -1:
   sayi = int(input("Bir sayı girin: "))
   print("Girilen sayı:", sayi)

Sayı yerine @#& karakterlerine benzer bir şeyler yazarsak ne oluyor bakalım

Traceback (most recent call last):
 File "try_less.py", line 4, in <module>
   number = int(input("Enter a number: "))
ValueError: invalid literal for int() with base 10: '\\@#&'

Gördüğünüz gibi int() işlevi bu girdiden memnun değil (olması gerektiği gibi). Son satır sorunun ne olduğunu gösterir; Python bir ValueError buldu. Programımız bununla nasıl başa çıkabilir? Yaptığımız şey ilk olarak: hataların oluşabileceği yere try koymak ve ikinci olarak: Python’a ValueError hatasının nasıl ele alınabileceğini söylemek.

print("Ctrl C veya -1 yazarak çıkın")
sayi = 1
while sayi != -1:

   
   try:
      sayi = int(input("Bir sayı girin: "))
      print("Girilen sayı:", sayi)
   except ValueError:
      print("Bu bir sayı değil:", sayi)

Şimdi yeni programı çalıştırdığımızda ve girdi olarak @#& verdiğimizde bize “Bu bir sayı değil” diyor ve normal çalışmaya devam ediyor.

Programınız nasıl işleyebileceğinizi bildiğiniz bir hataya sahipse, kodu bir try bloğu içine koyun ve bloktaki hatayı işlemenin yolunu except ile tarif edin.

Alıştırmalar

Telefon numaraları programını güncelleyin (Sözlükler bölümünde), böylece bir kullanıcı menüye herhangi bir veri girmezse çökmesin.

Çözüm:

def print_menu():
	print('1. Print Phone Numbers')
	print('2. Add a Phone Number')
	print('3. Remove a Phone Number')
	print('4. Lookup a Phone Number')
	print('5. Quit')
	print()

numbers = {}
menu_choice = 0
print_menu()
while menu_choice != 5:
	try:
		menu_choice = int(input("Type in a number (1-5): "))
		if menu_choice == 1:
			print("Telephone Numbers:")
			for x in numbers.keys():
				print("Name: ", x, "\tNumber:", numbers[x])
			print()
		elif menu_choice == 2:
			print("Add Name and Number")
			name = input("Name: ")
			phone = input("Number: ")
			numbers[name] = phone
		elif menu_choice == 3:
			print("Remove Name and Number")
			name = input("Name: ")
			if name in numbers:
				del numbers[name]
			else:
				print(name, "was not found")
		elif menu_choice == 4:
			print("Lookup Number")
			name = input("Name: ")
			if name in numbers:
				print("The number is", numbers[name])
			else:
				print(name, "was not found")
		elif menu_choice != 5:
			print_menu()
	except ValueError:
		print("That was not a number.")
Bu yazı topluluk tarafından oluşturuldu. Lisans bilgisine bakabilirsiniz. Yanlış veya eksik bilgileri düzenlemek için github üzerinden katkıda bulunabilirsiniz.

Kategoriler: Python101, Kılavuz, Python

konular

Okumaya devam et!
Sonraki Yazı: Python101 – Özyineleme

Özyineleme Özyinelemeli işlev, yine kendisini çağıran bir işlevdir.

Python’da Girintiler (indentation)

Python’da, kontrol ve döngü yapılarını tanımlamak için girintileri (indentation) kullanırız.

İki listeyi Python sözlüğüne nasıl dönüştürebilirim?

Aşağıdaki iki listeye sahip olduğumuzu düşünelim.

Python kodunun profilini nasıl oluşturabiliriz?

Project Euler ve diğer kodlama yarışmalarında yazdığımız kodlar genellikle belirli bir süreden kısa zamanda çalışmak zorunda.

Python’da listenin son öğesi nasıl elde edilir?

Python’da, listenin son öğesini nasıl alırsınız? En kısa ve en Pythonik yolu some_list[-1] şeklindedir.

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

koddla
Tema Mundana by WowThemes.net.