זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/python/lessons/exception-lab
זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/python/lessons/exception-lab
"""
Answer 33-1
"""
import math
import sys
while True:
num=sys.stdin.readline()
if num == '': break
try:
num=float(num)
res=math.sqrt(num)
print "sqrt: %d" % (res)
except ValueError as e:
print "Try again , the value is not math"
איזה מוזר ששמתי ערך 10 החזיר לי 3 ? וגם כאשר שמתי 10.0 ? יש משהו דפוק בפונקציה הזו
"""
Answer 33-2
"""
import sys
import os
def get_count_lines_for_file(path):
try:
with open(path,'r') as f:
return len([line for line in f])
except IOError as e:
print "The file '%s' not exists" % (path)
[_,path]=sys.argv
print get_count_lines_for_file(path)
משום מה תמיד מצליח - למרות ששניתי את הערכים בבדיקות - מוזר מה לא תקין פה
"""
Answer 33-3
"""
import unittest
class InvalidImageExt(Exception):pass
class ImageFile(object):
def __init__(self,file):
if file[-4:] != ".png":raise InvalidImageExt
self.file=file
class TestImageFile(unittest.TestCase):
def test_good_ext(self):
try:
img = ImageFile("file.png")
except InvalidImageExt:
self.fail("png should be a valid file extension")
def test_bad_ext(self):
with self.assertRaises(InvalidImageExt):
img = ImageFile("file.mp3")
unittest.main()
לא הבנתי מה הבעיה? הפונקציה מחזירה את השורה האמיתי אבל אתה מוחק ממנו את כל מה שאחרי הנקודה ובגלל זה מקבל 3
ולגבי הפיתרון השני - הוא לא תמיד מצליח. הנה למשל החלפתי את שם הקובץ בבדיקה להסתיים ב txt ואז הבדיקה נכשלה:
import unittest
class InvalidImageExt(Exception):pass
class ImageFile(object):
def __init__(self,file):
if file[-4:] != ".png":raise InvalidImageExt
self.file=file
class TestImageFile(unittest.TestCase):
def test_good_ext(self):
try:
img = ImageFile("file.txt")
except InvalidImageExt:
self.fail("png should be a valid file extension")
def test_bad_ext(self):
with self.assertRaises(InvalidImageExt):
img = ImageFile("file.mp3")
unittest.main()
והתוצאה:
.F
======================================================================
FAIL: test_good_ext (__main__.TestImageFile)
----------------------------------------------------------------------
Traceback (most recent call last):
File "a.py", line 16, in test_good_ext
self.fail("png should be a valid file extension")
AssertionError: png should be a valid file extension
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=1)
לא הבנתי - איפה אני מוחק
מוזר זה מה שגם עשיתי והראה לי שהצליח
ניסית להריץ את התוכנית שאני פירסמתי וקיבלת תוצאה שונה ממני?
כן - לקחתי את הקוד שלך - וזה מראה לי שמצליח
נשמע ממש מוזר. אתה מריץ דרך שורת הפקודה או בדרך אחרת? יכול להדביק כאן את התוכנית המדויקת שאתה מריץ ואת הפלט שאתה מקבל?