输入与输出
input() 输入
直接上栗子:
what = input("请输入:");
print ("你输入的内容是: ", what)
input()
是 Python 的内建函数,括号内存放的参数用作提示信息。执行该语句后,Python 会等待用户输入数据,当从键盘获取数据后,将其返回给 what 变量。与 Python 2.7 不同的是,Python 3.x 没有 raw_input()
函数,只有 input() 函数,因此会把用户输入的任何值都当作字符串来对待。
print() 输出
print() 函数同样是内建函数,与 Python 2.7 不同的是,Python 3.x 的 print() 函数一定要加上括号。
print() 函数默认是输出换行的,如果不需要换行,需要指定 end 参数,比如:
print("Hello, World!", end="")
print() 函数支持字符串运算,比如打印 10 个等号,可以这样:
print("="*10)
print() 函数也可以接收多个参数,此时需要用逗号隔开,比如:
num = 1
print("我要买:", num, "盒", "牛奶")
格式化输出
Python 中支持两种格式化输出语法。
一种是类似于 C 语言 printf() 的方式,称为 Formatting Expression。基本是前文格式控制,%(,,)
中分别表示输出内容。
如果只有一个需要格式化输出的变量,则该变量紧跟在百分号 %
(percent)后面即可;如果有多个需要格式化输出的变量,那么需要将变量放到圆括号 ()
(parenthesis)中,并且变量之间用逗号 ,
(comma)隔开。
格式化指示符包括:
‘
b
’ 二进制。将数字以2为基数进行输出。
‘c
’ 字符。在打印之前将整数转换成对应的Unicode字符串。
‘d
’ 十进制整数。将数字以10为基数进行输出。
‘o
’ 八进制。将数字以8为基数进行输出。
‘x
’ 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
‘e
’ 幂符号。用科学计数法打印数字。用’e’表示幂。
‘g
’ 一般格式。将数值以 fixed-point 格式输出。当数值特别大的时候,用幂形式打印。
‘n
’ 数字。当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。
‘%
’ 百分数。将数值乘以100然后以 fixed-point(‘f’) 格式打印,值后面会有一个百分号。
另一种是类似于 C# 的方式,称为 String Formatting Method Calls。基本是前文格式控制,.format(,,)
中分别表示输出内容。数字 (0, 1, ...)
即代表 format() 里面的元素,所以可以使用 .
调用元素的方法。
字符串的参数使用 {NUM}
进行表示占位,{0}
表示第一个参数,{1}
表示第二个参数,以后顺次递加。使用 :
指定代表元素需要的操作,如 {0:.3f}
表示保留小数点后三位,{0:<8}
表示占8个字符空间并且左对齐等。
可以指定所需长度的字符串的对齐方式:
<
(默认)左对齐
>
右对齐
^
中间对齐
=
(只用于数字)在小数点后进行补齐
对比两种格式化输出的方式,我们可以认为 format() 函数通过 {}
和 :
来代替前者的 %
。
注释(comment)
Python 中的注释有单行注释和多行注释:
- Python 中单行注释采用
#
开头 - Python 中多行注释使用三个单引号(
'''
)或三个双引号("""
)
但是如果你在类 Unix 系统中看到 Python 文件中有这一行:
#!/usr/bin/python
它就不是注释了,而是指定脚本解释器的路径。
行与缩进
在 C、Java、Object-C、PHP 等语言中,每一条语句最后都要加个分号(semicolon)表示语句结束。但是在 Python 中,分号是可选的,也就是说分号可加也可不加。
通常,Python 代码都是不加分号的,因为语句后面的换行符足以表示语句结束。但是,如果你想在一行写多个语句,就必须加上分号,比如:
num1 = 1; num2 = 2
print(num1+num2)
Python 最具特色的就是使用缩进(indent)来表示代码块,不需要使用大括号({}
)和 Shell 中恶心的 if...fi
、do...done
、case...esac
等等。如果你是从其他语言转过来的,可能跟我一样觉得缩进很别扭,但是没办法,多看几眼吧!慢慢就顺眼了。
注意:缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
变量与数据类型
Python 中的变量不需要声明,但是变量使用前必须赋值(即便是空值),变量赋值以后该变量才会被创建。变量的赋值使用等号(=),等号运算符左边是一个变量名,右边是存储在变量中的值。
实际上,在 Python 中,变量就是变量,它没有类型,我们平常说的“类型”指的是变量所指向的内存中对象的类型。
Python 3.x 中有六种标准的数据类型。
数据类型 | 描述 | 示例 | 说明 |
---|---|---|---|
Number | 数字,包括: int、bool、float 和 complex(复数) |
||
String | 字符串,可以用单引号或双引号来表示 | str = ” | 也可以使用 str() 函数创建 |
List | 列表 [] | li = [0, 1, 2] | 也可以使用 list() 函数创建 |
Tuple | 元组 () | tu = (0, 1, 2) | 也可以使用 tuple() 函数创建 |
Sets | 集合 {} | se = {0, 1, 2} | 也可以使用 set() 函数创建, 创建空集合只能使用 set(), 因为 {} 会被认为是字典 |
Dictionary | 字典 {} | di = {‘x’:0, ‘y’:1, ‘z’:2} | 也可以使用 dict() 函数创建 |
字典(dictionary)是除列表以外 Python 中最灵活的内置数据结构类型。字典用”{}
“标识。字典由索引(key)和它对应的值(value)组成。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
Python 是强类型的动态脚本语言。不需要声明变量,变量赋值或创建后可以直接使用,但是数据类型不会隐式转换,仍然需要强制(显式)转换。
我们可以使用 type( )
函数查看变量类型。
Python 中的布尔值
下面情况转化为布尔值时会认为 False:
- 整型:0
- 浮点型:0.0
- 复数:0+0j
- 布尔:False
- 字符串:’’ 或 ”” 空字符串
- 列表:[ ] 空列表
- 元组:( ) 空元组
- 字典:{ } 空字典
- 集合:set() 空集合
运算符
(1)算术运算符
(2)比较(关系)运算符
(3)赋值运算符
注意:Python 不支持 ++
、--
这种自增、自减运算符
(4)逻辑运算符
注意:Python 没有 &&
、||
、!
,取而代之的是 and
、or
、not
(5)位运算符
提示:内建函数 bin()
可以得到二进制编码值
(6)成员运算符
(7)身份运算符
提示:内建函数 id()
可以获取对象内存地址
运算符优先级
流程控制
这里的“流程”指的是计算机执行代码的顺序,更具体来讲,就是指 Python 解释器执行 Python 代码的的顺序。
在计算机中,我们通常将流程控制分为三类:
- 顺序结构
- 分支结构/选择结构
- 循环结构
分支结构
Python 程序的分支结构有以下几种形式:
【单向分支结构】
if <条件表达式>:
执行语句
...
【双向分支结构】
if <条件表达式>:
执行语句
...
else:
执行语句
...
【多分支结构】
if <条件表达式>:
执行语句
...
elif <条件表达式>:
执行语句
...
else:
执行语句
...
【嵌套分支结构】
if <条件表达式>:
if <条件表达式>:
执行语句
...
else:
执行语句
...
else:
if <条件表达式>:
执行语句
...
else:
执行语句
...
循环结构
while 循环
while <条件表达式>:
循环的内容
[变量的变化]
...
while 循环语句也可以搭配 else 语句,else 中的代码在 while 条件为假的情况下执行,一般用于当条件不满足后所要执行的操作。
while <条件表达式>:
循环的内容
[变量的变化]
...
else:
当 <条件表达式> 为假时执行的语句
另外,我们还经常会用到死循环,也就是循环不会终止的循环类型,除非使用 break 或 exit() 语句。通常我们用 while True:
来实现死循环。
for…in 循环
for...in
循环语句用于遍历容器类的数据(字符串,列表,元组,集合,字典)。格式如下:
for <变量> in <容器>:
循环的内容(可以在此使用 <变量>)
...
也可以在一次解析多个变量,格式如下:
for 变量1, 变量2 in <容器>:
循环的内容(可以在此使用变量1和变量2)
...
但是,这种用法依赖于容器的结构,比如包含元组的列表 [(),(),()]
、包含列表的列表 [[],[],[]]
、包含元组的元组 ((),(),())
、包含元组的集合 {(),(),()}
、包含字典的列表 [{},{},{}]
等等。
这种方法是直接解析子项中的数据,举个栗子:
info = [1, 2]
for i,j in info:
print(i, j)
上面这段代码,执行出错(TypeError)
info = [(1, 2)]
for i,j in info:
print(i, j)
这段代码执行成功,打印“1 2”。
有时候,我们希望从某个值循环到另一个值,也就是遍历一个数字序列。我们可以使用 Python 的内建函数 range()
来实现,或者通过 len()
函数计算容器长度来实现。
例如打印 0~9:
for i in range(0, 10):
print(i)
在循环语句中,我们可以通过关键字 break
和 continue
来影响执行流程。
- break 语句可以跳出 for 和 while 的循环体。break 会直接终止循环,使得对应的 else 语句也不会执行(包括 while…else 语句中的 else 块)。
- continue 语句用于跳过当前循环(不执行后面的语句),然后进入下一轮循环。
值得一提的是,关键字 pass
并不会影响执行流程。在 Python 中,pass 表示空语句,用于保持程序结构的完整性。也就是说,pass 语句只用于占位,不做任何事情,这么做可以让解释器舒服一点(因为它有强迫症)。
【参考】