matlabfor循环语句举例_笨办法学python(七)条件、选择和循环

第七课提纲

一、条件表达式

关系运算符

> <

逻辑运算符

与或非

二、选择结构

单分支

双分支结构

if与else的双分支结构

三元运算符的分支语句

多分支选择结构

选择嵌套结构

三、循环结构

for 与 while 循环

应用举例

break 与continue

四、案例分析

循环while的应用

计算平均分

分支if的应用

计算一年的第几天

快速筛选素数

一、条件表达式

1.关系运算符

>>> print(1<2>3)False>>> print(1<3>2)True>>> if a=3:   #条件表达式不允许使用赋值运算符SyntaxError: invalid syntax>>> 1>2>xxx  #上下文不存在xxxFalse>>>

2.逻辑运算符

与关系运算符类似,逻辑运算符and和or具有短路求值或惰性求值的特点,可能不会对所有的表达式进行求值,而是只计算必须计算的表达式的值。以and为例,对于表达式“表达式1 and表达式2”来说,如果表达式1的值为false,则不论表达式2是什么,都不会被计算。在设计包含多个条件的条件表达式时,如果能够大概预测不同条件失败的概率,并将多个条件根据and和or运算符的短路求值特性来组织顺序,可以提高程序运行效率。
>>> 3 and 55>>> 3 or 53>>> 0 and 50>>> not 3False>>> not 0True
下面的函数使用指定的分隔符把多个字符串连接成一个字符串,如果用户没有指定分隔符则使用逗号。

b8e02d07526052680e35c5b89aabc2f2.png

图1 逻辑运算符or的使用

输出结果为:

'1:2:3:4:5'

二、选择结构

1.单分支

单分支的表达式注意冒号和四个空格的缩进:
#if 表达式:#语句
>>> x=input('please input two numbers:')please input two numbers:2 6>>> a,b=map(int,x.split())>>> if a>b:a,b=b,a>>> print(a,b)2 6
在python中,代码的缩进非常重要,缩进是体现代码逻辑关系的重要方式,同一个代码块必须保证相同的缩进量。在实际的开发中,只要遵循一定的约定,python代码的排版是可以降低要求的。例如下面,虽然不建议这样写,但是也是可以执行的:
>>> if 3>2:print('ok')#语句较短,可以直接卸载分支语句的后面ok>>> if True:print(3);print(5)#在一行写多个语句,使用分号分隔35

2.双分支结构

①if与else的双分支结构

语法为:

#if 表达式:#语句1#else:#语句2

b6a7ca9d74e46b43dc42f521125d1ea6.png

图2 鸡兔同笼问题

>>>请输入鸡兔总数和腿的总数:5 16鸡:2,兔:3>>> ================================ RESTART ================================>>>请输入鸡兔总数和腿的总数:4 16鸡:0,兔:4>>> ================================ RESTART ================================>>>请输入鸡兔总数和腿的总数:5 17数据不正确,无解>>>

【知识点8】 ②  三元运算符的分支语句

Python提供了一个三元运算符,并且在三元运算符构成的表达式中还可以嵌套三元运算符,可以实现与选择结构相似的效果。

#Value1 if condition else value2当条件表达式condition为true时,则执行value1否则执行value2.>>> a=5>>> print(6) if a>3 else print(5)6>>> print(6 if a>3 else 5)6>>> b=6 if a>13 else 9>>> b9

8c722d324b94d1788e7d61b1f6776077.png

 图3 三元运算符的应用

3.多分支选择结构

语法表示为:

#if 表达式1:#语句1#elif表达式2:#语句2#elif表达式3:#语句3#…#Else:#语句n
def func(score):    if score >100 or score<0:        return 'wrong score.must between 0 and 100.'    elif score >=90:        return 'A'    elif score>=80:        return 'B'    elif score >=70:        return 'C'    elif score >=60:        return 'D'    else:        return 'E'

4.选择嵌套结构

语句如下

#if 表达式1:#语句1#if 表达式2:#语句2#else:#语句3#else:#if 表达式4:#语句4

还是前面的百分之转换等级abcde的代码,可以如下编写:

def func(score):    degree='DCBAAE'    if score>100 or score<0:        return 'wrong score.must between 0 and 100.'    else:        index=(score-60)//10        if index >=0:            return degree[index]        else:            return degree[-1]

三、循环结构

1.for 与 while 循环

这两个语句的含义和别的编译语言相同,在此只举案例。下面是用循环结构遍历并输出列表中的所有元素:

f32c9ccc60765ac6c3df2c133539d226.png

图4 循环for的应用

下面是用来输出1-100能被7整除但不能同时被5整除的所有整数:

b5c783b02a41467095d674c358bba055.png

图5 循环for的应用

下面是用嵌套的循环结构打印九九乘法表:

2d555d9602b3c7801e683c8942d5a20f.png

图6 双重循环的应用

下面使用带有else子句的循环结构来计算1+2+3+4……+100的结果:

0684491d7bdd8bf182381051eddc7580.png

图7 for与else一起使用

下面是while 语句实现了同样的功能

92f1d9c4414875d607f9adb57e2e26c9.png

图8 while语句的使用

使用内置函数sum也可以实现相同的功能:

>>>sum(range(1,101))5050

2.break 与continue

break一旦被执行,将使得break语句所属层次的循环提前结束
continue提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环

四、案例分析

1.输入若干个成绩,求所有成绩的平均分。每输入一个成绩后询问是否继续输入下一个成绩,回答yes就继续输入下一个成绩,回答no就停止输入成绩。

numbers=[]while True:    x=input('请输入一个成绩:')    try:        numbers.append(float(x))    except:        print('不是合法的成绩')while True:    flag=input('继续输入吗(yes/no)').lower()    if flag not in ('yes','no'):        print('只能输入yes或no')    else:        break    if flag=='no':        break print(sum(numbers)/len(numbers))>>>请输入一个成绩:1继续输入吗(yes/no)yes请输入一个成绩:5继续输入吗(yes/no)yes请输入一个成绩:3继续输入吗(yes/no)no3.0>>>

2.编写程序,判断今天是今年的第几天

import timedate=time.localtime()year,month ,day=date[:3]day_month=[31,28,31,30,31,30,31,31,30,31,30,31]if year%400==0 or(year%4==0 and year%100!=0):    day_month[1]=29if month ==1:    print(day)else:    print(sum(day_month[:month-1])+day)

3.如何快速判断一个数字是否是素数?

n=input('input an integer:')n=int(n)if  n==2:    print('Yes')elif n%2==0:    print('No')#偶数必然不是素数else:#大于5的素数必然出现的6的倍数的两侧#因为6x+2,6x+3,6x+4肯定不是素数,假设x为大于1的自然数    m=n%6if m!=1 and m!=5:    print('No')else:    for i in range(3,int(n**0.5)+1,2):        if n%i==0:            print('No')            break    print('Yes')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值