day5-分支和循环总结

5.1 分支结构

python中分支结构只有if语句,没有switch语句

5.1.1 if语句

  • a.语法:
    if 条件语句 :
    代码段
  • b.说明:
    if -- 关键字
    条件语句 -- 任何有结果的表达式,不管结果类型。
    : -- 固定写法,有冒号下以下必定有缩进
    代码段 -- 和if保持一个缩进的一条或多条语句。
  • c.执行过程:
    先判断条件结果是否是True,如果是True就执行冒号后面的代码段。否则就不执行。
    注意:
    如果条件语句结果不是布尔,会先将结果转换成布尔,再判断。
    除了0,空值以外的值转为布尔都为True。

if后面可以写哪些语句

注意:赋值语句不能写在if后面,其他都可以。

num = 10
if num & 1 == 0:
    print('%d是偶数' % (num))
    print('========')              # 和if保持一个缩进的语句是在条件成立才执行
                                  # 与if无关的语句最好换个行
print('##########')           # 在if外面的语句不管if条件是否成立都会执行


if 'ADS'.isupper():
    print('全是大写')  #不执行

# 练习:随机产生一个年龄值,如果大于等于18就打印成年。
import random
age = random.randint(0,100)
if age >= 18:
    print('%d已经成年了。' %(age))
else:
    print('未成年')
print(age)

5.1.2 if-else

  • a.语法:
    if 条件语句 :
    代码段1
    else:
    代码段2
  • b.说明:
    if -- 关键字
    else -- 关键字
    条件语句 -- 任何有结果的表达式,不管结果类型。
    : -- 固定写法,有冒号下以下必定有缩进
    代码段 -- 和if及else保持一个缩进的一条或多条语句。
  • c.执行过程:
    先判断条件结果是否是True,如果是True就执行代码段1。否则就执行代码段2。
    注意:
    如果条件语句结果不是布尔,会先将结果转换成布尔,再判断。
    除了0,空值以外的值转为布尔都为True。
#随机产生一个整数,如果是奇数打印’***是奇数‘,否则,反之。
num = random.randint(0,9999)
if num & 1:
    print('%d是奇数' %(num))
else:
    print('%d是偶数' %(num))

5.1.3 if-elif-else

  • a.语法:
    if 条件语句1 :
    代码段1
    elif 条件语句2:
    代码段2
    elif 条件语句3:
    代码段3
    ...
    else:
    代码段n
  • b.说明:
    if -- 关键字
    elif -- 关键字
    else -- 关键字
    条件语句 -- 任何有结果的表达式,不管结果类型。
    : -- 固定写法,有冒号下以下必定有缩进
    代码段 -- 和if、elif及else保持一个缩进的一条或多条语句。
  • c.执行过程:
    先判断条件语句1结果是否是True,如果是True就执行代码段1。
    否则就判断条件语句2结果是否是True,如果是True就执行代码段2。
    否则就判断条件语句3结果是否是True,如果是True就执行代码段3。
    ...
    如果前面所有的条件都为False,就执行代码段n。
    注意:
    后面的条件判断的前提是前面条件不成立。
    这里的elif根据情况可以有多个,else也可以省略。
    如果条件语句结果不是布尔,会先将结果转换成布尔,再判断。
    除了0,空值以外的值转为布尔都为True。
# score 60以下不及格 60-70及格 71-89良好 90以上优秀
score = random.randint(0,100)
print('成绩为%d:' %(score),end="")
if score < 60:
    print('不及格')
elif score <= 70:
    print('及格')
elif score <= 89:
    print('良好')
else:
    print('优秀')

5.1.4 if嵌套

可以在if,elif,else后面的代码段中,都可以再写其他的if语句。

#判断一个数字是否为偶数,是的话判断是否被4整除
score = random.randint(0,100)
if score & 1:
    print('%d是奇数' %score)
else:
    if score % 4 == 0:
        print('%d是4的倍数' % score)
    else:
        print('%d是偶数' %score)
"""
练习:输入一个字符串,判断字符串的第一个字符是否是字母,如果是,打印’以字符开头'。
如果这个字母是大写的再打印’大写字母‘。
"""
str1 = input('请输入一串字符:')
if str1[0].isalpha():    #if 'a' <= str1[0] <= 'z' or  'A' <= str1[0] <= 'Z':
    print('以字母开头')
    if str1[0].isupper():          #'A' <= str1[0] <= 'Z':
        print('大写字母')
else:
    print('什么都不打印')

'''
l = []
num = 0
while num <= 888:
    num = random.randint(0, 999)
    l.append(num)
print(l)
'''

5.2 for循环

python中的循环结构有两种:for和while循环。
什么时候用循环:某个操作需要重复执行,就考虑用循环。

5.2.1 for循环

  • 语法:
    for 变量名 in 序列:
    循环体
  • 说明:
    for、in -- 关键字
    变量名 -- 满足变量名要求即可
    序列 -- 字符串,列表,元组,字典,集合,迭代器,range
    循环体 -- 可以是一条或多条和for保持一个缩进的语句(需要重复执行的代码)
  • 执行过程:
    让变量去序列中取值,一个一个的取,取完为止;每取一个值,执行一次循环体。
    (for循环中,序列中元素的个数,决定了循环的次数)
    注意:
    如果for后的变量取到的值,在循环体里不使用,那么这个变量命名时,用一个_来命名。
for x in range(97,123):
    print(chr(x), end='--->')

for x in 'abc':
    print(x)
    print('##$$#$$#$#')

5.2 range

range(n) -- 产生一个数字序列,序列内容是0~n-1(结果是一个序列)
range(m,n) -- 产生一个数字序列,序列内容是m~n-1,m<n(结果是一个序列)
range(m,n,step) -- 产生一个数字序列,序列从m开始,每次加step直到n前为止,取不到n。
range一般用在:
1.需要产生指定范围的数字序列
2.单纯的控制for循环的循环次数

for num in range(10):
    print(num, end='')
print()
for num in range(10, 20, 2):
    print(num, end='--->')

#练习:求1+2+。。+100
sum1 = 0
for num in range(1, 101):
    sum1 += num
print(sum1)
print(sum([1, 2, 3]))

#练习:2+4+6+8+。。。+100
#方法1:不用if
sum1 = 0
for num in range(1, 51):      # range(2,101,2)
    sum1 += num*2
print(sum1)
#方法2:用if
sum2 = 0
for num in range(1, 101):
    if not num &1:
        sum2 += num
print(sum2)
"""
    if num & 1:
        pass
    else:   
     sum2 += num
"""

#练习:写程序统计一个字符串中数字字符的个数
str1 = input('请输入一个字符串:')
sum1 = 0
for i in str1:
    if '0' <= i <= '9':
        print(i)
        sum1 += 1
print('数字字符的个数是:', sum1)

#用循环控制打印10行”*“
for _ in range(1,10):
    print('*')

for x in range(1, 10):
    print('*'*x)

5.3 while

5.3.1 while循环

  • 语法:
    while 条件语句:
    循环体
  • 说明:
    while -- 关键字
    条件语句 -- 有结果的表达式,除了赋值语句
    : -- 固定写法
    循环体 -- 和while保持一个缩进的一条或者多条语句(会被重复执行)
  • 执行过程:
    先判断条件语句是否为True,为True就执行循环体;
    执行完循环体再判断条件语句是否为True,为True又执行循环体;
    。。。。。
    以此类推,直到条件语句为False,就结束整个循环。
#1*2*..*10
num = 1
sum1 = 1
while num <= 10:
    sum1 *= num
    num += 1
print(sum1)
print(1*2*3*4*5*6*7*8*9*10)

#获取字符串abc123中的每个字符
str1 = 'abc123'
num = 0
while num <= 5:
    print(str1[num])
    num += 1

5.3.2 for和while循环

python中,for循环能做到的while循环都能做到;但是while循环能做的,for循环不一定能做到。

  • 使用for循环:
    1.获取序列中的元素(值)
    2.循环次数确定
  • while循环:
    1.死循环
    2.循环次数不确定
#练习:程序不断的输入,知道为0为止
i = input('请输入:')
while i != '0':
    i = input('请输入:')

5.4 continue,break和else

5.4 .1 continue

  • continue是一个关键字,只能写在循环体中
  • 功能:当循环遇到continue则会结束当次循环,直接进入下次循环判断。
  • 进入下次循环:for循环就是用变量取下一个值;while循环就是直接判断条件语句是否为True。

5.4 .2 break

  • break是一个关键字,只能写在循环体中。
  • 功能:当循环遇到break时,直接结束当前循环。

5.4.3 else python中特有

  • 语法:

while 条件语句:
循环体
else:
代码段

for 变量 in 序列:
循环体
else:
代码段

  • 执行过程:
    else结构不会影响原循环的执行过程。当循环自然死亡时,就会执行else后面的代码段。
    循环因为遇到break而结束时,不会执行else后面的代码段。
for x in range(10):
    print(x)
else:
    print('for循环结束')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 好好计划,等着破茧成蝶。让梦想变为现实,让阳光驱散阴霾。 背四级词汇:每天30个,坚持 每天...
    兰珺阅读 75评论 0 0
  • 我今不复到园中去, 寂寞已如我一般高。 满地破碎的悲伤, 足以嵌入我的脚趾。 世界很安静, 推着我抵达寂寞的门廊。...
    零度以下的境界线阅读 131评论 1 0
  • https://www.liaoxuefeng.com/wiki/0014316089557264a6b34895...
    我想去个地方13阅读 181评论 0 0