行与缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号({})。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
实例如下:
if True:
print("True")
else:
print("False")
以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:
if True:
print("Answer")
print("True")
else:
print("Answer")
print("False") #缩进不一致,会导致运行错误
以上程序由于缩进不一致,执行后会出现类似以下错误:
File"test.py", line 6
print("False") #缩进不一致,会导致运行错误
^
IndentationError: unindent does not match any outer indentation level
程序编写的步骤
- 1、分析问题:分析问题的计算部分
- 2、确定问题:将计算部分划分为确定的IPO三部分
- 3、设计算法:完成计算部分的核心方法
- 4、编写程序:实现整个程序
- 5、调试测试:使程序在各种情况下都能正确运行
- 6、升级维护:使程序长期正确运行,适应需求的微小变化
什么是运算符?
举个简单的例子 4 +5 = 9 。例子中,4 和 5 被称为操作数,"+"称为运算符。
Python语言支持以下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
- 运算符优先级
接下来让我们一个个来学习Python的运算符。
以下假设变量a为10,变量b为21:
运算符 | 描述 | 实例 |
+ | 加 - 两个对象相加 | a + b 输出结果 31 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -11 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 210 |
/ | 除 - x 除以 y | b / a 输出结果 2.1 |
% | 取模 - 返回除法的余数 | b % a 输出结果 1 |
** | 幂 - 返回x的y次幂 | a**b 为10的21次方 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
Python比较运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
Python比较运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
Python比较运算符
以下假设变量a为10,变量b为20:
运算符 | 逻辑表达式 | 描述 | 实例 |
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
以上实例输出结果:
a=10
b=20
if( aand b):
print("1 -变量 a和 b都为 true")
else:
print("1 -变量 a和 b有一个不为 true")
if( aor b):
print("2 -变量 a和 b都为 true,或其中一个变量为 true")
else:
print("2 -变量 a和 b都不为 true")
#修改变量 a的值
a=0
if( aand b):
print("3 -变量 a和 b都为 true")
else:
print("3 -变量 a和 b有一个不为 true")
if( aor b):
print("4 -变量 a和 b都为 true,或其中一个变量为 true")
else:
print("4 -变量 a和 b都不为 true")
if not( a and b):
print("5 -变量 a和 b都为 false,或其中一个变量为 false")
else:
print("5 -变量 a和 b都为 true")
以上实例输出结果:
1-变量 a和 b都为true
2-变量 a和 b都为true,或其中一个变量为true
3-变量 a和 b有一个不为true
4-变量 a和 b都为true,或其中一个变量为true
5-变量 a和 b都为false,或其中一个变量为false
Python成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符 | 描述 | 实例 |
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
以下实例演示了Python所有成员运算符的操作:
a=10
b=20
list= [1,2,3,4,5];
if( ain list):
print("1 -变量 a在给定的列表中 list中")
else:
print("1 -变量 a不在给定的列表中 list中")
if( bnot in list):
print("2 -变量 b不在给定的列表中 list中")
else:
print("2 -变量 b在给定的列表中 list中")
#修改变量 a的值
a=2
if( ain list):
print("3 -变量 a在给定的列表中 list中")
else:
print("3 -变量 a不在给定的列表中 list中")
以上实例输出结果:
1-变量 a不在给定的列表中 list中
2-变量 b不在给定的列表中 list中
3-变量 a在给定的列表中 list中
Python身份运算符
身份运算符用于比较两个对象的存储单元
运算符 | 描述 | 实例 |
is | is是判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , is 返回结果 1 |
is not | is not是判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1 |
以下实例演示了Python所有身份运算符的操作:
#!/usr/bin/python3
a=20
b=20
if( ais b):
print("1 - a和 b有相同的标识")
else:
print("1 - a和 b没有相同的标识")
if( id(a) == id(b) ):
print("2 - a和 b有相同的标识")
else:
print("2 - a和 b没有相同的标识")
#修改变量 b的值
b=30
if( ais b):
print("3 - a和 b有相同的标识")
else:
print("3 - a和 b没有相同的标识")
if( ais not b):
print("4 - a和 b没有相同的标识")
else:
print("4 - a和 b有相同的标识")
以上实例输出结果:
1- a和 b有相同的标识
2- a和 b有相同的标识
3- a和 b没有相同的标识
4- a和 b没有相同的标识
Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
以下实例演示了Python所有运算符优先级的操作:
#!/usr/bin/python3
a=20
b=10
c=15
d=5
e=0
e= (a+ b) * c/ d #( 30 * 15 ) / 5
print("(a + b) * c / d运算结果为:", e)
e= ((a+ b) * c) / d # (30 * 15 ) / 5
print("((a + b) * c) / d运算结果为:", e)
e= (a+ b) * (c/ d); # (30) * (15/5)
print("(a + b) * (c / d)运算结果为:", e)
e= a+ (b* c) / d; # 20 + (150/5)
print("a + (b * c) / d运算结果为:", e)
以上实例输出结果:
(a+ b) * c/ d运算结果为:90.0
((a+ b) * c) / d 运算结果为:90.0
(a+ b) * (c/ d)运算结果为:90.0
a+ (b* c) / d运算结果为:50.0
判断语句介绍
<1> 比较(即关系)运算符
python中的比较运算符如下表:
描述 | 示例 | |
== | 检查两个操作数的值是否相等,如果是则条件变为真。 | 如a=3,b=3则(a == b) 为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a != b) 为 true. |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a > b) 为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a < b) 为 false. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a >= b) 为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a <= b) 为 true. |
运算符 | 逻辑表达式 | 描述 | 实例 |
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
if语句
Python中if语句的一般形式如下所示:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
- 如果 "condition_1"为 True将执行 "statement_block_1"块语句
- 如果 "condition_1"为False,将判断 "condition_2"
- 如果"condition_2"为 True将执行 "statement_block_2"块语句
- 如果 "condition_2"为False,将执行"statement_block_3"块语句
Python中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
- 1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。
- 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 3、在Python中没有switch – case语句
以下是一个简单的 if实例:
#!/usr/bin/python3
var1=100
if var1:
print("1 - if表达式条件为 true")
print(var1)
var2=0
if var2:
print("2 - if表达式条件为 true")
print(var2)
print("Good bye!")
执行以上代码,输出结果为:
1-if表达式条件为true
100
Good bye!
从结果可以看到由于变量 var2为 0,所以对应的 if 内的语句没有执行。
以下实例演示了狗的年龄计算判断:
#!/usr/bin/python3
age=int(input("请输入你家狗狗的年龄: "))
print("")
if age <0:
print("你是在逗我吧!")
elif age ==1:
print("相当于 14 岁的人。")
elif age ==2:
print("相当于 22 岁的人。")
elif age >2:
human=22+ (age-2)*5
print("对应人类年龄: ", human)
###退出提示
input("点击 enter 键退出")
将以上脚本保存在dog.py文件中,并执行该脚本:
$ python3 dog.py
请输入你家狗狗的年龄:1
相当于14岁的人。
点击 enter键退出
以下为if中常用的操作运算符:
操作符 | 描述 |
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于,比较对象是否相等 |
!= | 不等于 |
实例
#!/usr/bin/python3
#程序演示了 ==操作符
#使用数字
print(5==6)
#使用变量
x=5
y=8
print(x== y)
以上实例输出结果:
False
False
if嵌套
在嵌套 if语句中,可以把 if...elif...else结构放在另外一个 if...elif...else结构中。
if表达式1:
语句
if表达式2:
语句
elif表达式3:
语句
else
语句
elif表达式4:
语句
else:
语句
实例
# !/usr/bin/python3
num=int(input("输入一个数字:"))
if num%2==0:
if num%3==0:
print("你输入的数字可以整除 2 和 3")
else:
print("你输入的数字可以整除 2,但不能整除 3")
else:
if num%3==0:
print("你输入的数字可以整除 3,但不能整除 2")
else:
print ("你输入的数字不能整除 2 和 3")
将以上程序保存到 test_if.py文件中,执行后输出结果为:
$ python3 test.py
输入一个数字:6
你输入的数字可以整除2和3
import random
player = input('请输入:剪刀(0) 石头(1) 布(2):')
player = int(player)
computer = random.randint(0,2)
# 用来进行测试
#print('player=%d,computer=%d',(player,computer))
if ((player ==0)and (computer ==2))or ((player ==1)and (computer ==0))or ((player ==2)and (computer ==1)):
print('获胜,哈哈,你太厉害了')
elif player == computer:
print('平局,要不再来一局')
else:
print('输了,不要走,洗洗手接着来,决战到天亮')
Python比较运算符
以下假设变量a为10,变量b为20: