Day2 Python的运算符及三大语句控制结构

Python的运算符

Python语言支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

Python的三大语句控制结构:

  • 顺序结构
  • 分支结构
  • 循环结构

 

 

接下来让我们一个个来学习Python的运算符。

Python算术运算符

以下实例演示了Python所有算术运算符的操作:

#!/usr/bin/python3
a = 21
b = 10
c = 0
print("a 的值为:",a," b 的值为:",b)
c = a + b
print ("a + b的值为:", c)
c = a - b
print ("a - b的值为:", c)
c = a * b
print ("a * b 的值为:", c)
c = a / b
print ("a / b的值为:", c)
c = a % b
print ("a % b 的值为:", c)
# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print("修改a b的值,a:",a," b:",b)
print ("a**b 的值为:", c)
a = 10
b = 5
c = a//b
print("修改a b的值,a:",a," b:",b)
print ("a//b 的值为:", c)
View Code

Python比较运算符

以下实例演示了Python所有比较运算符的操作:

a = 21
b = 10
c = 0
print("a为:",a," b为:",b)
if ( a == b ):
   print ("1 - a 等于 b")
else:
   print ("1 - a 不等于 b")

if ( a != b ):
   print ("2 - a 不等于 b")
else:
   print ("2 - a 等于 b")

if ( a < b ):
   print ("3 - a 小于 b")
else:
   print ("3 - a 大于等于 b")

if ( a > b ):
   print ("4 - a 大于 b")
else:
   print ("4 - a 小于等于 b")

# 修改变量 a 和 b 的值
a = 5;
b = 20;
print("修改a b的值以后,a为:",a," b为:",b)
if ( a <= b ):
   print ("5 - a 小于等于 b")
else:
   print ("5 - a 大于  b")

if ( b >= a ):
   print ("6 - b 大于等于 a")
else:
   print ("6 - b 小于 a")
View Code

Python赋值运算符

以下实例演示了Python所有赋值运算符的操作:

a = 21
b = 10
c = 0
print("a的值为:",a," b的值为",b)
c = a + b
print ("a + b 的值为:", c)
c += a
print ("c += a 的值为:", c)
c *= a
print ("c *= a 的值为:", c)
c /= a
print ("c /= a 的值为:", c)
c = 2
c %= a
print ("c %= a 的值为:", c)
c **= a
print ("c **= a的值为:", c)
c //= a
print ("c //= a 的值为:", c)
View Code

Python位运算符

注意:位运算符是把数字看作二进制来进行计算的。

Python中的按位运算法则如下:

下表中变量 a 为 60,b 为 13二进制格式如下:

a  =   0011 1100

b  =   0000 1101

-----------------

a&b = 0000 1100

a|b =  0011 1101

a^b = 0011 0001

~a  = 1100 0011
View Code

以下实例演示了Python所有位运算符的操作:

a = 60            # 60 = 0011 1100
b = 13            # 13 = 0000 1101
c = 0
c = a & b;        # 12 = 0000 1100
print("a的值为:",a,"b的值为:",b)
print ("a & b 的值为:", c)
c = a | b;        # 61 = 0011 1101
print ("a | b 的值为:", c)
c = a ^ b;        # 49 = 0011 0001
print ("a ^ b 的值为:", c)
c = ~a;           # -61 = 1100 0011
print ("~a 的值为:", c)
c = a << 2;       # 240 = 1111 0000
print ("a << 2 的值为:", c)
c = a >> 2;       # 15 = 0000 1111
print ("a >> 2 的值为:", c)
View Code

Python逻辑运算符

a = 10
b = 20
if ( a and b ):
   print ("1 - 变量 a 和 b 都为 true")
else:
   print ("1 - 变量 a 和 b 有一个不为 true")

if ( a or b ):
   print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
   print ("2 - 变量 a 和 b 都不为 true")

# 修改变量 a 的值
a = 0
if ( a and b ):
   print ("3 - 变量 a 和 b 都为 true")
else:
   print ("3 - 变量 a 和 b 有一个不为 true")

if ( a or 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")
View Code

 注意1:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

 注意2:

    python 中的 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值;

    or 也是从左到右计算表达式,返回第一个为真的值;

    其中数字 0 是假,其他都是真;

    字符 "" 是假,其他都是真;

如下代码演示:

print(5 and 4)
print(5 and 4 and 0)
print(5 and 4 and "")
print(5 or 4)
print(0 or 4)
print("" or 5)
View Code

 

Python成员运算符。

Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

 以下实例演示了Python成员运算符的操作:

a = 10
b = 20
list = [1, 2, 3, 4, 5 ];

if ( a in list ):
   print ("1 - 变量 a 在给定的列表中 list 中")
else:
   print ("1 - 变量 a 不在给定的列表中 list 中")

if ( b not in list ):
   print ("2 - 变量 b 不在给定的列表中 list 中")
else:
   print ("2 - 变量 b 在给定的列表中 list 中")

# 修改变量 a 的值
a = 2
if ( a in list ):
   print ("3 - 变量 a 在给定的列表中 list 中")
else:
   print ("3 - 变量 a 不在给定的列表中 list 中")
View Code

Python身份运算符

 

以下实例演示了Python所有身份运算符的操作:

a = 20
b = 20

if ( a is 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 ( a is b ):
   print ("3 - a 和 b 有相同的标识")
else:
   print ("3 - a 和 b 没有相同的标识")

if ( a is not b ):
   print ("4 - a 和 b 没有相同的标识")
else:
   print ("4 - a 和 b 有相同的标识")
View Code

注意:is 与 == 区别:is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

a = [1, 2, 3]
b = a
print(b is a) #True
print(b == a)#True
b = a[:]
print(b is a)#False
print(b == a)#True

Python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

以下实例演示了Python所有运算符优先级的操作:

a = 20
b = 10
c = 15
d = 5
e = 0
print(type(a*b))
print("a=",a," b=",b," c=",c," d=",d)
print(type(b/d))
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)
View Code

 

Python的三大语句控制结构:

顺序结构

顺序结构也是python中三大语句控制结构中最基本的语句控制结构,可以这么说:我们写的代码都会用到顺序控制结构,如下所示:

a = 9
b = 5
c = a + b
print(c)

分支结构

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语句:

var1 = 100
if var1:
   print ("1 - if 表达式条件为 true")
   print (var1)

var2 = 0
if var2:
   print ("2 - if 表达式条件为 true")
   print (var2)
print ("Good bye!")
View Code

单分支语句:

age = int(input("请输入你家狗狗的年龄: "))
print("")
if age < 0:
    print("你是在逗我吧!")
else:
    print("你是人啊")
View Code

多分支语句:

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 键退出")
View Code

以下为if中常用的操作运算符:

Demo:猜字游戏:

# 该实例演示了数字猜谜游戏
number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
    guess = int(input("请输入你猜的数字:"))

    if guess == number:
        print("恭喜,你猜对了!")
    elif guess < number:
        print("猜的数字小了...")
    elif guess > number:
        print("猜的数字大了...")
View Code

if 嵌套

在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中。

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

演示代码如下:

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")
View Code

嵌套条件语句会随着它潜逃数量层的增加而变得非常难理解和阅读,应该尽量避免多层嵌套。

补充: range()和random模块:

import random

x = random.choice(range(100))
y = random.choice(range(200))
if x > y:
    print('x:',x)
elif x == y:
    print('x+y', x + y)
else:
    print('y:',y)
View Code

choice() 方法返回一个列表,元组或字符串的随机项。

以下是 choice() 方法的语法:

import random
random.choice( seq  )

注意:choice()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。

参数

  • seq -- 可以是一个列表,元组或字符串。

返回值

返回随机项。 

range()函数: 如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列.

eg:

a = range(10)
for i in a:
    print(i)

你也可以使用range指定区间的值:

for i in range(5,9) :
    print(i)
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
#正数
for i in range(0, 10, 3) :
    print(i)

#负数
for i in range(-10, -100, -30) :
    print(i)
View Code

您可以结合range()和len()函数以遍历一个序列的索引,如下所示:

a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)):
    print(i, a[i])

还可以使用range()函数来创建一个列表:

print(list(range(5)))

 

循环结构

Python中的循环语句有 for 和 while,另外Python中没有do..while循环。。

Python循环语句的控制结构图如下所示:

 

 

 Python中while语句的一般形式:

while 判断条件:
    语句

需要注意冒号和缩进。

以下实例使用了 while 来计算 1 到 100 的总和:

n = 100

sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1

print("1 到 %d 之和为: %d" % (n,sum))
View Code

无限循环

我们可以通过设置条件表达式永远不为 false 来实现无限循环:

var = 1
while var == 1 :  # 表达式永远为 true
   num = int(input("输入一个数字  :"))
   print ("你输入的数字是: ", num)

print ("Good bye!")
View Code
无限循环在服务器上接收客户端的实时请求非常有用。

while 循环使用 else 语句

在 while … else 在条件语句为 false 时执行 else 的语句块:

count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")
View Code

简单语句组

类似if语句的语法,如果你的while循环体中只有一条语句,你可以将该语句与while写在同一行中,
flag = 1
while (flag): print ('欢迎访问菜鸟教程!')

for 语句

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

for循环的一般格式如下:

for <variable> in <sequence>:
    <statements>
else:
    <statements>

Python loop循环实例:

languages = ["C", "C++", "Perl", "Python"] 
for x in languages:
     print (x)
 

以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体,并且for语句后面也可以用else语句:

sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    if site == "Runoob":
        print("菜鸟教程!")
        break
    print("循环数据 " + site)
else:
    print("没有循环数据!")
print("完成循环!")

注意:

Python中的for、while循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。

换句话说,如果我们不是以除正常方式以外的其他任意方式退出循环,那么else分支将被执行。也就是在循环体内没有break语句、没有return语句,或者没有异常出现时就会执行else语句。

考虑一个简单的(无用的)例子:

for i in range(5):
    print(i)
else:
    print('Iterated over everything :)')
View Code

上面的代码中,我们在range(5)上迭代并打印每个数字。因为我们让循环正常完成,所以else分支也被执行,并打印出Iterated over everything :) 。

相反,如果我们用break语句终止循环,那么else分支将不会执行:

for i in range(5):
    if i == 2:
        break
    print(i)
else:
    print('Iterated over everything :)')
View Code

注意,尽管循环所迭代的序列是空的,else分支依然会被执行,毕竟循环仍然是正常完成的。

for i in []:
    print(i)
else:
    print('Still iterated over everything (i.e. nothing)')
View Code

同样不要忘记,以上所有也适应于while…else:

i = 0
while i <= 5:
    i += 1
    print(i)
else:
    print('Yep')
View Code

else语句在循环中的一个常见使用案例是实现循环查找。假说你在查找一个满足特定条件的项目(item),同时需要进行附加处理,或者在未发现可接受的值时生成一个错误:

for x in data:
    if meets_condition(x):
        break
else:
    # raise error or do additional processing

没有else语句的话,你需要设置一个标志,然后在后面对其检测,以此确定是否存在满足条件的值。

condition_is_met = False
for x in data:
    if meets_condition(x):
        condition_is_met = True
 
if not condition_is_met:
    # raise error or do additional processing

for、while循环支持嵌套,如下所示,输出一个9*9的乘法表:

i = 1
j=1
while i <= 9:
    while j <= 9:
        print("%s*%s = %s  "%(i,j,i*j),end="")
        j+=1
    i += 1
    j = 1
    print()
While
i = 1
j=1
for i in  range(1,10):
    for j in range(1,10):
        print("%s*%s = %s  "%(i,j,i*j),end="")
    print()
for
i = 1
j=1
for i in  range(1,10):
    while j <=9:
        print("%s*%s = %s  "%(i,j,i*j),end="")
        j+=1
    j = 1
    print()
for and while

注意:外层循环控制行,内层循环控制列!

循环语句和分支语句之间可以相互嵌套:

if 1 < 2:
    for i in range(1,5):
        for j in range(1,6):
            if j != 4:
                print(j,end=" ")
                pass
        print(i)
分支嵌套循环
for i in range(1,5):
    for j in range(1,6):
        if j < 2:
            print(j,end=" ")
            pass
    print(i)
循环嵌套分支

使用内置 enumerate 函数进行遍历:

for index, item in enumerate(sequence):
    print(index, item)

注意:enumerate返回的是元组!

案列:

sequence = [12, 34, 34, 23, 45, 76, 89]
for i, j in enumerate(sequence):
   print(i, j)
break,continue,pass语句
break:跳出当前循环不再循环;
continue:跳出本次循环下次循环继续;
pass:空语句什么都不干,为了保证代码的完整性;pass语句可以用在任何地方,eg:if语句中。
案列:
for i in range(5):
    if i == 2:
        continue
    print(i)
continue
 1 for i in range(5):
 2     if i == 2:
 3        break
 4     print(i)
 5 
 6 for i in range(1,5):
 7     for j in range(1,6):
 8         if j == 4:
 9             print(j,end=" ")
10             break
11     print(i)
break
for i in range(1,5):
    for j in range(1,6):
        if j != 4:
            print(j,end=" ")
            pass
    print(i)
pass

 

转载于:https://www.cnblogs.com/python-machine/p/6823610.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值