Python语法(2)
Python语法(2)
这次我们整理了判断语句和循环语句,这里我们仍然是和c语言进行比较
判断语句:
if-else基本判断语句:
当条件成立时执行if里面的语句,当条件不成立时执行else里面的语句
注意在python中if和else后面需要加上冒号:,但是在C语言中是加上{}来表示
在不同的执行语句一定要注意缩进,缩进在python中是很重要的一项
正确写法:
a = int(input())#比如我们输入的是9就输出YES,输入3就是NO
if a>5:
print("YES")
else:
print("NO")
错误写法:
a = int(input())
if a>5:
print("YES")
print("正确")
else:
print("NO")
上述错误写法很明显出现了缩进问题,这点一定要注意
如果是简单的if-else语句,如果不需要else里面的东西,我们是可以省略不写的。
a = int(input())
if a>5:
print("YES")
当执行语句只有一条时候,我们是可以写在一行当中,但是这样不规范,这里不是很推荐
a = int(input())
if a>5: print("YES")
else: print("NO")
当然多个if-else语句是可以嵌套的,到时候根据题意书写即可,注意缩进
例子:输入三个数字,找出最大的那个数字:
a,b,c=map(int,input(),split())
if a>b:
if a>c:
print(a)
else:
print(c)
else:
if b>c:
print(b)
else:
print(c)
常见的比较运算符:
大于 | > |
---|---|
小于 | < |
大于等于 | >= |
小于等于 | <= |
等于 | == |
不等于 | != |
多种情况的if-else的连写
在C语言中要写成else if,而在Python中要写成elif
a = int(input())
if a>=90:
print("优秀")
elif a>=75:
print("良好")
elif a>=60:
print("及格")
else:
print("不及格")
pass语句
正如我们上到提到的如果不需要输出任何语句可以不用写else语句,其实也可以在else中写上pass语句,表示无需执行如何动作
a = int(input())
if a>5:
print("YES")
else:
pass#表示先不执行等以后有需要再写
变量的作用域
if语句中的变量也可以在if语句外面使用
a,b=map(int,input().split())
if a>b:
c=a
else:
c=b
print(c)
但是在C语言中这点就不可以
条件表达式
与 | and |
---|---|
或 | or |
非 | not |
注意优先级not>and>or |
a = 10
b = 8
if a%2==0 andb%2==0:
print("YES")
else:
print("NO")
三元运算符
类似于C语言,Java中的问好表达式(忘记了建议回去看看)
a,b=map(int,input().split())
c=a if a>b else b
match语句
这个语句有点类似于C语言中switch-case语句
a = int(input())
match a:
case 400:
print("Bad request")
case 404:
print("Not found")
case 418 | 420 | 422:
print("I'm a teapot")
case _:
print("Something's wrong with the internet")
注意Python中比较运算符是可以连写的,这点跟C++和Java有很大的区别的
a,b,c=map(int,input().split())
if a>=b>=c:#对这里是可以连写的,但是在C语言和Java中就不可以了
print("YES")
else:
print("NO")
循环语句
while循环
while循环可以看成是一种循环版的if语句,if语句是只执行一次,只要满足就执行,而while语句会执行多次if语句,只要满足就执行,当然也会有一个改变变量的操作,不然这就是一个死循环。
a = 0
while a<10:
print(a)
i+=1#注意Python中没有++的形式
如果之前学过C语言有编程基础的同学,这里是比较好理解的。
做个题:求斐波那契数列
a,b,i =1,1,1
n=int(input())
#输出第n个数
while i<n:
a,b=b,a+b
i++;
print(a)#a就是第n项
注意不要让循环成为死循环
for循环
for循环语句用来按顺序枚举range或者是字符串等数据类型,for语句同样也需要满足冒号和缩进的要求。
以后会单独开一个专门讲数据类型,到时候for就可以结合列表,元组,集合,字典等一些复杂类型使用,这里先简单介绍一些for循环的简单用法
1.遍历字符串
for循环可以遍历字符串
a ="Python"
for i in a:#当然这里的i变量会自动转换为str(字符串)类型
print(i,end=" ")
#输出结果为:P y t h o n
也可以写成这个样子:
for i in "Python":
print(i,end=" ")
2.遍历range
Python中有一个range()函数,可以使用这个生成一个等差数列,可以接受1 or 2 or 3个整数参数,分别有不同的用法
举一个C语言的列子:
for(int i=1;i<=n;i++){
cout<<i<<endl;
}
等价于:
for i in range(n+1):
print(i)
接下来我们讲一下不同数量参数的意义:
1.接收一个参数时候
for i in range(5):
print(i,end=" ")
#输出0 1 2 3 4
2.接收两个参数时候
for i in range(2,5):
print(i,end=" ")
#输出 2 3 4
3.接收三个参数时候
for i in range(2,8,2):
print(i,end=" ")
#输出结果为2 4 6
这里要着重强调一下第三个方式,如果差值没写好很容易出现一个死循环,比如如果把最后的2换成-2这里就是一个死循环。
跳转语句
1.break
break语句可以提前结束最近的一层循环,一般情况下我们会和if语句连用,这里的break与C语言中的用法相似。
#判断一个数是不是素数
n = int(input())
if n<=1:
print(NO)
else:
flag = True;
for i in range(2,n):
if n%i==0:
flag=False;
break;#这里直接结束当前循环
if flag:
print("YES")
else:
print("NO")
2.continue语句
这里都是continue语句和C语言中的用法也差不多,都是可以结束当前循环中continue后面的语句,直接进入下一次循环。
#输出1-100之间所有的偶数和
s = 0
for i in range(1,101):
if i%2==1:
continue
else:
s+=i
print(s)
多层循环
Python中也和其他语言一样可以写多层循环,也就是说for循环里面还可以写一个for循环,但是要注意内外层循环的变量不能是同一个不然很容易出现错误。
k = 0
for i in range(10):
for j in range(10):
print(k,end=" ")
k+=1
print()#等价于换行
小tips
上面我们不是说到pass语句嘛,这里循环如果我们没有什么要输出的也可以用pass语句代替。
for i in range(10):
pass
#这是一个死循环,我们只是要求不输出内容,但不是做了一个死循环。
while True:
pass
2.循环中的else子句
for循环和while循环可以包含else子句,会在循环结束后执行,这里我们可以理解为for循环也是一种判断语句,只要不是被break等恶意终止,都会执行else语句,但是如果是被break语句终止的for循环则不会执行else语句。
#还是拿素数举例,输出是不是素数
n = int(input())
for i in range(2,n):
if n%i==0:
print("NO")
break
else:
print("YES")
注意多层循环尽量不要使用相同的变量名,防止互相干扰