第五章:条件、循环以及其他语句(上)

第五章 条件、循环以及其他语句

5.1 再谈print和import

随着我们对于Python的认知越来越多,很多我们以前不清楚的东西慢慢都需要了解,下面在谈谈print和import等我们所不知道的一些地方。原来的print在python2.7中是一个语句,但python3.5中,print由一个语句,转变成一个函数,注意,这个转变很重要。可能比以前有用很多,而且还可能简洁很多。



提示    在这里,我们谈及了使用模板logging去写入日志比用print有用,但具体什么用,大家有个大致了解,以后在学习中遇到去处理即可。


5.1.1  打印多个参数

print可用于打印一个表达式,记住有两种情况的存在,如果你在里面输入的是字符串,就直接打印出来字符串,第二种情况就是把你输入的非字符串直接转换成字符串进行打印。而且,你需要注意的地方是,你可以打印多个表达式,条件是用逗号进行分隔它们:

print(‘age:‘,42)

看看出来的结果,就能发现,在参数之间插入了一个空格字符。

age: 42

在此,作者提出我们需要合并文本和变量值的时候,而又不想使用字符串格式设置功能的时候,这很有帮助。对于这点我的理解就是作者已经脱离了原本的print概念,而是提出了关于合并文本和变量值的一种做法,就是中间加入一个空格,但具体用在什么地方,我觉得还有待进一步的了解。

在下面作者又提出了一些有用的技巧,我现在为大家一一的介绍:

首先,我来介绍第一种的技巧:

name=‘Gumby‘
salutation=‘Mr.‘
greeting=‘Hello,‘
print(greeting,salutation,name)

从而,会得到这样的结果:

Hello, Mr. Gumby

作者在这里就进行了思考,如果变量greeting不包含逗号,那么如何处理,具体如下:

print(greeting+‘,‘,salutation,name)

这样的结果就能变成鱼上述答案一直的结果。

其次,就是第二种情况,如果我需要在每个我输入的表达式之间自己去添加分隔符,注意前面我们看看作者在上面的时候是干什么,是直接默认为空格,而现在我们有办法通过自己的需求进行设置:

print(‘I‘,‘wish‘,‘to‘,‘register‘,‘a‘,‘complaint‘,sep=‘_‘)

从而,得到答案即为:

I_wish_to_register_a_complaint

5.1.2   导入时重命名

从 模板导入,通常有四种情况,通常使用:

import somemodule

或使用

from somemodule import somefunctuon

import  somemodule import somefunction,anotherfunction,yetanotherfunction

from somemodule import *

导入模板里面所有的东西的时候,用的是最后一个方式。如果你需要使用两个模板,而且他们都包含例如函数open之类的同名函数,这个时候肯定会出问题,那么此处你应该使用第一种方式去处理,当然你在具体使用的时候也需要注意要用的方法与方法:

module1.open(...)

module2.open(...)

作者在这里也提出了一些其他的方法:在语句末尾添加as子句并指定别名。下面是一个导入整个模块并给它指定别名的例子:

import math as  foobar
print(foobar.sqrt(4))

从而,得到答案就是:

2.0

而让偶感觉舒服的一点就是,作者在函数部分的处理,也能像刚刚上面的例子一样,命名别名,然后,导入:

from module1 import open as open1

from module2 import open as open2

5.2 赋值魔法

这里面也有很多我们需要去处理的细节。

5.2.1序列解包

赋值语句常常是给变量和数据结构的一部分(如列表的元素和切片,或者字典项)赋值,还有其他的赋值,例如,可同时给多个变量赋值,这个是以前没有的。当然,也可利用这种方式进行交换多个变量的值,这个部分总感觉容易用错,尽量不要用:

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

从而,我们来看看它的输出结果:

1 2 3
2 1 3

这里面其实就是在运用数据结构和算法设计的一些数据结构,文章中把这种操作称为序列解包(或可迭代对象解包):将一个序列(或其他可迭代对象)解包,并将得到的值存储到一系列变量中。(意思就是可迭代对象(不清楚就去查看数据结构或者算法设计)或者序列分配给变量,说白了,就是一个个读取,然后分配给变量)下面作者还举了一个具体的例子:

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

这里可以看出来得到的解包最后给了x,y,z三个变量,并最后输出了x,这个就是典型的序列解包,当然,你需要注意的一点就是,变量的数量要和你解包的数值一一对应,否则内容就会报错。而且,注意到这里的代码的第一行,直接给一个变量赋了三个值,结果就变成了一个元组;当然作者在这里提出来的在使用元组(或其他序列或可迭代对象)的函数或方法的时候很有用,具体怎么用,还是有待进一步的考究的。本文在后面也提出了在字典的一种情况,就是字典随机获取(或删除)一个键-值对,可使用方法popitem,它随机获取一个键-值对然后删除并且会以元组的方式进行返回。所以能进行上述的操作,但不能用pop这个方法,因为,不指定的时候删除最后一个,指定的时候删除对应的位置。但不会返回任何东西。

scoundre1={‘name‘:‘Robin‘,‘girlfriend‘:‘Marion‘}
key,values=scoundre1.popitem()
print(key,values)

         对应的结果如下:

girlfriend Marion

这里作者也提醒了我们,要解包的序列包含的元素个数必须与你等号左边列出的目标个数相同,否则Python将引发异常。举个例子:

x,y,z=1,2
x,y,z=1,2,3,4

两种情况报错的内容大致都是一致的:

    x,y,z=1,2
ValueError: not enough values to unpack (expected 3, got 2)
    x,y,z=1,2,3,4
ValueError: too many values to unpack (expected 3)

注意,为了弥补上述的不足,这里提出了一个很有用的解决方法,就是使用星号运算符(*) 来搜集多余的值,这样无需保证值得数量和变量的数量是一样多的,下面具体举个例子可以看出:

a,b, *rest=[1,2,3,4]
print(a,b,rest)

从而,我们就得到这样的答案:

1 2 [3, 4]

当然,带*的位置我们也能做出适当的调整,系统也会做出调整,如下一个示例:

name=‘Albus Percival Wulfric Brian Dumbledore‘
first,*middle,last=name.split()
print(first,middle,last)

从而得到合适的答案:

Albus [‘Percival‘, ‘Wulfric‘, ‘Brian‘] Dumbledore

赋值语句的右侧可以是任何类型的序列,但带星号的变量最终包含的总是一个列表。在变量和值相等的情况下不会改变这种情况:

name=‘Albus Percival Wulfric ‘
first,*middle,last=name.split()
print(first,middle,last) 

当然,结果与上述是一致的:

Albus [‘Percival‘] Wulfric

5.2.2  链式赋值

链式赋值是一种快捷方式,用于将多个变量关联到同一个值,但只涉及到一个值,这很重要。

x=y=somefunction()

与上述代码一致的代码:

y=somefunction()

x=y

但与下面不等价:

x=somefunction()

y=somefunction()

5.2.3 增强赋值

其实在C/C++里面也很常见,x=x+1改变为x+=1,这个语句很常见,就叫做增强赋值。适用于所有的标准运算符,如*、/、%等。

增强赋值也可适用于其他数据类型(只要在双目运算符可以做到的这里都能做到,什么是双目,比如++等)

fnord=‘foo‘
fnord+=‘bar‘
print(fnord)
fnord*=2
print(fnord)

从而,有下面的结果:

foobar
foobarfoobar

5.3  代码块:缩进的乐趣

代码块不是语句,但你要理解这个内容,下面的东西才能讲下去:

代码块是一组语句的组合,可满足条件时执行(if)的语句、可执行多次的(循环语句),等等。代码块通过缩进(也就是加空格)来创建。说白了,C/C++等语言原来都是有括号{ }来保证其里面的内容,现在只是没有了{ },取而代之的缩进而已,记住每级缩进4个空格就可以了。具体,后面看看你就知道怎么用,在这不在赘述。

原文地址:https://www.cnblogs.com/liuxinkai94/p/10127375.html

时间: 2024-11-05 18:53:46

第五章:条件、循环以及其他语句(上)的相关文章

Python基础教程之第5章 条件, 循环和其它语句

Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32 #Chapter 5 条件, 循环和其它语句 #5.1 print和import的很多其它信息 #对于非常多应用程序来说, 使用logging模块记日志比print语句更合适 #5.1.1 使用逗号输出 #能够看到, 每隔參数之间都自己主动插入了一个空格符 >>> print 'Age:',42 Age: 42 >&g

python基础教程第5章——条件循环和其他语句

1.语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句.在代码前放置空格来缩进语句即可穿件语句块.块中的每行都应该缩进同样的量.在Phyton中冒号(:)用来标识语句块的开始,块中的每个语句都是缩进的(缩进量相同).当会退到和已经闭合的快一样的缩进量时,就表示当前块已经结束了. 2.布尔值:False None 0 "" () [] {}也就是说标准值False和None.所有类型的数字0(包括浮点型 长整型 和其他类型)空序列(比如空字符串.元组.列表)以及的空字

ORACLE PL/SQL 实例精解之第五章 条件控制:CASE语句

5.1 CASE语句 1. CASE语句具有如下结构 CASE SELECTOR WHEN EXPRESSION 1 THEN STATEMENT 1; WHEN EXPRESSSION 2 THEN STATEMENT 2; ........ WHEN EXPRESSION N THEN STATEMENT N; ELSE STATEMENT N+1; END CASE; 保留字CASE标识CASE语句的开始.选择器决定哪个WHEN子句应该被执行.每个WHEN子句都包含一个EXPRESSION

Python基础教程(第五章 条件、循环和其他语句)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5329066.html______ Created on Xu Hoo 读者学到这里估计都有点不耐烦了.好吧,这些数据结构什么的看起来都挺好,但还是没法用它们做什么事,对吧? 下面开始,进度会慢慢加快.前面已经介绍过了几种基本语句(print语句.import语句.赋值语句).在深入介绍条件语句和循环语句之前,我们先来看看这几种基

读书笔记--《Python基础教程第二版》-- 第五章 条件、循环和其他语句

5.1 print和import的更多信息 5.1.1 使用独号输出 >>> print 'Age:',42 Age: 42 >>> 1,2,3 (1, 2, 3) >>> print 1,2,3 1 2 3 >>> print (1,2,3) (1, 2, 3) >>> name='Gumby' >>> greeting='Hello' >>> salutation='Mr.'

python之条件-循环和其他语句

5.1.1 使用逗号输出 如何使用print来打印表达式----不管是字符串还是其他类型进行自动转换后的字符串. >>> print 'age:' , 42 age: 42 >>> >>> print 1,2,3 1 2 3 >>> 1,2,3 (1, 2, 3) >>> print (1,2,3) (1, 2, 3) >>> 如果想要同时输出文本和变量值,却不希望使用字符串格式化的话,那这个特性就

条件循环和其他语句

# coding:utf-8 #----------------------------------------  print和import的更多信息  -------------------------------- #使用逗号输出 #打印多个表达式也是可行的,只要将它们用逗号隔开就好: print 'Age:' , 42           #可以看到,每个参数之间都插入了一个空格符. #Age: 42 #如果想要同时输出文本和变量值,却不希望使用字符串格式化方法,那这个特性就非常有用: n

第五章: 条件和循环语句

1. print 'Age,',42 存在的逗号,会转化成空格! 2. import 导入模块:  from 模块 import 函数: import math as foobar  给包取别名: 3. 序列解包: A 可以多值赋值,x, y, z = 1, 2, 3; B 对键值对也有效,key, value = xxx.popitem(); 4. Python 当中,以冒号代表语法块的开始,块中缩进相同量的代码代表语法块: 5. 条件假, False, None, 0, "", (

第五章 条件语句

一.if 没啥说的,条件可以是任意表达式,表达式的值不一定是布尔值,javaScript会自动调用Boolean()进行转换. 二.do{}while().while(){}.for(){} 也没啥说的,只不过因为javaScript没有快级作用域,所以{}里定义的变量{}外边也可以访问到. 三.for-in语句,枚举对象的属性,但是结果的顺序是不可测的. for (property in expression) statement for in语句会把expression的属性名字挨个赋值给p

ORACLE PL/SQL 实例精解之第四章 条件控制:if 语句

4.1 IF 语句 IF语句两种形式:IF-THEN IF-THEN-ELSE 使用IF-THEN,可以指定需要执行的一组动作. IF-THEN-ELSE语句指定两组动作 1. IF-THEN TRUE执行语句序列 结构: IF CONDITION THEN STATEMENT 1; ....... STATEMENT N; END IF; 2. IF - THEN- ELSE语句 IF-THEN指定当前条件计算为true时,需要执行语句序列.当条件计算为false时,不采取任何特别活动,仅仅是