Bu programı nasıl daha okunaklı hâle getirebilirim?

try: except:

Eklediğimden beri kod karman çorman olmuş gibi hissediyorum.

print('Batarya Şarj Süresi Hesaplama', end = '\n\n')

exErrMsg = "\nHATA: 0'dan büyük tam sayılar dışında karakter girmemelisiniz.\n"
exErrMsg2 = "\nHATA: 0 veya 0'dan küçük bir tam sayı girmemelisiniz.\n"
exBatInt = "+ Bataryanın mAh değerini girin.\n- "
exMinMaInt = "+ Şarj esnasında gelen en düşük akımı mA cinsinden belirtin.\n- "
exMaxMaInt = "+ Şarj esnasında gelen en yüksek akımı mA cinsinden belirtin.\n- "
exMaxMinMsg = "\nHATA: Önceden girdiğiniz minimum değerden daha düşük veya eşit bir sayı giremezsiniz.\n"
#Hata ve input mesajları.
 
try:
	mAh = int(input('+ Bataryanın mAh değerini girin.\n- '))
	if mAh <= 0:
 	   print("\nHATA: 0 veya 0'dan küçük bir tam sayı girmemelisiniz.\n")
 	   while True:
  	     mAh = int(input('+ Bataryanın mAh değerini girin.\n- '))
  	     if mAh <= 0:
  	     	print("\nHATA: 0 veya 0'dan küçük bir tam sayı girmemelisiniz.\n") 
  	     if mAh > 0:
 	      	break  	   

except ValueError:
	print(f'{exErrMsg}')
	while True:
		try:
			mAh = int(input(f'{exBatInt}'))
			if mAh <= 0:
 			   print(f'{exErrMsg2}')
			if mAh > 0:
				break			
		except ValueError:
			print(f'{exErrMsg}')
print(' ')


try:						
	minimumMA = int(input('+ Şarj esnasında gelen en düşük akımı mA cinsinden belirtin.\n- '))
	if minimumMA <= 0:
		print("\nHATA: 0 veya 0'dan küçük bir sayı girmemelisiniz.\n")
		while True:
			minimumMA = int(input('+ Şarj esnasında gelen en düşük akımı mA cinsinden belirtin.\n- '))
			if minimumMA <= 0:
				print("\nHATA: 0 veya 0'dan küçük bir sayı girmemelisiniz.\n")
			if minimumMA > 0:
				break
				
except ValueError:
		print(f'{exErrMsg}')
		while True:
			try:				
				minimumMA = int(input(f'{exMinMaInt}'))
				if minimumMA <= 0:
					print(f'{exErrMsg2}')
				if minimumMA > 0:
					break
			except ValueError:
				print(f'{exErrMsg}')		
print(' ')

						
try:
	maksimumMA = int(input('+ Şarj esnasında gelen en yüksek akımı mA cinsinden belirtin.\n- '))
	if maksimumMA <= 0:
		print("\nHATA: 0 veya 0'dan küçük bir sayı girmemelisiniz.", end = '\n')
		while True:
			maksimumMA = int(input('+ Bataryanın mAh değerini girin.\n- '))
			if maksimumMA <= 0:
				print("\nHATA: 0 veya 0'dan küçük bir sayı girmemelisiniz.", end = '\n')
			if maksimumMA > 0:
				break

	if maksimumMA <= minimumMA:
		print("\nHATA: Önceden girdiğiniz minimum değerden daha düşük veya eşit bir sayı giremezsiniz.", end = '\n')
		while True:
			maksimumMA = int(input('+ Şarj esnasında gelen en yüksek akımı belirtin.\n- '))
			if maksimumMA <= 0:
				print("\nHATA: Önceden girdiğiniz minimum değerden daha düşük veya eşit bir sayı giremezsiniz.", end = '\n')
			if maksimumMA > 0:
				break

except ValueError:
	print(f'{exErrMsg}')
	while True:
		try:
			maksimumMA = int(input(f'{exMaxMaInt}'))
			if maksimumMA < minimumMA:
				print(f'{exMaxMinMsg}')
			elif maksimumMA <= 0:
				print(f'{exErrMsg2}')
			if maksimumMA > 0:
				break		
		except ValueError:
			print(f'{exErrMsg}')						
print(' ')


sonuc = mAh / ( (minimumMA + maksimumMA) / 2 )
sonuc = str(sonuc)
sonucYazisi = 'Yapılan hesaba göre belirtilen özelliklere sahip bir batarya'
sonucYazisi2 = 'saatte tam şarj olabilir. Bu veri sadece yüzeysel bir tahmindir. Onca etken bu süreyi uzatabilir veya kısaltabilir.'

print(f'+ {sonucYazisi} {sonuc[:4]} {sonucYazisi2}')

Kodu okuyabiliyorum ben.Birçok hata olabileceği için birçok try-except kullanmışsınız.Yapacak başka bir şey yok zaten.

pep8’e bakabilirsiniz.

Bu kısım şuna dönüştürülebilir:

while True:
    try:
        mAh = int(input('+ Bataryanın mAh değerini girin.\n- '))
    except ValueError:
        print("\nHATA: 0'dan büyük tam sayılar dışında karakter girmemelisiniz.\n")
        continue
    if mAh > 0:
        break
    else:
        print("\nHATA: 0 veya 0'dan küçük bir tam sayı girmemelisiniz.\n") 

Diğerleri de aynı şekilde.

Hatta her girdi için benzer işlemler gerçekleştiriliyorsa bu işlem bir fonksiyonda da yapılabilir. Hata mesajlarını bir değişkene atama ihtiyacı hissetmeniz bunun bir göstergesi.

try except bloklarını mümkün olduğunca küçük tutmayı alışkanlık haline getirin.

1 Beğeni