《Py4Inf-03-ConditionalPy4Inf-03-Conditional》由会员分享,可在线阅读,更多相关《Py4Inf-03-ConditionalPy4Inf-03-Conditional(32页珍藏版)》请在金锄头文库上搜索。
1、Conditional ExecutionChapter 3Python for Informatics: Exploring IUnless otherwise noted, the content of this course material is licensed under a Creative Commons Attribution 3.0 License.http:/creativecommons.org/licenses/by/3.0/.Copyright 2010- Charles R. SeveranceConditional StepsOutput:SmallerFini
2、sProgram:x = 5if x 20: print Biggerprint Finisx = 5X 20 ?print Biggerprint FinisYesYesComparison OperatorsBoolean expressions ask a question and produce a Yes or No result which we use to control program flowBoolean expressions using comparison operators evaluate to - True / False - Yes / NoComparis
3、on operators look at variables but do not change the variableshttp:/en.wikipedia.org/wiki/George_BooleRemember: “=” is used for assignment.Python Meaning= Greater than or Equal Greater than!= Not equalComparison Operatorsx = 5if x = 5 : print Equals 5if x 4 :print Greater than 4if x = 5 :print Great
4、er than or Equal 5if x Preferences - Language Menu/Tab SettingsTextWrangler: TextWrangler - Preferences - Editor DefaultsPython cares a *lot* about how far line is indented. If you mix tabs and spaces, you may get “indentation errors” even if everything looks finePlease do this now while you are thi
5、nking about it so we can all stay sane.This will save you much unnecessary pain.x = 5if x 2 :print Bigger than 2print Still biggerprint Done with 2for i in range(5) :print iif i 2 : print Bigger than 2print Done with i, ix = 5if x 2 :# commentsprint Bigger than 2# dont matterprint Still bigger# but
6、can confuse youprint Done with 2# if you dont line # them upincrease / maintain after if or fordecrease to indicate end of blockblank lines and comment lines ignoredMental begin/end squaresx = 5if x 2 :print Bigger than 2print Still biggerprint Done with 2for i in range(5) :print iif i 2 : print Big
7、ger than 2print Done with i, ix = 5if x 2 :# commentsprint Bigger than 2# dont matterprint Still bigger# but can confuse youprint Done with 2# if you dont line # them upx 1print More than onex 1 :print More than oneif x 1print More than onex 1 :print More than oneif x 1print More than onex 1 :print
8、More than oneif x 2print BiggeryesnoX = 4print Not biggerprint All DoneTwo-way using else :x = 4if x 2 :print Biggerelse :print Smallerprint All donex 2print BiggeryesnoX = 4print Smallerprint All DoneTwo-way using else :x = 4if x 2 :print Biggerelse :print Smallerprint All donex 2print BiggeryesnoX
9、 = 4print Smallerprint All DoneMulti-wayif x = 2 : print Two or moreelse :print Something elseWhich will never print?The try / except StructureYou surround a dangerous section of code with try and except.If the code in the try works - the except is skippedIf the code in the try fails - it jumps to t
10、he except section$ cat notry.py astr = Hello Bobistr = int(astr)print First, istrastr = 123istr = int(astr)print Second, istr$ python notry.py Traceback (most recent call last):File notry.py, line 2, in istr = int(astr)ValueError: invalid literal for int() with base 10: Hello BobThe program stops he
11、reAllDone SoftwareInputDevicesCentralProcessingUnitMainMemoryOutputDevicesSecondaryMemoryGenericComputer$ cat tryexcept.py astr = Hello Bobtry:istr = int(astr)except:istr = -1print First, istrastr = 123try:istr = int(astr)except:istr = -1print Second, istr$ python tryexcept.py First -1Second 123When
12、 the first conversion fails - it just drops into the except: clause and the program continues.When the second conversion succeeds - it just skips the except: clause and the program continues.try / exceptastr = Bobastr = Bobtry:print Helloistr = int(astr)print Thereexcept:istr = -1print Done, istrpri
13、nt Helloprint Thereistr = int(astr)print Done, istristr = -1Safety netSample try / except$ python trynum.py Enter a number:42Nice work$ python trynum.pyEnter a number:fourtytwoNot a number$rawstr = raw_input(Enter a number:)try: ival = int(rawstr)except: ival = -1if ival 0 : print Nice workelse: pri
14、nt Not a numberExerciseRewrite your pay computation to give the employee 1.5 times the hourly rate for hours worked above 40 hours.Enter Hours: 45Enter Rate: 10 Pay: 475.0475 = 40 * 10 + 5 * 15ExerciseRewrite your pay program using try and except so that your program handles non-numeric input gracef
15、ully.Enter Hours: 20 Enter Rate: nine Error, please enter numeric inputEnter Hours: forty Error, please enter numeric inputSummaryComparison operators = = !=Logical operators: and or notIndentationOne Way DecisionsTwo way Decisions if : and else :Nested DecisionsMultiway decisions using elifTry / Except to compensate for errorsShort circuit evaluations