Python之旅——分支和循环

分支语句if

展示if分支最好的一个小程序就是将分数转化成等级
由于是一个比较简单的小程序,所以我们直接给出代码:

score=int(input("请输入成绩: "))
if (90<=score<=100) :
    print('A')
# 100>=score>=90 也可以
if (80<=score<90) :
    print('B')
if (60<=score<80) :
    print('C')
if (0<=score<60) :
    print('D')
if (score<0 or score>100) :
    print("输入错误!")

注意:

  • Py中可以存在连续不等式:100>=score>=90
  • 任何从键盘输入得到的数据,注意要专门转化为相应的类型
  • C++:|| <==> Python:or

但是任何一个有编程基础的同学都不会甘心于此
这种写法ta不够优美:这五个if语句是完全并列的,在执行程序的时候会分别进行不等式判断
即使score满足了其中一个条件,仍需要花费时间进行之后的if判断,换而言之就是常数较大

在其他的语言中,我们使用if...else解决这个问题
同样的,Py中也有if...else语句:

score=int(input("请输入成绩: "))
if (90<=score<=100) :
    print('A')
else :
    if (80<=score<90) :
        print('B')
    else :
        if (60<=score<80) :
            print('C')
        else :
            if (0<=score<60) :
                print('D')
            else :
                print("输入错误!")

注意:

  • 缩进要优美而规整(这对于代码风格诡谲且喜欢压行的我来说太不友好了TwT)

有一说一,这个缩进属实恐怖
估计开发Py的前辈也发现了这个可怕的事实,所以发明了一种不同于其他语言的分支语法
e l i f elif
实际上就是else+if,功能实现也非常简单:

score=int(input("请输入成绩: "))
if (90<=score<=100) :
    print('A')
elif (80<=score<90) :
    print('B')
elif(60<=score<80) :
    print('C')
elif (0<=score<60) :
    print('D')
else :
    print("输入错误!")

嗯~~~~,这样就优美很多了嘛
这样的语法充分体现了Py语言的两大特点:简洁&&可读性高


三目运算符

还记得C++中的朱砂痣——三目预运算符——嘛?

int x=4,y=5;
int mx=(x>y) ? x : y;

实际上Py中也有类似的语法,我在初次看到ta的原型后不禁疑惑:这样难道不是降低可读性了嘛/笑哭
然而据说Py论坛中的大大们对此表现出了强烈的诉求,所以在2.5版本中,开发者加入了三目运算符:

语法:x if (条件) else y

满足条件取x,否则取y

x,y=4,5
if (x > y) 
    mx = x
else
    mx = y

############

x,y=4,5
small = x if (x>y) else y

断言assert

最后的最后,我们介绍一个if语句的亲戚:断言assert
当这个关键字后边的条件为假时,程序自动崩溃并抛出AssertionError的异常

一般来说,我们可以用ta在程序中插入检查点,当需要确保程序中的某个条件一定为真时程序才能正常工作,assert关键字就非常有用了
在这里插入图片描述


while循环

while 条件:
    循环体

for循环

Py的for循环比C++更加的灵活和强大

for 目标 in 表达式:
    循环体
# 表达式一般都是一个列表,列表的定义在下面会有展示

还是实际操作一下:
在这里插入图片描述

现在问题来啦:
如果我们要实现C++语言中for (int i=1;i<=n;i++)的功能,难道需要开一个长度为n的列表吗?
当然不用啦,这里我们引入一个for循环的小伙伴:
r a n g e range

函数原型:
r a n g e ( [ s t a r t , ] s t o p [ , s t e p = 1 ] ) range( [ start , ] stop [ , step = 1 ] )
再[]内部的内容可以省略
这个函数完整形式包括三个参数:起点,重点,步幅
一般地,步幅step默认为1,起点start默认为0
这个函数的作用就是生成一个从start到stop,公差为step的数字列表

用法非常简单:
在这里插入图片描述


最后献上杂烩演示程序:

bingo='周杰伦'
print("Coco_T_最喜欢的歌星是谁呀~")
while 1 :
    ans=input()
    # str(input()) input默认返回的是str类型,所以不需要类型转换
    if (ans == bingo) :
        break
    else :
        print('在猜猜啦')
print('哎呦~不错哦')

(要命了,Py的思路和C++不一样啊,看看下面这个程序,能想明白吗)
在这里插入图片描述

发布了944 篇原创文章 · 获赞 193 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/wu_tongtong/article/details/104236869