Python从菜鸟到高手(8):print函数、赋值与代码块
1.神奇的print函数
print函数相信读者一定对它不陌生,因为在前面的章节,几乎每个例子都使用了print函数,这个函数的功能就是在控制台输出文本。不过print在输出文本时还可以进行一些设置,以及输出多参数字符串。
如果为print函数传入多个参数值,那么print函数会将所有的参数值首尾相接输出。
# 输出结果:a b c d e
print("a","b","c","d","e");
我们可以看到,上面的这行代码输出了a到e,共5个字母。在Python控制台中输出了“a b c d e”。很明显是将这5个字符首尾相接输出了。不过这些字母之间用空格分隔,这是print函数默认的分隔符,用于分隔输出的多个参数值,这个默认设置是非常有用的,例如,执行下面的代码,会在等号(=)后面加一个空格。
print("name =", "Bill")
print("age =", 30)
输出结果如下:
name = Bill
age = 30
其中等号(=)前面的空格是第1个参数值包含的。
print函数会为除了第1个参数值以外的其它参数值前面添加一个空格,这样做,在需要用空格分隔的场景下,就不需要在每一个参数值前面添加空格了。
不过这种默认设置有利有弊,在不需要用空格分隔时,print函数仍然会添加空格。例如,要输出字符串“Apple,Orange,Banana”。其中Apple、Orange和Banana之间用逗号(,)分隔,逗号(,)与英文单词之间没有空格。如果按前面的做法,会有如下的代码输出这行字符串。
print("Apple",",", "Orange",",","Banana")
输出的结果如下:
Apple , Orange , Banana
print("Apple",",", "Orange",",","Banana")
很明显,逗号(,)前后都有空格。当然,可以将逗号(,)与前面的英文单词合并,但逗号(,)与后面的英文单词之间仍然会有空格。
print("Apple",",", "Orange",",","Banana")
解决这个问题的方法很多,例如,可以用传统的字符串相加的方式输出字符串“Apple,Orange,Banana”。
print("Apple" + "," + "Orange" + "," + "Banana")
现在我们要用print函数特有的方法解决这个问题,就是修改默认的多参数值分隔符。在print函数最后添加“sep=","”,就可以将分隔符从空格改成逗号(,)。现在可以直接使用下面的代码输出字符串“Apple,Orange,Banana”。
print("Apple", "Orange","Banana", sep=",")
输出结果。
Apple,Orange,Banana
print函数输出字符串时,默认会在字符串结尾添加换行符(\n),这样每次调用print函数输出字符串,都会另起一行。不过有时我们希望调用多次print函数都在同一行输出,这时我们可以在print函数最后加上“end=" "”,让最后一个输出字符串结尾符变成空格,而不是原来的“\n”,当然,也可以将结尾符设成长度为0的字符串,这样多次使用print函数输出的结果就会首尾相接了,中间没有任何分隔符。
print("a",end="");
print("b",end="");
print("c");
输出结果:abc
下面的例子演示了print函数输出多参数值,修改默认多参数值分隔符,以及修改输出字符串结尾字符的方法。
# 输出用空格分隔的多参数值
print("name =", "Bill")
# 输出用空格分隔的多参数值
print("age =", 30)
# 使用加号(+)连接字符串
print("Apple" + "," + "Orange" + "," + "Banana")
# 修改多参数值分隔符为逗号(,),然后输出多参数值
print("Apple", "Orange","Banana", sep=",")
# 修改多参数值分隔符为“&”,然后输出多参数值
print("Can","you","tell","me", "how", "to", "get", "to","the","nearest", "tube", "station", sep="&")
# 修改输出字符串结尾符为空格,这样下一次调用print函数,就会中同一行输出内容了
# 运行结果:Hello world
print("Hello", end=" ")
print("world")
# 修改输出字符串结尾符为长度为0的字符串,这样下一次调用print函数,输出的内容不仅会在同一行,
# 而且会首尾相接,运行结果:abc
print("a",end="");
print("b",end="");
print("c");
程序运行结果如下图所示。
2.有趣的赋值操作
在很多读者看来,赋值操作是再简单不过了,我们在前面的章节也多次使用了赋值操作。不过Python语言中的赋值操作要有趣的多。例如,可以同时将多个值赋给多个变量。
>>> x,y,z = 1,2,3
>>> print(x,y,z)
1 2 3
在上面的代码中,将1,2,3分别赋给了x,y,z三个变量,并输出这3个变量的值。使用Python语言中的这个特性可以很容易实现两个变量中值的交换。
>>> x,y = 20,30
>>> x,y = y,x
>>> print(x,y)
30 20
这种同时将多个值赋给多个变量的操作,等号(=)右侧的值与左侧的变量个数必须相等,否则会抛出异常。
>>> x,y,z = 1,2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
>>> x,y = 1,2,3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
Python语言的这种特性称为序列解包(Sequence Unpacking),其实任何一个可迭代(Iterable)的对象都支持这一特性,关于迭代对象(列表、集合等)的详细信息会在后面的章节介绍。
Python语言还支持链式赋值(Chained Assignments)和增量赋值(Augmented Assignments),链式赋值是指将同一个值连续赋给多个变量。
x = y = 20
增量赋值是指将变量自身增加或减小(负增量)指定值的表达式的简化形式。例如,x = x + 2,如果用增量赋值表达式,可以写成x += 2,也就是将等号(=)右侧的x省略,并将加号(+)放到等号左侧。
其实前面介绍的二元运算符都支持增量赋值,例如,x = x * 20可以写成x *= 20,x = x % 3可以写成x %= 3。
下面的例子演示了序列解包、链式赋值和增量赋值的使用方法。
x,y,z = 1,2,3 # 使用序列解包方式进行赋值
print(x,y,z)
x,y = y,x # 利用序列解包交换x和y的值
print(x,y)
# x,y,z = 1,2 # 抛出异常
# x,y = 1,2,3 # 抛出异常
x = y = 20 # 使用链式赋值设置x和y
print(x,y)
x *= 2 # 增量赋值
x %= 3 # 增量赋值
print(x)
程序运行结果如下图所示。
3. 用缩进创建代码块
代码块并非一种语句,而是在学习条件和循环语句之前必须要掌握的知识。
代码块是在条件为真(true)时执行的一组语句,在代码前放置空格来缩进语句即可创建代码块。
注意:使用tab字符也可以缩进语句形成代码块。Python将一个tab字符解释为到下一个tab字符位置的移动,而一个tab字符为8个空格,不过Python标准推荐使用空格缩进的方式创建代码块,建议使用4个空格缩进的方式创建代码块。
代码块的每行语句应该缩进同样的量。下面的伪代码(并非真正的Python代码)展示了如何用缩进的方式创建代码块。
This is a code line
This is another code line:
This is a block
continuing the same block
the last line of this block
We escaped the inner block
很多编程语言使用特殊单词或字符来表示一个代码块的开始,用另外的单词或字符表示代码块的结束,例如,Pascal语言使用begin表示代码块的开始,使用end表示代码块的结束,而C风格的编程语言(如Java、C#、C++等)使用一对大括号表示代码块的开始和结束。Python语言和这些语言都不一样,Python语言使用冒号(:)表示代码块的开始,代码块中的每一条语句都是缩进的(缩进量相同)。当回退到与快的开始语句同样的缩进量时,就表示当前块已经结束。很多集成开发环境(IDE)会帮助用户轻松把握缩进,因此读者不必担心缩进量不对导致Python程序无法编译通过。
我们现在已经了解了如何使用Python语言中的缩进块,在下面几节就详细介绍各种缩进块的应用。
Python从菜鸟到高手(8):print函数、赋值与代码块的更多相关文章
- Python从菜鸟到高手(6):获取用户输入、函数与注释
1. 获取用户输入 要编写一个有实际价值的程序,就需要与用户交互.当然,与用户交互有很多方法,例如,GUI(图形用户接口)就是一种非常好的与用户交互的方式,不过我们先不讨论GUI的交互方式,本节会 ...
- Python从菜鸟到高手(1):数字
本文主要内容: 1. 数字的基础知识 2. 大整数 3. 二进制.八进制和十六进制 4 数字的格式化输出 一.数字的基础知识 Python语言与其他编程语言一样,也支持四则运算(加.减.乘.除),以及 ...
- 《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程
好消息,<Python从菜鸟到高手>已经出版!!! JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送2400分钟同步视频课程!500个案例,400道P ...
- Python从菜鸟到高手(5):数字
1 基础知识 Python语言与其他编程语言一样,也支持四则运算(加.减.乘.除),以及圆括号运算符.在Python语言中,数字分为整数和浮点数.整数就是无小数部分的数,浮点数就是有小数部分的数. ...
- Python从菜鸟到高手(3):声明变量
变量(variable)是Python语言中一个非常重要的概念.变量的主要作用就是为Python程序中的某个值起一个名字.类似于"张三"."李四"." ...
- Python从菜鸟到高手(2):清空Python控制台
执行python命令会进入Python控制台.在Python控制台中可以用交互的方式执行Python语句.也就是执行一行Python语句,会立刻返回执行结果. 当Python控制台输入过多的Pyt ...
- Python从菜鸟到高手(1):初识Python
1 Python简介 1.1 什么是Python Python是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版 ...
- Python基础 | 字符串格式化输出及print()函数介绍
在写代码时,我们会经常与字符串打交道,Python中控制字符串格式通常有三种形式,分别是使用str%,str.format(),f-str,用法都差不多,但又有一些细微之差. 一起来看看吧~~~ 一. ...
- Python从菜鸟到高手(18):类与方法的私有化
1. 创建自己的类 学习面向对象的第一步,就是创建一个类.因为类是面向对象的基石.Python类和其他编程语言(Java.C#等)的类差不多,也需要使用class关键字.下面通过一个实际的例子来看一下 ...
随机推荐
- 微信小程序中如何获取for循环的item相关值到JS页面的问题
今天小程序开发过程中,遇到了这个棘手的问题.由于我没有前端基础,只是知道一点儿基本的HTML标签,所以卡了好久,特此分享,望后来的你,可以有所收获. measure step 1 *.WXML: ...
- leetcode-14最长公共前缀
leetcode-14最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower& ...
- git 入门教程之本地仓库
本地仓库 背景 创建工作目录 平时工作时我们习惯对文档分门别类进行管理,.doc .txt 等文本类型的文件习惯存在 doc文件下,开发java js 等源代码文件存在在 src 目录下,这一点很好理 ...
- jsfiddle 使用教程
最近有许多的Css 3 demo,因此为了方便查阅,就将demo部分放在jsfiddle ,方便日后翻阅. 这是 JSFIDDLE 的官网文档,都是英文,不过对照看还是可以的:官方文档 HTML区域: ...
- Electron开发笔记—electron-builder打包流程
该文章说明基于win平台下,mac及linux没有实验 关于electron-builder打包可以有两种方案: 1. 打包成文件夹及绿色免安装: electron-builder --dir(依赖w ...
- C#-运算符(四)
算术运算符 +:两个操作数相加,例:2+3得5 -:第一个操作数减去第二个操作数 例:5-3得2 *:两个操作数相乘,例:2*3得6 /:分子除以分母,例:5/2得2 %:取模运算符,整除后的余数,例 ...
- 洗礼灵魂,修炼python(89)-- 知识拾遗篇 —— 进程
进程 1.含义:计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位.说白了就是一个程序的执行实例. 执行一个程序就是一个进程,比如你打开浏览器看到我的博客,浏览器本身是一 ...
- 如何使用Web3在浏览器中与智能合约进行交互
2018-4-20 技术文章 Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互.实际上就是一个库的集合,主要包括下 ...
- Redis高可用 Sentinel
官网: https://redis.io/topics/sentinel Redis的主从只能实现数据热备份的功能,主宕机后从无法自动接管服务,因此Redis推出了Sentinel的主从监控模式. S ...
- vue过渡动画
概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.c ...