python控制结构(一)if分支入门_【2020Python修炼记12】Python语法入门—流程控制(if分支结构+while/for循环结构)...

一、条件

灵魂三问:

什么是条件?什么可以当做条件?为何要用条件?

1、 条件,就是判断依据,判断前提……

2、条件的类型

# 第一大类:显式布尔值

条件可以是:比较运算符 # age = 18 # print(age > 16) # 条件判断之后会得到一个布尔值

条件可以是:True、False # is_beautiful=True # print(is_beautiful)

# 第二大类:隐式布尔值

所有的值都可以当成条件去用 # 其中0、None、空(空字符串、空列表、空字典),代表的布尔值为False,

其余都为True

3、为何要用条件

条件有助于程序按照人的思想去执行指令,得出人想要的结果。也能够提高代码的效率和价值。

二、逻辑运算符:not、and、or

注意:(不是 not at all)

1、not、and、or的基本使用

# not:就是把紧跟其后的那个条件结果取反

# ps:not与紧跟其后的那个条件是一个不可分割的整体

>>> print(not 16 > 13)

False>>> print(notTrue)

False>>> print(notFalse)

True>>> print(not 10)

False>>> print(not0)

True>>> print(notNone)

True>>> print(not '')#'' 空值

True>>>

# and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真

>>> print(True and 10 > 3)

True>>> print(True and 10 > 3 and 10 and 0) #条件全为真,最终结果才为True

0>>> print( 10 > 3 and 10 and 0 and 1 > 3 and 4 == 4 and 3 != 3) #偷懒原则

0>>>

# or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True,

# 两个条件都为False的情况下,最终结果才为False

>>> print(3 > 2 or0)

True>>> print(3 > 4 or False or 3 != 2 or 3 > 2 or True) #偷懒原则

True>>>

三句话总结:

not 就是:真变假,假变真

and 就是:全真为真,一假即假

or 就是:一真即真,全假为假

2、优先级 not>and>or

# ps:

# 如果单独就只是一串and连接,或者说单独就只是一串or连接,按照从左到右的顺讯依次运算即可(偷懒原则)

# 如果是混用,则需要考虑优先级了

>>> res=3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3 >3

>>> print(res)

False>>> #False False False

>>> res=(3>4 and (not 4>3)) or (1==3 and 'x' == 'x') or 3 >3

>>> print(res)

False

>>> #规范表达,尽量用and连接

>>> res=3>4 and ((not 4>3) or 1==3) and ('x' == 'x' or 3 >3)

>>> print(res)

False

>>>

三、成员运算符,身份运算符

1、成员运算符 in

>>> print("egon" in "hello egon") #判断一个字符串是否存在于一个大字符串中

True>>> print("e" in "hello egon") #判断一个字符串是否存在于一个大字符串中

True>>> print(111 in [111,222,33]) #判断元素是否存在于列表

True>>> #判断key是否存在于字典

>>> print(111 in {"k1":111,'k2':222})

False>>> print("k1" in {"k1":111,'k2':222})

True>>> #not in

>>> print("egon" not in "hello egon") #推荐使用

False>>> print(not "egon" in "hello egon") #逻辑同上,但语义不明确,不推荐

False>>>

2、身份运算符 is

>>>

>>> #is # 判断的是id是否相等

>>> x=10

>>> y=23

>>> x isy

False>>>

四、流程控制(即控制流程-指控制程序的执行流程)

1641822-20200309160403329-1291145941.jpg

1、分支结构——if 条件判断

==什么是分支结构==

分支结构就是根据条件判断的真假去执行不同分支对应的子代码

==为什么要用分支结构==

人类某些时候需要根据条件来决定做什么事情,

所以程序中必须有相应的机制来控制计算机具备人的这种判断能力

==如何使用分支结构==

=1、 if 的语法

完整的if语法如下图:

1641822-20200309161035720-449893700.png

语法一:单独的 if

if 条件:

(四个空格)代码1

(四个空格)代码2

(四个空格)代码3

(代码前的空格,是代码等级的区分标志)

#print(1)#print(2)#print(3)#if 条件:#代码1#代码2#代码3#print(4)#print(5)

>>>

>>> age = 60

>>> is_beautiful =True>>> if (age > 16 and age < 20 andis_beautiful):print('我喜欢,我们在一起吧')print('其他代码.............')>>>

>>> #if 后面的条件为真,才会执行其后的子代码

>>> age=30

>>> is_nice=True>>> if age==30 andis_nice:print('yes')print('no')

yes

no>>> age=40

>>> is_nice=True>>> if age>30 andis_nice:print('no')print('yes')

no

yes>>> age=20

>>> is_nice=True>>> if age<30 andis_nice:print('yes')

yes>>>##有个报错 SyntaxError

>>> if age>30 andis_nice:print('no')print('yes')

SyntaxError: unindent doesnotmatch any outer indentation level#查资料得知(在python中,tab和空格是分开的,在一个文件里混用tab和空格会报错)

出现这个错误时,是换行后,敲了四个空格(英文状态),再输入print('yes'),随后便报错。

解决方法——使用的是Python3.8

语法二:if-else

if(条件):

(四个空格)代码1

else:

(四个空格)代码2

if 条件:

代码1

代码2

代码3

else:

代码1

代码2

代码3

>>>

>>> age=18

>>> if age>30:print('no')else:print('yes')

yes>>>

>>> age = 60

>>> is_beautiful =True>>> star = '水平座'

>>> if age > 16 and age < 20 and is_beautiful and star == '水平座':print('我喜欢,我们在一起吧。。。')else:print('阿姨好,我逗你玩呢,深藏功与名')print('其他代码.............')####????

语法三:if---elif--else

——elif(条件)——上一条件不满足时,才会继续执行 elif(条件),else的命令

语法3-1: if-elif

if 条件1:

代码1

代码2

代码3

elif 条件2:

代码1

代码2

代码3

elif 条件3:

代码1

代码2

代码3'''

#score=73#if score >= 90:#print('优秀')#elif score >= 80 and score < 90:#print('良好')#elif score >= 70 and score < 80:#print('普通')

#改进#score = input('请输入您的成绩:') # score="18"#score=int(score)#

#if score >= 90:#print('优秀')#elif score >= 80:#print('良好')#elif score >= 70:#print('普通')

>>>

>>> s=74

>>> if s>=90:print('A')elif s>=80 and s<90:print('B')elif s>=70 and s<80:print('C')

C>>>

>>> s=input('please input your score:')

please input your score:99

>>> s=int(s) #因为在Pyhon解释器中,会将 input()所获得的内容全部当为 字符串类型,字符串类型是不能进行大小比较的。

因此 需要将输入的分数 强制转换为整型

>>> if s>=90:print('A')elif s>=80 and s<90:print('B')elif s>=70 and s<80:print('C')

A>>>

语法3-2:if-elif-else

if 条件1:

代码1

代码2

代码3

elif 条件2:

代码1

代码2

代码3

elif 条件3:

代码1

代码2

代码3

...

else:

代码1

代码2

代码3'''

#score = input('请输入您的成绩:') # score="18"#score=int(score)#

#if score >= 90:#print('优秀')#elif score >= 80:#print('良好')#elif score >= 70:#print('普通')#else:#print('很差,小垃圾')#

#print('=====>')

语法四:if 嵌套if

age = 17is_beautiful=True

star= '水平座'

if 16 < age < 20 and is_beautiful and star == '水平座':print('开始表白。。。。。')

is_successful=Trueifis_successful:print('两个从此过上幸福的生活。。。')else:print('阿姨好')print('其他代码.............')

循环结构——循环结构就是重复执行某段代码块

2、while 循环——条件循环

=1=while循环

while条件:

代码1

代码2

代码3

while的运行步骤:

步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......

步骤2:执行完毕后再次判断条件,

如果条件为True则再次执行:代码1、代码2、代码3、......,

如果条件为False,则循环终止

>>>

>>> count=0>>> while count<5:print(count)

count+=101

2

3

4

>>>

=2=死循环和效率问题

>>> count=0>>> while count < 5: #5 < 5

print(count) #会一直输出 0

#while True:#name=input('your name >>>> ')#print(name)

#纯计算无io的死讯会导致致命的效率问题#while True:#1+1

#while 1:#print('xxxx')

#如何退出 --

如果你是在程序中让其自动退出,则可以使用:exit() quit() exit() 执行到此命令时,程序终止。

如果是程序陷入死循环,想强制结束,则按ctrl + c。 //这个特别关键

=3=循环的应用

# 下面的栗子,存在两个问题:

# 1、重复代码

# 2、输对了,应该不用再重复

>>> username = 'cc'

>>> password = '123'

>>> whileTrue:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')else:print('账号名或密码错误')

请输入您的账号:'cc'请输入您的密码:123账号名或密码错误

请输入您的账号:'cc'请输入您的密码:'123'登录成功

请输入您的账号:'c'请输入您的密码:'123'账号名或密码错误

请输入您的账号:'ccc'请输入您的密码:'123'账号名或密码错误

请输入您的账号:'dd'请输入您的密码:'123'账号名或密码错误

请输入您的账号:'dd'请输入您的密码:'12'账号名或密码错误

请输入您的账号:'cc'请输入您的密码:'123'登录成功

请输入您的账号:

=4=退出循环的两种方式

=方式一:将条件改成 false

>>>

>>> tag=True>>> whiletag:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')

tag= False #登录成功后,就会执行该代码,之后的代码还会运行,下次循环判断条件时才生效——还会再做一次循环判断,然后退出循环

else:print('账号名或密码错误')

请输入您的账号:'dd'请输入您的密码:'123'账号名或密码错误

请输入您的账号:'cc'请输入您的密码:'123'登录成功>>>

=方式二:while+break,只要运行到break,就会立刻终止本层循环

>>> whileTrue:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')break #立刻终止本层循环

else:print('账号名或密码错误')

请输入您的账号:'cc'请输入您的密码:'1234'账号名或密码错误

请输入您的账号:'cc'请输入您的密码:'123'登录成功>>>

=7=while 循环嵌套

#每一层都必须配一个break

whileTrue:whileTrue:whileTrue:break

break

break

>>> #break的方式

>>> username = 'cc'

>>> password = '123'

>>> whileTrue: inp_name=input('请输入您的账号:') inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whileTrue: cmd=input('input message:')if cmd =='q':break print('命令{x}正在运行'.format(x=cmd))break #立刻终止本层循环 else:print('账号名或密码错误') 请输入您的账号:'dd'请输入您的密码:'123'账号名或密码错误 请输入您的账号:'cc'请输入您的密码:'123'登录成功 input message:'v'命令v正在运行 input message:'q' >>>

>>> #改变条件的方式

>>> tag=True>>> whiletag:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whiletag:

cmd=input('input message:')if cmd =='q':

tag=Falseelse:print('命令{x}正在运行'.format(x=cmd))else:print('账号名或密码错误')

请输入您的账号:'cc'请输入您的密码:'123'登录成功

input message:'v'命令v正在运行

input message:'q'

>>>

=8=while+continue

结束本次循环,直接进入下一次

强调:在continue之后添加同级代码毫无意义,因为永远无法运行

>>> username = 'cc'

>>> password = '123'

>>> count=0>>> while count < 6:if count==4: count+=1 continuecount+=1 print(count) count+=101 2 3 5 >>> count=0>>> while count < 6:if count==4: count+=1 continue #count+=1 根本没有执行 print(count) count+=101 2 3 5 >>>

=9=while+else

>>> username = 'cc'

>>> password = '123'

>>> count=0>>> while count < 6:if count==4:

count+=1

continue

print(count)

count+=1

else:print('else包含的代码会在while循环结束后,并且while循环是在没有被break打断的情况下正常结束的,才会运行')

01

2

3

5else包含的代码会在while循环结束后,并且while循环是在没有被break打断的情况下正常结束的,才会运行>>> count=0>>> while count < 6:if count==4:break

print(count)

count+=1

else:print('else包含的代码,在while循环结束后,并且while循环是在被break打断的情况下正常结束的,才不会运行')

01

2

3

>>>

应用案例:

版本一:

>>> username = 'cc'

>>> password = '123'

>>> count=0>>> tag=True>>> whiletag:if count == 3:print('输错三次退出')breakinp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whiletag:

cmd=input('input message:')if cmd =='q':

tag=Falseelse:print('命令{x}正在运行'.format(x=cmd))else:print('账号名或密码错误')

count+=1请输入您的账号:'ccc'请输入您的密码:'123'账号名或密码错误

请输入您的账号:'123'请输入您的密码:'ff'账号名或密码错误

请输入您的账号:'22'请输入您的密码:'222'账号名或密码错误

输错三次退出>>> count=0>>> tag=True>>> whiletag:if count == 3:print('输错三次退出')breakinp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whiletag:

cmd=input('input message:')if cmd =='q':

tag=Falseelse:print('命令{x}正在运行'.format(x=cmd))else:print('账号名或密码错误')

count+=1请输入您的账号:'cc'请输入您的密码:'123'登录成功

input message:'c'命令c正在运行

input message:'q'

>>>

版本二:(优化版)

test 1

>>> username = 'cc'

>>> password = '123'

>>> count=0>>> while count < 3:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whileTrue:

cmd=input("输入命令>:")if cmd == 'q':

break # 只是退出 子循环

else:print('命令{x}正在运行'.format(x=cmd))break #整个程序结束,退出所有while循环

else:print('账号名或密码错误')

count+=1

else:print('输错3次,退出')

# 第三个else包含的代码,会在while循环结束后,并且while循环是在没有被break打断的情况下正常结束的,才会运行

前面两个else,则是对应两个 if。

请输入您的账号:'123'请输入您的密码:'cc'账号名或密码错误

请输入您的账号:'1234'请输入您的密码:'234'账号名或密码错误

请输入您的账号:'cc'请输入您的密码:'12344'账号名或密码错误

输错3次,退出

test 2

>>> count=0>>> while count < 3:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whileTrue:

cmd=input("输入命令>:")if cmd == 'q':

break

else:print('命令{x}正在运行'.format(x=cmd))break #整个程序结束,退出所有while循环

else:print('账号名或密码错误')

count+=1

else:print('输错3次,退出')

请输入您的账号:'cc'请输入您的密码:'123'登录成功

输入命令>: 'v'命令v正在运行

输入命令>: 'q'

>>>

test 3_去掉第二个break(作用-#整个程序结束,退出所有while循环)

>>> count=0>>> while count < 3:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whileTrue:

cmd=input("输入命令>:")if cmd == 'q':

break

else:print('命令{x}正在运行'.format(x=cmd))#break

else:print('账号名或密码错误')

count+=1

else:print('输错3次,退出')

请输入您的账号:'cc'请输入您的密码:'123'登录成功

输入命令>: 'ww'命令ww正在运行

输入命令>: 'q'请输入您的账号:'cc'请输入您的密码:'1234'账号名或密码错误

请输入您的账号:'1223'请输入您的密码:'eee'账号名或密码错误

请输入您的账号:'123'请输入您的密码:'ee'账号名或密码错误

输错3次,退出

test 4

再来试一遍,可以总结出,如果不给外循环加一个break,

就算是输入正确,也会继续执行内循环,知道输错三次才会结束整个程序。>>> count=0>>> while count < 3:

inp_name=input('请输入您的账号:')

inp_pwd=input('请输入您的密码:')if inp_name == username and inp_pwd ==password:print('登录成功')whileTrue:

cmd=input("输入命令>:")if cmd == 'q':

break

else:print('命令{x}正在运行'.format(x=cmd))#break #整个程序结束,退出所有while循环

else:print('账号名或密码错误')

count+=1

else:print('输错3次,退出')

请输入您的账号:'cc'请输入您的密码:'123'登录成功

输入命令>: 'q'请输入您的账号:'cc'请输入您的密码:'123'登录成功

输入命令>: 'w'命令w正在运行

输入命令>: 'q'请输入您的账号:

Traceback (most recent call last):

File"", line 2, in inp_name=input('请输入您的账号:')

File"", line 0^SyntaxError: unexpected EOFwhileparsing>>>

3、for循环——取值循环

==1==什么是for循环

循环就是重复做某件事,for循环是python提供第二种循环机制

==2==为什么要有for循环

理论上for循环能做的事情,while循环都可以做

之所以要有for循环,是因为for循环在循环取值(遍历取值)比while循环更简洁

==3==如何使用for循环

=基本语法=

语法:for 变量名 in 可迭代对象: # 可迭代对象可以是:列表、字典、字符串、元组、集合代码1

代码2

代码3

...

= 案例 一= 循环取值

【简单版】 for

>>>

>>> l=['cat','love','mili']>>> for x inl:print(x)

cat

love

mili>>>

【复杂版】 while

>>> l=['cat','love','mili']>>> i=0>>> while i<3:print(l[i])

i+=1cat

love

mili>>>

= 案例二=字典循环取值

【简单版】

>>> dic={'k1':111,'k2':2222,'k3':333}>>> for k indic:print(k,dic[k])

k1111k22222k3333

>>>

【复杂版】while循环可以遍历字典,不过太麻烦……(此处省略若干字)

=案例三=字符串循环取值

【简单版】

>>>

>>> info='cat love mili'

>>> for x ininfo:print(x)

c

a

t

l

o

v

e

m

i

l

i>>>

【复杂版】

while循环也可以循环取值,不过太麻烦……(此处省略若干字)

==4== for循环控制循环次数 range()

=案例一=

>>> #python 3.8版本中:

>>> range(10)

range(0,10)>>> range(0,10)

range(0,10)>>> range(1,9)

range(1, 9)>>>

>>> #python 2 与python 3 会有不同形式的输出:

>>>

=案例二= for+break、 for+else——同while循环一样

>>> username='cc'

>>> usercode='123'

>>> for i in range(3):

name1=input('please input your name:')

code1=input('please input your code:')if name1==username and code1==usercode:print('登陆成功')whileTrue:

cmd=input('请输入指令:')if cmd=='q':#不要掉了冒号噢

break

else:print('命令{x}正在执行'.format(x=cmd))break

else:print('账号名或密码错误')else:print('输错账号密码次数过多')

please input your name:cc

please input your code:123登陆成功

请输入指令:1命令1正在执行

请输入指令:'q'命令'q'正在执行

请输入指令:q>>> for i in range(3):

name1=input('please input your name:')

code1=input('please input your code:')if name1==username and code1==usercode:print('登陆成功')whileTrue:

cmd=input('请输入指令:')if cmd=='q':#不要掉了冒号噢

break

else:print('命令{x}正在执行'.format(x=cmd))break

else:print('账号名或密码错误')else:print('输错账号密码次数过多')

please input your name:22please input your code:22账号名或密码错误

please input your name:22please input your code:22账号名或密码错误

please input your name:22please input your code:22账号名或密码错误

输错账号密码次数过多>>>

=案例三= range()补充

#1、for搭配range,可以按照索引取值,但是麻烦,所以不推荐#l=['aaa','bbb','ccc'] # len(l)#for i in range(len(l)):#print(i,l[i])#

#for x in l:#print(l)

#2、range()在python3里得到的是一只"会下蛋的老母鸡"

==5== for+continue

#for i in range(6): # 0 1 2 3 4 5#if i == 4:#continue#print(i)

==6== for循环嵌套——:外层循环循环一次,内层循环需要完整的循环完毕

#for i in range(3):#print('外层循环-->', i)#for j in range(5):#print('内层-->', j)

#补充:终止for循环只有break一种方案

==7==补充关于print()的知识

print('hello %s' % 'egon')#1、print之逗号的使用

print('hello','world','egon')#2、换行符

print('hello\n')print('world')#3、print值end参数的使用

print('hello\n',end='')print('word')print('hello',end='*')print('world',end='*')

4、比较while循环和for循环的异同

==相同之处==

都是循环,for循环可以干的事,while循环也可以干

==不同之处==

while循环称之为 条件循环,循环次数取决于条件何时变为假

for循环称之为 "取值循环",循环次数取决in后包含的值的个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值