import pandas as pd
def average_influenza_doses():
# YOUR CODE HERE
df = pd.read_csv(r"yol\NISPUF17.csv")
try:
lyes=len(df.CBF_01[df.CBF_01 == "YES"])
lno=len(df.CBF_01[df.CBF_01 == "NO"])
sumdata=lyes+lno
avgdosyes=sumdata/lyes
avgdosno=sumdata/lno
say = [avgdosyes, avgdosno]
return tuple(say)
except ZeroDivisionError:
pass
# average_influenza_doses()
assert len(average_influenza_doses())==2, "Return two values in a tuple, the first for yes and the second for no."
Kimsede olmayan bir dosya mı?
Dosyanın linkini yukarıda paylaştım, verdiğim kodda, yol yerine indirdiğin dosyanın yolunu yazdığında çalışır ama işte zero hatasının sebebini anlayamadım.
Kimseden olmayan dosyadan kastın nedir anlamadım belki de. Açar mısın dostum.
Zero değil, şimdi gördüm de, şöyle bir hata veriyor ya:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-71-380749c0010d> in <module>
----> 1 assert len(average_influenza_doses())==2, "Return two values in a tuple, the first for yes and the second for no."
TypeError: object of type 'NoneType' has no len()
Jupyterde, kurs üzerinde çalışıyorum. Normal IDLE’de yapınca hata vermiyor, ama boş geçiyor. İki adet sayı değerli, bir tuple döndürmesi lazım normalde.
Siz burda average_influenza_doses() fonksiyonunu çağırıp dönen değerin uzunluğunu bulmaya çalışıyorsunuz ama average_influenza_doses() herhangi birşey return etmediği için implicit olarak None döndürüyor. Bir değer döndürmemesinin nedeni de hata çıkması durumunda try bloğu dışında başka bir return olmaması. Yani try içinde ZeroDivisionError oluşursa try bloğu bitmeden program direkt expect bloğuna atlayacak ve fonksiyon hiçbirşey return etmediği için fonksiyondan None dönecek.