Module 4 Ch 3 | Expressions and TypeCasting

 Expressions

 

चलो, आप धीरे धीरे Expressions तक आ गए. Python  में expression एक valid combination है operators, literals और variables का. expression एक या उससे ज्यादा operations से बना होता है जिसके साथ operators, literals और variables expression के constituents होते हैं.

तो python expression को कुछ इस तरह define करता है:

Atoms और operators का एक valid combination python के expression को form करते हैं. साधारण शब्दों में कहे तो atom वो है जिसकी value होती है. इसलिए identifiers, literals और values-in-enclosures जैसे-(‘’), paranthesis, brackets, etc i.e. strings, tuples, dictionaries, sets etc. ये सभी atom हैं.

python में कई प्रकार के expression होते हैं: arithmetic expression, string expressions, relational expressions, logical expressions, compound expressions etc.

Operators और operands जो expression में used हुए वो expression के type determine करते हैं. 

Expression compound expression भी हो सकते हैं, अगर उसमे multiple type के operators involve होंगे जैसे- a+b > c**d or a*b<c*d एक compound expression है क्युकी इसमें arithmetic, relational और logical operators involve हैं. 

चलिए इन सब के बारे में हम एक एक कर बात करते हैं.


 Arithmetic expressions

Arithmetic expression में numbers और arithmetic operators involve होते हैं. तो arithmetic expression नीचे दिए हुए categories में से कोई भी हो सकते हैं:

Pure expressions: Pure arithmetic expression वो होते हैं जिसमे सभी operands same numeric type के होते हैं. pure arithmetic expressions python में इनमे से कोई भी type के हो सकते हैं:

integer expression: सभी integer operands हैं, जैसे- x+y, b**z, c/y ये सभी अगर integer variable हैं तो ये integer expression हैं.

real (floating point) expression: सभी operands floating-point numbers होते हैं जैसे- p+q, r**s, t/u ये सभी real expression हैं अगर सभी variables floating- point variables.

complex number expression: सभी operands complex numbers हैं जैसे- 13+2j*(0+6.5j), 7j-(-3+2.1j) ये सभी complex number expression हैं.

Mixed expressions: Mixed arithmetic expression वो हैं जिनके operands के अलग numeric type होते हैं जैसे- a, b अगर integer variables हैं और c, d floating point  variables और e, f complex number variables हैं. अब नीचे के example देखे:

8+c, c/b+a, e*a+f, e+5, a*d-c**2


 Relational expressions

 

वो expression जिसमे literals और variables किसी भी valid type के और relational operator होते हैं वो relational expression हैं. जैसे-

x>y, y<=z, z<>x, z==q, x<y<z


Logical operators

 

वो expression जिसमे literals और variables किसी भी valid type का और logical operators होते हैं वो logical expression हैं. जैसे-

a or b, b and c, a and not b.


String expression

 

python दो string operator भी provide करता है + और * जब string operands और integers को combine होते हैं string expression बनाने के लिए.

+ operator, concatenation operator, इसमें operands सिर्फ string type की होनी चाहिए .

* operator, replication operator, इसमें operands एक string और एक integer होनी चाहिए .

example के लिए-

“and” + “then”  ये ‘andthen’ में result करेगा.

“and” *2       ये ‘andand’ में result करेगा.


 Evaluating expressions

 

इस section में हम python में expression को कैसे evaluate करते हैं वो सीखेंगे. सभी type के expression को देखेंगे पर string expression को अलग chapter में सीखेंगे.

1. Evaluating arithmetic expressions

 

हम जब छोटे थे तब हम सबने arithmetic expression को solve करने के लिए basic rules बनाये थे. python में भी कुछ ऐसे ही rule हैं.

Evaluating pure arithmetic expression

इसका एक basic principle हैं की pure expression को solve करने पे जो result आता है वो operands के type के होते हैं. जैसे-

expression a*c में अगर a और c दोनों ही long integers है तो result भी long integer का होगा. 7L*3L का result 21L होगा.

अगर p/q में p और q दोनों ही integers हैं तो result भी integer होगा. 7/2 का answer 3 होगा ना की 3.5.

Note: python3.x में अलग rules है .उसमे separate integers types नहीं होते.


Evaluating mixed arithmetic expressions

जब constants और variables अलग types के होते है तो expression में सभी mixed हो जाते हैं. python internally ही कुछ operands के data type को convert करता है ताकि सभी operands के data type match हो सके.

Implicit type conversion(coercion): implicit type conversion ऐसा conversion है जो compiler खुद ही perform करता है बिना programmer के  intervention के. ये तब होता है जब अलग अलग data type intermixed होते हैं ताकि कोई information loose न हो.

python में promotion का type follow होता है मतलब वो operands को largest type के operand के type में convert कर देता है. सीधे शब्दों में कहे तो अगर op1 operator op2 (x/y or p**a). अगर यहाँ दोनों argument standard numeric type है तो नीचे दिए गए coercions  follow होंगे:

अगर कोई भी argument complex number होगा तो दूसरा भी complex में बदल जाएगा.

otherwise, कोई floating point number है तो दूसरा भी floating point में बदल जायेगी.

अगर long integer है तो long integer में.

अगर plain integers है तो conversion की ज़रुरत नहीं है.

आगे हम इसका example देखेंगे और भी type casting सीखेंगे.


Example:

नीचे दिए हुए कोड को consider करे जिसमे mixed arithmetic expressions हैं. देखना हमे ये है की इसका final result और final data type क्या होता है?

            ch = 5L                                     #long integer

            i = 2                                         #integer

            fl=4                                          #integer

            db=5.0                                     #floating point number

            fd=36.0                                    #floating point number

            A =(ch+i)/db                            #expression1

            B=fd/db * ch/2                        #expression2

            print A

            print B

Solution:

जैसा की हमने पहले operator precedence पढ़ा है, उसके मुताबिक़ expression1 को internally evaluate करने पे:

1.png

यहाँ final data type expression 1 का floating-point number.

उसका expression कुछ इस तरह से evaluate होगा.

            ((ch + i)/db)

            ((5L + 2))/5.0

                        [integer to long conversion]

            ((5L + 2L))/5.0

            =(7L)/5.0

                        [long to floating point conversion]

            =7.0/5.0

            A=1.4


ठीक इसी तरह expression2 भी internally evaluate होगा.

2.png

expression 2 में final data type floating point number हैं.  तो expression 2 कुछ इस तरह evaluate होगा.

 (((fd/db)*ch)/2)

=(((36.0/5.0)*5L/2)

            [no conversion required]

=((7.2*5L)/2)

            [long to floating point conversion]

=((7.2*5.0)/2)

            [integer to floating point conversion]

=(36.0/2.0)

B=18.0

तो इस program का output:

1.4

18.0


ये python script mode में program.

3

ये उसका output

4


2. Evaluating relational expressions (comparisons):

 

सभी comparison operations python में सभी के same priority है. सभी relational expressions का result boolean values True या False. Relational expressions कैसे solve होती है चलो, वो हम example से सीखते हैं.

नीचे दिए गए statement के क्या output हैं ऐसे input देने पर :

a=10, b=23, c=23

print a<b

print b<=c

print a<b<=c

solution: इसका output ऐसा होगा

True

True

True

अगर हम input में

 a=23, b=10, c=10

इसका output ऐसा होगा

False

True

False


3. Evaluating logical expressions:

 

याद कीजिये हमने logical operators and, or, और not से logical expressions बनाया था. python में logical expressions को evaluate करने के लिए कुछ rules हैं:

1. Logical operators का precedence arithmetic operators से lower है, इसलिए arithmetic sub-expression पहले evaluate होगा फिर logical operators. जैसे-

25/5 or 2.0+20/10

=5 or 4.0

तो overall इसका result 5 होगा.

2. Logical operators का precedence खुद के logical operators में भी होता है. not, and, or इसलिए ये expression a or b and not c का evaluation कुछ इस तरह होगा.

(a or (b and (not c)))


तो यहाँ पर expressions होता है समाप्त. इस module का आखिरी main topic सामने है. अब बारी है type casting पढने की:



 Type casting:

 

जैसा की हम पहले पढ़ चुके है की python खुद भी type-casting करता है उसे implicit type casting कहते हैं. लेकिन python explicit type casting भी support करता है मतलब user खुद भी data के type change कर सकता है.

Explicit type casting: explicit type conversion एक user-defined है जो किसी expression को किसी specific type में रहने को force करती है. इसे हम type casting कहते हैं. किसी भी data type को change करना हो तब(expression) का syntax इस्तेमाल होता है.

नीचे दिए हुए table में कुछ type casting दी गयी है जो python offer करती है.


 

Type casting issues

 

जब हम किसी value के type को greater range में convert करते हैं तो (short to long) कोई problem नहीं होता है. लेकिन अगर हम larger data type से smaller data type करते हैं तो problem आती है.

Sr.no. conversion potential problem
1. floating point type to integer type इसमें fractional part में loss होगा.
2. bigger integer type to smaller integer type(long integer to plain integer) original value target type के out ऑफ़ range हो जायेंगे.

तो उम्मीद करते हैं की आपको धीरे धीरे पाइथन सीखने में मजा आ रहा होगा. तो इस chapter को हम यहीं पर ख़त्म करते हैं. आप हमसे जुड़े रहिये क्यूंकि अगला chapter बहुत important होने वाला है.

Nitin Arya

He is lucky be to a fast-growing YouTuber. Like every third person now in india, he is an engineer, working as manager in public sector. A photographer and a science teacher who usually deviates to the miracles of science rather than completing syllabus.

One thought on “Module 4 Ch 3 | Expressions and TypeCasting

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: