python3.7从零开始学 第6章(条件,循环和其他语句)

6.5.6.2 import的使用

6.2.1import语句

    import标准语法:

        import module1[,module2[,...moduleN]]

表示允许一个import导入多个模块,但各个模块需要用逗号隔开。

6.2.2使用逗号输出

原来:

student='小智'
print('学生称呼:',student)

结果:
学生称呼: 小智

还可以这样:

greeting='大家好!'
intriduce='我叫小智,'
comefrom='我来自智慧城市。'
print(greeting,intriduce,comefrom)

结果:
大家好! 我叫小智, 我来自智慧城市。

所以,不使用格式化的方式可以同时输出文本和变量值。

6.3别样的赋值

6.3.1序列解包(交换要做的事情叫做序列解包)

1.可以多个赋值操作同时进行。

x,y,z=1,2,3
print(x,y,z)

结果:
1 2 3

2.后面再遇到对多个变量赋值时,就不需要对一个变量赋完值再对另一个变量赋值了,用一条语句就能搞定。

x,y,z=1,2,3
x,y=y,x
print(x,y,z)

结果:
2 1 3

3.序列解包就是交换要做的事情,即将多个值的序列解开,然后放到变量序列中。

例子1:序列解包后,变量获得了对应的值。

nums=1,2,3
print(nums)
x,y,z=nums
print(x)
print(x,y,z)

结果;
(1, 2, 3)
1
1 2 3

例子2:

student={'name':'小萌','number':'1001'}
key,value=student.popitem()
print(key)
print(value)

结果:
number
1001

此处作用于元组,使用popitem方法将键值作为元组返回,返回的元组可以直接赋值到两个变量中。但注意,解包序列中的元素变量必须和放置在赋值符号”=“左边的数量完全一致,否则引发异常。

例子:


x,y,z=1,2
print(x,y,z)

结果:
Traceback (most recent call last):
  File "D:/pycharm/1.2.py", line 70, in <module>
    x,y,z=1,2
ValueError: not enough values to unpack (expected 3, got 2)

6.3.2链式赋值(更简洁)

例子:  通过多个等式为多个变量赋同一个值。

x=y=z=10
print(x)
print(y)

结果:
10
10

6.3.3  增量赋值

例子;(数值类型适用)

x=5
x+=1
print(x)

y=7
y-=2
print(y)

z=2
z*=2
print(z)

a=8
a/=4
print(a)

结果:
6
5
4
2.0

例子2:(增量赋值操作也可以用于字符串)

field='hello,'
field+='world!'
print(field)
field*=2
print(field)

结果:
hello,world!
hello,world!hello,world!

6.4语句块(是一组满足一定条件时执行一次或多次的语句。 

  创建方式:在代码前放置空格缩进。要保持同样的缩进。

    冒号:用来标识语句块的开始。

6.5条件语句

6.5.1布尔变量的作用

例如第二章false,true是布尔变量,布尔变量一般对应布尔值(也称作真值)

6.5.2  if语句

真值可以联合使用。

greeting='hello'
if greeting == 'hello':
    print('hello')

结果:
hello
#! /user/bin/python3
#-*- coding:utf-8 -*-

greeting='hello'
if greeting == 'hello':
    student={'小萌':'1001','小智':'1002','小强':'1005','小张':'1006'}
    print(f'字典元素个数为:{len(student)}')
    student.clear()
    print(f'字典删除后元素个数为:{len(student)}')


字典元素个数为:4
字典删除后元素个数为:0

6.5.3else语句

 else子句后没有条件判定。

#! /user/bin/python3
#-*- coding:utf-8 -*-
greeting='hi'
if greeting == 'hello':
    print('hello')
else:
    print('该语句块不在if中,greeting的值不是hello')

结果;
该语句块不在if中,greeting的值不是hello

6.5.4  elif子句

   elif是else if的简写,意思为具有条件的else子句。

如果除了if条件外,还有多个子条件需要判定,就用elif。

#! /user/bin/python3
#-*- coding:utf-8 -*-
num = 10
if num>10:
    print('num的值大于10')
elif 0<=num<=10:
    print('num的值介于0和10之间')
else:
    print('num的值小于0')


num的值介于0和10之间

注:elif 需要和if,else子句联合使用,不能独立使用,并且必须以if子句开头,可以选择是否以else子句结尾。

6.5.5 嵌套代码块

(更复杂的if else语句,嵌套语句)

#! /user/bin/python3
#-*- coding:utf-8 -*-
num = 10
if num%2==0:
    if num%3==0:
        print("你输入的数字可以整除2和3")
    elif num%4==0:
        print("你输入的数字可以整除4和2")
    else:
        print("你输入的数字可以整除2,但不能整除3和4")
else:
    if num%3==0:
        print("你输入的数字可以整除3,但不能整除2")
    else:
        print("你输入的数字既不能整除2,也不能整除3")



你输入的数字可以整除2,但不能整除3和4

6.5.6  更多操作

1.is:同一性运算符

先看例子:

x=y=[1,2,3]
z=[1,2,3]
print(x==y)
print(x==z)
print(x is y)
print(x is z)

结果:
True
True
True
False

    为什么x和z相等却不相同呢?

这是因为is运算符用于判定同一性而不是相等性。x和z的值相等,但是却不是同一对象。

或者也可以从内存角度,他们所指向的内存空间不一样,x和y是指向同一空间,y指向另一块空间。

例子2;

x=[1,2,3]
y=[1,5]
print(x is not y)
del x[2]
print(x)
y[1]=2
print(y)
print(x==y)
print(x is y)


True
[1, 2]
[1, 2]
True
False

综上:==用来判断两个值是否相等,is用来判断两个对象是否等同,是否指向同一空间。

不过还是尽量避免使用is比较数值和运算符这类不可变值。

2.比较字符串和序列

①其他序列比较的是元素的其他类型,而不是字符。

print([1,2]<[1,2])

false




print([1,2]<[2,1])


true

也可以对嵌套列表进行比较操作:

print([2,[1,2]]<[2,[1,3]])

结果:
True

3.布尔运算符(逻辑运算符)

   and运算符可用于连接两个布尔值,并在两者都为真时返回真,否则返回假。与and同类的还有or和not两个运算符。

6.5.7  断言

   assert断言:①用来声明某个条件是真的

                       ②assert语句失败时,会引发一个assertionerror。

6.6  循环

6.6.1  while循环

语法:  while  判断条件:

                       执行语句······

            注:执行语句可以是单个语句,或者语句块;判断条件可以是任何表达式,所有非零,非空的值都为真,当判断条件为假时,循环结束。

6.6.2  for循环

   先看例子:使用while:

#! /user/bin/python3
#-*- coding:utf-8 -*-
n=0
fields=['a','b','c']
while n<len(fields):
    print(f'当前字母是:{fields[n]}')
    n+=1

结果:
当前字母是:a
当前字母是:b
当前字母是:c

使用for循环:

#! /user/bin/python3
#-*- coding:utf-8 -*-
fields=['a','b','c']
for f in fields:
    print(f'当前字母是:{f}')

结果:
当前字母是:a
当前字母是:b
当前字母是:c

语法:

   for  需要遍历的元素  in  需要遍历的序列:

       待执行语句块

#! /user/bin/python3
#-*- coding:utf-8 -*-
print('-------for循环字符串-------')
for letter in 'good':
    print(f'当前字母:{letter}')

结果:
-------for循环字符串-------
当前字母:g
当前字母:o
当前字母:o
当前字母:d


#! /user/bin/python3
#-*- coding:utf-8 -*-
print('-------for循环数字序列-------')
number=[1,2,3]
for num in number:
    print(f'当前字母:{num}')

结果:
-------for循环数字序列-------
当前字母:1
当前字母:2
当前字母:3


#! /user/bin/python3
#-*- coding:utf-8 -*-
print('-------for循环字典-------')
tups={'name':'小智','number':'1001'}
for tup in tups:
    print(f'{tup}:{tups[tup]}')

结果:
-------for循环字典-------
name:小智
number:1001

注:能用for尽量用for,for比while好用。

6.6.3   循环遍历字典元素

#! /user/bin/python3
#-*- coding:utf-8 -*-
print('-------for循环字典-------')
tups={'name':'小智','number':'1001'}
for tup in tups:
    print(f'{tup}:{tups[tup]}')

这样看起来有点麻烦,怎样更简单呢?

序列解包!

在循环中使用序列解包!

tups={'name':'小智','number':'1001'}
for key,value in tups.items() :
 print(f'{key}:{value}')

结果:
name:小智
number:1001

使用items方法将键-值对作为元组返回。

6.6.4  迭代工具

1.并行迭代 (同时迭代两个序列。)

#! /user/bin/python3
#-*- coding:utf-8 -*-
student=['xiaoming','xiaozhi','xiaoqi']
number=[1001,1002,1003]
for i in range(len(student)):
    print(f'{student[i]}的学号是:{number[i]}')

结果:
xiaoming的学号是:1001
xiaozhi的学号是:1002
xiaoqi的学号是:1003

注:i 是循环索引的标准变量名。

  在python中,内建的函数zip函数用来进行并行迭代,可以把两个序列合并在一起,返回一个元组的列表,例如:

student=['xiaoming','xiaohua','xiaoqi']
number=[1003,1004,1005]
for name,num in zip(student,number):
    print(f'{name}的学号是:{num}')


结果:
xiaoming的学号是:1003
xiaohua的学号是:1004
xiaoqi的学号是:1005

zip函数可以作用于任意数量的序列,并且可以应付不等长的序列,当短序列”用完“就停止。

a=[1,2,3,4,5,6,7]
b=[1,2,3,4]
for a,b in zip(a,b):
    print(f'zip的键值对为:{a} {b}')

结果;
zip的键值对为:1 1
zip的键值对为:2 2
zip的键值对为:3 3
zip的键值对为:4 4


for num1,num2 in zip(range(3),range(100)):
    print(f'zip的键值对为:{num1} {num2}')

jieguo:
zip的键值对为:0 0
zip的键值对为:1 1
zip的键值对为:2 2

6.6.5  跳出循环

   1.break

    终止循环语句,用在while和for循环中。

当遇到break语句时,无论执行什么条件,都跳出这个循环。

for letter in 'hello':
    if letter =='l':
        break
    print(f'当前字母为:{letter}')

结果:
当前字母为:h
当前字母为:e


num=10
while num > 0:
    print(f'输出数字为:{num}')
    num -= 1
    if num == 8:
        break

结果:
输出数字为:10
输出数字为:9

2.continue 语句

   跳过该轮循环的剩余语句,然后进行下一轮循环。

也用在while和for中。

for letter in 'hello':
    if letter == 'l':
        continue
    print(f'当前字母为:{letter}')

结果:
当前字母为:h
当前字母为:e
当前字母为:o


num = 10
while num > 6:
    num -= 1
    if num == 6:
        continue
    print(f'当前变量值为:{num}')

结果:
当前变量值为:9
当前变量值为:8
当前变量值为:7

6.6.6  循环中的else子句

    1.在while循环中使用else语句

在while条件语句为false,执行else语句块。

num=0
while num < 3:
    print(f'{num}小于3')
    num+=1
else:
    print(f'{num}等于或者大于3')
print('结束循环')

结果:
0小于3
1小于3
2小于3
3等于或者大于3
结束循环

2.在for循环中使用else语句

在for条件语句为false或结束后没有被break中断时,执行else语句块,

names=['xiaoqi','xiaotian']
for name in names:
    if name == "xiao":
        print(f'名称:{name}')
        break
    print(f'循环名称列表 {name}')

else:
    print('没有循环数据!')
print('JIESHUXUNHUAN')

结果:
循环名称列表 xiaoqi
循环名称列表 xiaotian
没有循环数据!
JIESHUXUNHUAN

6.7  pass语句

     python中的pass语句是空语句,作用是保持程序结构的完整性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值