Printing is unavailable

This course is licensed for personal online viewing only.

Public preview • CL-P000000-C32-L827-6421D44C

Home Dashboard
Chapter 22 · Type Conversion in Python

Handling Type Conversion Errors

4,627
words
26
min read
6
tools

1. Learning Outcomes#

या chapter नंतर तुम्हाला:

  • type conversion करताना error का येऊ शकतो ते समजेल
  • ValueError आणि TypeError मधील फरक स्पष्टपणे समजेल
  • invalid numeric string ओळखता येईल
  • कोणत्या प्रकारचे conversions unsupported असू शकतात ते समजेल
  • conversion करण्यापूर्वी data validate का करावा ते समजेल
  • try आणि except वापरून basic safe conversion करता येईल
  • conversion fail झाल्यास program अचानक बंद होण्याऐवजी योग्य response देता येईल
  • user input किंवा external data handle करताना safer approach वापरता येईल

2. Conversion नेहमी successful होईलच असे नाही#

आपण आधी वेगवेगळ्या types मध्ये conversion कसे करायचे ते पाहिले.

उदाहरणार्थ:

PYTHON
age = int("25")
print(age)

Expected Output#

TEXT
25

इथे "25" हा string आहे.

पण त्या string मधील value पूर्णपणे numeric आहे.

म्हणून Python त्याला सहज int मध्ये convert करू शकतो.

आता थोडा बदल पाहा.

PYTHON
age = int("twenty five")

Python इथे जरा अडचणीत पडतो.

छोटासा संवाद असा समजा:

Developer: "twenty five" ला integer बनव.

Python: "मित्रा, int() आहे मी. English-to-number translator नाही!"

"twenty five" हा string आहे, पण त्यातील characters Python ला valid integer म्हणून समजत नाहीत.

त्यामुळे conversion fail होते.

TEXT
ValueError: invalid literal for int() with base 10: 'twenty five'

म्हणजेच type conversion करताना फक्त target type सांगणे पुरेसे नसते.

आपण देत असलेली actual value त्या conversion साठी योग्य आहे का, हेही महत्त्वाचे असते.

Key Idea

Type conversion मध्ये दोन प्रश्न नेहमी महत्त्वाचे असतात: दिलेला type स्वीकारला जातो का? आणि त्या type मधील actual value convert होण्यास योग्य आहे का?

Conversion चा basic decision flow असा समजू शकतो:

Visual Diagram80%

Rendering diagram…

हा flow step-by-step पाहूया.

  1. सर्वप्रथम आपल्याकडे काही input value असते.
  2. आपण तिला int(), float() किंवा दुसऱ्या target type मध्ये convert करण्याचा प्रयत्न करतो.
  3. Python पाहतो की दिलेला input type त्या conversion साठी स्वीकारता येतो का.
  4. input चा typeच योग्य नसेल तर TypeError येऊ शकतो.
  5. type स्वीकारता येत असेल, पण actual value invalid असेल तर ValueError येऊ शकतो.
  6. type आणि value दोन्ही योग्य असतील तर conversion successful होते.

आता हे दोन मुख्य errors स्वतंत्रपणे समजून घेऊया.

3. ValueError#

Definition#

English Definition

ValueError occurs when an operation receives a value of an acceptable type, but the value itself is not valid for that operation.

मराठी अर्थ

Python ला दिलेल्या value चा type चालतो, पण त्या value मधील actual content अपेक्षित format मध्ये नसतो, तेव्हा ValueError येऊ शकतो.

हे एका साध्या उदाहरणाने समजून घेऊया.

PYTHON
number = int("100")
print(number)

Expected Output#

TEXT
100

int() ला string देणे चुकीचे नाही.

कारण numeric string ला integer मध्ये convert करता येते.

पण:

PYTHON
number = int("hello")

इथे "hello" चा type अजूनही str आहे.

int() काही strings स्वीकारू शकतो.

पण "hello" ही value integer दर्शवत नाही.

म्हणून error:

TEXT
ValueError
महत्त्वाचे

ValueError मध्ये problem अनेकदा value च्या content मध्ये असते.

आणखी एक उदाहरण#

PYTHON
price = float("49.95")
print(price)

Expected Output#

TEXT
49.95

"49.95" ही value valid floating-point number दर्शवते.

म्हणून float() conversion successful आहे.

पण:

PYTHON
price = float("49 rupees")

इथे Python ला "49 rupees" पूर्ण value floating-point number म्हणून समजत नाही.

त्यामुळे:

TEXT
ValueError

येईल.

int("12.5") चे काय?#

हा beginner साठी खूप common confusion आहे.

PYTHON
number = int("12.5")

पहिल्या नजरेत वाटू शकते:

"12.5 मध्ये number तर आहे. मग error का?"

कारण int() जेव्हा string directly convert करतो तेव्हा त्या string ने valid integer format दर्शवणे आवश्यक आहे.

"12.5" मध्ये decimal point आहे.

म्हणून ती valid integer string नाही.

त्यामुळे:

TEXT
ValueError

येते.

इथे लक्षात ठेवायची गोष्ट म्हणजे number सारखे दिसणे आणि target type साठी valid format असणे या दोन वेगळ्या गोष्टी आहेत.

Common Mistake

"12.5" numeric दिसत असल्यामुळे int("12.5") नेहमी चालेल असे समजू नका.

4. Invalid Numeric Strings#

Numeric conversion करताना string मधील content विशेष महत्त्वाचा असतो.

खाली काही examples पाहूया.

String int() Result कारण
"25" Valid पूर्ण integer value आहे
"-25" Valid negative integer format valid आहे
"+25" Valid explicit positive sign valid आहे
" 25 " Valid surrounding whitespace Python handle करू शकतो
"25.5" ValueError integer format नाही
"hello" ValueError numeric content नाही
"25kg" ValueError number सोबत extra text आहे
"₹500" ValueError currency symbol असल्यामुळे direct integer format नाही
"" ValueError value रिकामी आहे

उदाहरण:

PYTHON
quantity = int("25kg")

Python असे विचारत नाही:

"अरे, सुरुवातीला 25 दिसत आहे. मी बाकीचे ignore करतो."

Python direct conversion करताना पूर्ण string valid आहे का हे पाहतो.

"25kg" हा valid integer representation नाही.

म्हणून conversion fail होते.

यामुळे external data handle करताना cleaning आणि validation महत्त्वाचे ठरतात.

Key Idea

दिसते तसे नसते. String मध्ये digits दिसले म्हणून संपूर्ण string valid numeric value असेलच असे नाही.

5. TypeError#

आता दुसरी situation पाहूया.

PYTHON
number = int(None)

इथे problem "hello" सारखी नाही.

None हा string नाही.

आणि तो असा supported input देखील नाही ज्याला int() इथे integer मध्ये बदलू शकेल.

त्यामुळे Python:

TEXT
TypeError

देते.

Definition#

English Definition

TypeError occurs when an operation or function receives an object of an inappropriate or unsupported type.

मराठी अर्थ

एखाद्या operation ला असा type दिला जो त्या operation साठी योग्य किंवा supported नाही, तेव्हा TypeError येऊ शकतो.

उदाहरण:

PYTHON
value = None
number = int(value)

हे fail होते.

आणखी एक example:

PYTHON
values = [10, 20]
number = int(values)

list मधील अनेक values पाहून Python स्वतः ठरवत नाही की कोणती value integer करायची.

म्हणून हा conversion supported नाही.

Result:

TEXT
TypeError

आणखी एक example:

PYTHON
value = 4 + 3j
number = int(value)

complex number ला अशा प्रकारे direct int() मध्ये convert करता येत नाही.

त्यामुळे TypeError येतो.

6. ValueError आणि TypeError मधील मुख्य फरक#

ही distinction व्यवस्थित समजणे खूप महत्त्वाचे आहे.

Situation Error
Type acceptable आहे, पण value invalid आहे ValueError
Input typeच operation साठी unsupported आहे TypeError

उदाहरणे:

PYTHON
int("abc")

str input स्वीकारता येतो.

पण "abc" valid integer नाही.

म्हणून:

TEXT
ValueError

पण:

PYTHON
int(None)

None या प्रकारची value direct int() conversion साठी supported नाही.

म्हणून:

TEXT
TypeError

हे mental model लक्षात ठेवा:

Visual Diagram80%

Rendering diagram…

या diagram मध्ये महत्त्वाचा प्रश्न हा आहे:

पहिले type तपासा, नंतर value चा अर्थ तपासा.

Remember

ValueError म्हणजे "type चालतो, value चुकीची आहे."

TypeError म्हणजे "हा typeच या operation साठी योग्य नाही."

7. Unsupported Conversions#

Python मध्ये प्रत्येक type कोणत्याही दुसऱ्या type मध्ये convert करता येत नाही.

हे अगदी practical आहे.

समजा तुमच्याकडे:

PYTHON
data = [10, 20, 30]

आहे.

आता:

PYTHON
number = int(data)

असे केल्यावर Python ने कोणता integer तयार करावा?

10?

20?

30?

सगळ्यांची बेरीज?

Python अशी guessing करत नाही.

म्हणून conversion चा अर्थ स्पष्ट नसल्यास conversion unsupported असू शकते.

काही examples#

PYTHON
int(None)

Result:

TEXT
TypeError
PYTHON
float(None)

Result:

TEXT
TypeError
PYTHON
int([1, 2, 3])

Result:

TEXT
TypeError
PYTHON
float(2 + 5j)

Result:

TEXT
TypeError

पण हे लक्षात ठेवा:

एखादा source type एका target type साठी unsupported असला तरी तो प्रत्येक conversion साठी unsupported असेलच असे नाही.

उदाहरण:

PYTHON
value = None
text = str(value)

print(text)

Expected Output#

TEXT
None

None ला int() मध्ये convert करणे supported नाही.

पण str(None) चालते.

म्हणजे support हा source value + target conversion या combination वर अवलंबून असतो.

8. Conversion करण्याआधी Data Validate का करायचा?#

समजा registration form मध्ये user ने age enter केली.

TEXT
Age: 25

तर ठीक.

पण user असेही लिहू शकतो:

TEXT
Age: twenty five

किंवा:

TEXT
Age:

किंवा:

TEXT
Age: 25 years

आता application ने प्रत्येक input वर विश्वास ठेवला तर conversion crash होऊ शकते.

PYTHON
age = int(user_input)

जर user_input invalid असेल तर program त्या point वर exception raise करेल.

म्हणून external data म्हणजे:

  • user input
  • file मधून आलेला data
  • API मधून आलेला data
  • database मधून आलेली unexpected value

असा data convert करण्याआधी त्याची validity विचारात घेणे आवश्यक असते.

महत्त्वाचे

सावध तो सुखी. External data convert करताना "हे नक्की valid असेल" असे blindly assume करू नका.

9. Simple Validation with strip()#

User कधी accidentally spaces टाकू शकतो.

उदाहरण:

PYTHON
age_text = "   25   "

strip() string च्या सुरुवातीचे आणि शेवटचे unnecessary whitespace काढते.

PYTHON
age_text = "   25   "
clean_age = age_text.strip()

print(clean_age)

Expected Output#

TEXT
25

त्यानंतर conversion:

PYTHON
age = int(clean_age)
print(age)

Expected Output#

TEXT
25

पण strip() सर्व conversion problems solve करत नाही.

उदाहरण:

PYTHON
age_text = "  twenty five  "
clean_age = age_text.strip()

Result:

TEXT
twenty five

spaces गेले.

पण content अजूनही valid integer नाही.

म्हणजे cleaning आणि validation या वेगळ्या गोष्टी आहेत.

10. isdigit() वापरून Basic Validation#

Positive whole-number input साठी isdigit() उपयोगी ठरू शकतो.

PYTHON
age_text = "25"

if age_text.isdigit():
    age = int(age_text)
    print(age)
else:
    print("Invalid age")

Expected Output#

TEXT
25

आता:

PYTHON
age_text = "twenty five"

असे असेल तर:

TEXT
Invalid age

मिळेल.

हे useful आहे.

पण isdigit() ला universal numeric validator समजू नका.

उदाहरण:

PYTHON
print("-25".isdigit())

Expected Output#

TEXT
False

-25 हा valid integer असू शकतो.

पण "-25" मधील minus sign digit नाही.

त्यामुळे isdigit() False देते.

त्याचप्रमाणे:

PYTHON
print("12.5".isdigit())

Expected Output#

TEXT
False

म्हणून validation method निवडताना expected data format समजणे महत्त्वाचे आहे.

Common Mistake

isdigit() म्हणजे "Python मध्ये convert होणाऱ्या प्रत्येक number ची perfect validation" नाही.

11. Safe Conversion Basics#

फक्त conversion करण्यापूर्वी प्रत्येक possible format manually तपासत बसणे नेहमी practical नसते.

Python मध्ये conversion attempt करून error सुरक्षितपणे handle करण्यासाठी try आणि except वापरता येतात.

इथे आपल्याला पूर्ण exception-handling system शिकायची गरज नाही.

या chapter साठी एवढे समजा:

  • try मध्ये risky conversion ठेवतो
  • conversion successful झाली तर पुढचे statements चालतात
  • specific error आला तर matching except block चालतो

सोपे example:

PYTHON
age_text = "twenty five"

try:
    age = int(age_text)
    print("Age:", age)
except ValueError:
    print("Please enter age using digits.")

Expected Output#

TEXT
Please enter age using digits.

काय झाले?

  1. Python ने int(age_text) करण्याचा प्रयत्न केला.
  2. "twenty five" valid integer string नव्हती.
  3. ValueError raise झाला.
  4. except ValueError ने तो error handle केला.
  5. program ला user-friendly message देता आला.

जर input:

PYTHON
age_text = "25"

असा असेल तर:

PYTHON
try:
    age = int(age_text)
    print("Age:", age)
except ValueError:
    print("Please enter age using digits.")

Expected Output#

TEXT
Age: 25

यावेळी conversion successful झाली.

त्यामुळे except block चालण्याची गरजच पडली नाही.

Safe conversion flow असा आहे:

Visual Diagram80%

Rendering diagram…

हा flow practical applications मध्ये खूप उपयोगी आहे.

सर्वात महत्त्वाचे म्हणजे conversion fail झाल्यावर application ने काय करायचे हे आपण consciously ठरवतो.

12. ValueError आणि TypeError दोन्ही handle करणे#

User input input() मधून आले असेल तर ते सामान्यतः string असते.

पण external system मधून data आला तर None सारखी value देखील मिळू शकते.

उदाहरण:

PYTHON
value = None

try:
    number = int(value)
    print(number)
except ValueError:
    print("The value has an invalid numeric format.")
except TypeError:
    print("This type cannot be converted to an integer.")

Expected Output#

TEXT
This type cannot be converted to an integer.

इथे ValueError नाही.

कारण problem invalid string content ची नाही.

None हा input typeच या conversion साठी योग्य नाही.

आपण दोन्ही exceptions एकत्रही handle करू शकतो:

PYTHON
value = None

try:
    number = int(value)
    print(number)
except (ValueError, TypeError):
    print("Unable to convert the value safely.")

Expected Output#

TEXT
Unable to convert the value safely.

ही syntax तेव्हा useful आहे जेव्हा दोन्ही errors साठी आपल्याला एकच action घ्यायची आहे.

13. Specific Exception Handle करणे चांगले का?#

असे लिहिता येते:

PYTHON
try:
    number = int("hello")
except:
    print("Something went wrong")

हे चालू शकते.

पण basic safe code साठी शक्य असेल तेव्हा expected exception explicitly handle करणे चांगले.

उदाहरण:

PYTHON
try:
    number = int("hello")
except ValueError:
    print("Invalid integer value")

यामुळे code वाचणाऱ्या developer ला लगेच समजते की आपण कोणती failure situation अपेक्षित धरली आहे.

तसेच unrelated problem accidentally hide होण्याचा धोका कमी होतो.

Key Idea

Error handle करणे म्हणजे error कडे दुर्लक्ष करणे नाही. कोणता expected problem येऊ शकतो हे समजून त्यावर योग्य action घेणे होय.

14. Safe Fallback Value#

कधी conversion fail झाल्यास default value वापरणे business requirement असू शकते.

उदाहरण:

PYTHON
quantity_text = ""

try:
    quantity = int(quantity_text)
except ValueError:
    quantity = 0

print(quantity)

Expected Output#

TEXT
0

इथे empty string convert झाली नाही.

म्हणून fallback म्हणून 0 वापरले.

पण default value blindly वापरू नका.

उदाहरणार्थ age चुकीची आली म्हणून age 0 करणे काही applications मध्ये चुकीचे ठरू शकते.

कधी user ला पुन्हा input विचारणे योग्य असेल.

कधी validation message दाखवणे योग्य असेल.

कधी record reject करणे योग्य असेल.

म्हणजे safe conversion चा अर्थ नेहमी 0 return करणे नाही.

Safe conversion म्हणजे failure आल्यास योग्य आणि predictable behavior ठेवणे.

15. Practical Example — User Age#

समजा application मध्ये age string स्वरूपात आली.

PYTHON
age_text = "36"

आपल्याला integer age हवी आहे.

PYTHON
age_text = age_text.strip()

try:
    age = int(age_text)
    print("Valid age:", age)
except ValueError:
    print("Please enter a valid whole number.")

Expected Output#

TEXT
Valid age: 36

आता:

PYTHON
age_text = "36 years"

असे असेल तर output:

TEXT
Please enter a valid whole number.

असा येईल.

हे user-facing application साठी raw traceback दाखवण्यापेक्षा जास्त उपयोगी आहे.

छोटा संवाद:

User: "Age मध्ये 36 years लिहिले तर?"

Program: "तुमचा उत्साह समजला, पण मला आत्ता फक्त number हवा आहे."

हास्य बाजूला ठेवले तर lesson महत्त्वाचा आहे:

application ला अपेक्षित data format स्पष्ट असावा.

16. Practical Example — External Data मध्ये None#

समजा बाहेरून आलेली value अशी आहे:

PYTHON
score = None

आपण direct:

PYTHON
converted_score = float(score)

केले तर TypeError येईल.

Safe handling:

PYTHON
score = None

try:
    converted_score = float(score)
    print(converted_score)
except (ValueError, TypeError):
    print("Score is unavailable or invalid.")

Expected Output#

TEXT
Score is unavailable or invalid.

इथे आपण दोन realistic situations handle केल्या:

  • value string होती पण invalid होती
  • value चा typeच conversion साठी unsupported होता

17. Conversion Before Trust#

External data आल्यावर ideal thinking अशी असावी:

Visual Diagram80%

Rendering diagram…

याचा अर्थ प्रत्येक value वर शंका घेऊन बसायची असा नाही.

याचा अर्थ data चा source लक्षात घेऊन योग्य safety ठेवायची.

Programmer ची भूमिका फक्त happy path लिहिण्याची नसते.

Invalid input आल्यावर application कसा behave करेल हेही design चा भाग आहे.

महत्त्वाचे

अति विश्वास घातक. External input valid असेल असे assume करण्याऐवजी आवश्यक validation आणि error handling वापरा.

18. Common Beginner Confusions#

"123" string असूनही int() का चालते?#

कारण int() numeric integer string parse करू शकतो.

PYTHON
int("123")

valid आहे.

String असणे स्वतः problem नाही.

String मधील content महत्त्वाचा आहे.

"abc" वर TypeError का नाही?#

कारण str हा input type int() साठी स्वीकारता येतो.

Problem type ची नाही.

Problem "abc" या actual value ची आहे.

म्हणून ValueError.

None वर ValueError का नाही?#

कारण None invalid numeric string नाही.

तो वेगळ्या प्रकारचा object आहे आणि direct integer conversion साठी unsupported आहे.

म्हणून TypeError.

प्रत्येक conversion आधी isdigit() वापरायचा का?#

नाही.

तो specific प्रकारच्या digit-only strings साठी useful आहे.

Negative values, decimal values आणि इतर valid formats साठी वेगळी validation strategy लागू शकते.

General conversion safety साठी specific exception handling अनेकदा अधिक practical असते.

19. Good Safe-Conversion Habits#

Conversion-related code लिहिताना या habits उपयोगी आहेत:

  • expected input format आधी समजून घ्या
  • external input वर blindly विश्वास ठेवू नका
  • unnecessary whitespace असल्यास clean करा
  • simple known format असल्यास validation करा
  • conversion fail होऊ शकत असेल तर expected exception handle करा
  • ValueError आणि TypeError मधील कारण समजून घ्या
  • शक्य असेल तेव्हा specific exceptions handle करा
  • fallback value business meaning ला योग्य आहे का ते तपासा
  • invalid data silently स्वीकारू नका
  • user ला समजणारा error message द्या

20. Chapter Recap#

या chapter मधून मुख्यतः हे लक्षात ठेवा:

  • type conversion नेहमी successful होत नाही
  • input type योग्य असून actual value invalid असेल तर ValueError येऊ शकतो
  • input typeच conversion साठी unsupported असेल तर TypeError येऊ शकतो
  • "25" आणि "twenty five" दोन्ही strings आहेत, पण त्यांची conversion validity वेगळी आहे
  • "12.5" ला direct int() करताना ValueError येतो
  • None ला int() किंवा float() करताना TypeError येऊ शकतो
  • strip() data clean करू शकतो, पण invalid content valid करत नाही
  • isdigit() useful आहे, पण universal numeric validation नाही
  • try/except वापरून expected conversion failures सुरक्षितपणे handle करता येतात
  • safe conversion म्हणजे failure लपवणे नाही; failure आल्यावर predictable आणि योग्य action घेणे आहे

21. Hands-On Practice#

Practice 1#

Requirement

खालील conversions पाहा:

PYTHON
int("250")
int("25kg")
int(None)
float("19.75")
float("nineteen")

Your Task

प्रत्येक conversion साठी खालीलपैकी result ओळखा:

  • successful conversion
  • ValueError
  • TypeError
HintShow Hint

String चा type स्वीकारला जातो का आणि त्यातील content target number साठी valid आहे का हे वेगळे तपासा.

SolutionShow Solution
TEXT
int("250")          -> successful conversion
int("25kg")         -> ValueError
int(None)           -> TypeError
float("19.75")      -> successful conversion
float("nineteen")   -> ValueError

Explanation

"250" valid integer string आहे.

"25kg" string असली तरी integer format valid नाही.

None direct integer conversion साठी supported type नाही.

"19.75" valid floating-point string आहे.

"nineteen" floating-point number दर्शवत नाही.

Practice 2#

Requirement

खालील value सुरक्षितपणे integer मध्ये convert करा:

PYTHON
age_text = "abc"

Invalid value असल्यास:

TEXT
Invalid age

print झाले पाहिजे.

Your Task

try आणि except ValueError वापरा.

HintShow Hint

Risky conversion try block मध्ये ठेवा.

SolutionShow Solution
PYTHON
age_text = "abc"

try:
    age = int(age_text)
    print(age)
except ValueError:
    print("Invalid age")

Expected Output

TEXT
Invalid age

Explanation

"abc" हा string type आहे, पण valid integer value नाही.

म्हणून int() ValueError raise करते.

except ValueError तो expected failure handle करते.

Practice 3#

Requirement

खालील value integer मध्ये convert करण्याचा प्रयत्न करा:

PYTHON
quantity = None

ValueError किंवा TypeError दोन्ही आल्यास:

TEXT
Unable to convert quantity

दाखवा.

Your Task

दोन्ही exception types एका except मध्ये handle करा.

SolutionShow Solution
PYTHON
quantity = None

try:
    quantity = int(quantity)
    print(quantity)
except (ValueError, TypeError):
    print("Unable to convert quantity")

Expected Output

TEXT
Unable to convert quantity

Explanation

None ला direct integer मध्ये convert करता येत नाही.

त्यामुळे TypeError येतो.

आपल्या except मध्ये TypeError समाविष्ट असल्यामुळे program हा failure सुरक्षितपणे handle करतो.

22. Final Challenge#

Scenario

एका application ला quantity text स्वरूपात मिळते.

कधी value योग्य असते:

TEXT
15

कधी spaces असतात:

TEXT
   15

कधी invalid text असते:

TEXT
fifteen

आणि कधी value None असू शकते.

Requirements

  • string असल्यास surrounding spaces काढा
  • value integer मध्ये convert करण्याचा प्रयत्न करा
  • ValueError आणि TypeError handle करा
  • successful conversion झाल्यास converted quantity print करा
  • failure झाल्यास Invalid quantity print करा

Your Task

खालील value वापरून solution लिहा:

PYTHON
quantity_text = "   15   "
Hint 1Show Hint 1

Value string आहे का हे तपासल्याशिवाय .strip() call केल्यास None सारख्या value वर problem येऊ शकते.

Hint 2Show Hint 2

Conversion साठी try/except वापरा.

SolutionShow Solution
PYTHON
quantity_text = "   15   "

if isinstance(quantity_text, str):
    quantity_text = quantity_text.strip()

try:
    quantity = int(quantity_text)
    print("Quantity:", quantity)
except (ValueError, TypeError):
    print("Invalid quantity")

Expected Output

TEXT
Quantity: 15

Explanation

सुरुवातीला value string असल्यामुळे .strip() वापरून surrounding spaces काढले.

मग int() conversion attempt केली.

"15" valid integer string असल्यामुळे conversion successful झाली.

जर value "fifteen" असती तर ValueError handle झाला असता.

जर value None असती तर .strip() call केला गेला नसता आणि int(None) मधून आलेला TypeError handle झाला असता.

23. Interview Preparation#

What is the difference between ValueError and TypeError during type conversion?Show Answer

ValueError usually occurs when the input type is acceptable, but the actual value is invalid for the requested conversion. TypeError occurs when the supplied object type itself is inappropriate or unsupported for that conversion.

Key Points:

  • int("abc") raises ValueError.
  • int(None) raises TypeError.
  • The distinction is based on whether the problem is with the value or the input type.

Why interviewer asks this:

The interviewer wants to verify that you understand Python exceptions rather than simply memorizing conversion functions.

How can you safely convert user input to an integer in Python?Show Answer

A common approach is to clean the input if required and perform the conversion inside a try block. Then catch ValueError and provide appropriate handling when the input is not a valid integer.

Key Points:

  • Validate or clean external input when appropriate.
  • Use try/except for conversions that may fail.
  • Catch specific exceptions.
  • Provide meaningful fallback behavior or validation feedback.

Why interviewer asks this:

The interviewer wants to know whether you can write code that handles invalid real-world input safely.

Why does int("12.5") raise ValueError?Show Answer

The string "12.5" is not a valid integer literal because it contains a decimal point. Although it represents a numeric-looking value, it is not in the format expected by direct string-to-integer conversion.

Key Points:

  • Numeric-looking text is not always valid for every numeric target type.
  • The requested target type determines the valid input format.

Why interviewer asks this:

This checks whether you understand the difference between a numeric concept and a valid representation for a specific conversion.

Is str.isdigit() sufficient for validating every numeric string?Show Answer

No. isdigit() is useful for digit-only strings, but it does not cover all valid numeric formats such as negative integers or decimal numbers. Validation should match the expected data format, and exception handling is often more practical for general conversion attempts.

Key Points:

  • "-25".isdigit() is False.
  • "12.5".isdigit() is False.
  • Validation logic should reflect the expected input.

Why interviewer asks this:

The interviewer wants to see whether you understand the limitations of simple validation methods.

Interactive learning

Practice lab

Apply this chapter with guided activities, immediate feedback, explanations, and retry.

Practice loads when this section enters view.