分支语句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的前辈也发现了这个可怕的事实,所以发明了一种不同于其他语言的分支语法:
实际上就是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循环的小伙伴:
函数原型:
再[]内部的内容可以省略
这个函数完整形式包括三个参数:起点,重点,步幅
一般地,步幅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++不一样啊,看看下面这个程序,能想明白吗)