[Çözüldü] ValueError Alıyorum

Başlatan Kaleihan, 26 Haziran 2017 - 00:15:55

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Kaleihan

Merhaba Kodlarım şu şekilde:

# -*- coding: utf-8 -*-
#!/usr/bin/env python3

liste = []
sayılar = 0
tekrar = 0

print("Çıkmak için 'q' basınız")
print("Tüm sayıları girince hesap yapmak için 't' basınız")

while True:
try:
tekrar += 1
girdi = input("{}. sayıyı giriniz: ".format(tekrar))
liste += [girdi]

sayılar += int(girdi)

if girdi == 'q':
print("Çıkılıyor...")
break
if girdi == 't':
print("Girdiğiniz sayılar: ", *liste, end=" ")
print("Sonuç ", sayılar/tekrar)
except:
print("Hata meydana geldi. ")
break


Hata şu şekilde

Traceback (most recent call last):
  File "ortalama1.py", line 17, in <module>
    sayılar += int(girdi)
ValueError: invalid literal for int() with base 10: 't'


str tipindeki girdi değişkenini hesap yapabilmek için tamsayı yapıyorum. Bunun neyi yanlış anlamadım?

lnxdev

Hatanız kullanıcı string girdiği zaman bu değeri int değerine çevirmeye çalışmanız. Bu hatayı düzeltmek için kullanıcıdan aldığınız input() değerinin string yada int olup olmadığını kontrol etmenizdir. Bunu .isdigit() ile fonksiyonu ile sağlayabilirsiniz. Yani sizin kodunuzda 17. satırdaki 

sayılar += int(girdi)

Şununla değiştirirseniz düzelir:
if girdi.isdigit():
         liste += [girdi]
         sayılar += int(girdi)
         tekrar += 1
Şeklinde değiştirmeniz lazım

Kaleihan

Hmm program çalıştı ama mantığını pek anladığımı söyleyemem input() ile aldığım str tipindeki veriyi integere çevirebilmek için içeriğinin sayı olup olmadığını denetlemem mi gerekiyor?

Amenofis

Döngünün son adımında q veya t girersen bunu nasıl sayıya çevirecek?

Kaleihan

Valla hiç öyle düşünmedim teşekkürler :D