这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战
交互式编程
交互式编程不需要创建py文件,是通过 Python 解释器的交互模式进来编写代码,cmd 进入在命令行中输入 Python 命令即可启动交互式编程,提示窗口如下:
C:\Users\Administrator>python
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
在 python 提示符中输入以下文本信息,然后按 Enter 键查看运行效果:
>>> print("Hello, Python!")
Hello, Python!
脚本式编程
首先使用文本编辑器编写py文件,在通过 python 命令调用解释器开始执行py文件,直到执行完毕。当文件执行完成后,解释器不再有效。
让我们编写一个简单的 Python 程序。所有 Python 文件将以 .py 为扩展名。将以下的源代码拷贝至 first.py 文件中。
print("Hello, Python!")
使用python命令执行 first.py文件
$ python test.py
Hello, Python!
行和缩进
学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号{}来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。如下所示:
if True:
print("True")
else:
print("False")
以下代码将会执行错误:
if True:
print("Answer")
print("True")
else:
print("Answer")
# 没有严格缩进,在执行时会报错
print("False")
执行以上代码,会出现如下错误提醒:
$ python test.py
File "test.py", line 5
if True:
^
IndentationError: unexpected indent
IndentationError: unexpected indent 错误是 python 编译器是在告诉你 "Hi,老兄,你的文件里格式不对了,可能是 tab 和空格没对齐的问题",所有 python 对格式要求非常严格。
如果是 IndentationError: unindent does not match any outer indentation level错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。
因此,在 Python 的代码块中必须使用相同数目的行首缩进空格数。 建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用!!
题外话:看过一个文章说使用空格键的程序员比Tab键的程序员赚的多 http://blog.csdn.net/lunaqi/article/details/74454425
多行语句
为了提高代码的阅读性,Python 语句中一般以新行作为为语句的结束符。也就是说 一行 只写 一条语句。如果一条语句过长,那么就可能会导致在阅读代码时不是很方便。怎么办?
我们可以使用斜杠( \ )将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
语句中包含 [], {} 或()括号就不需要使用多行连接符。如下实例:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
Python 引号
Python 可以使用引号( ' )、双引号(")、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须的相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""
Python注释
python中单行注释采用 # 开头。
# 第一个注释
print("Hello, Python!") # 第二个注释
输出结果:
Hello, Python!
注释可以在语句或表达式行末:
name = "Madisetti" # 这是一个注释
python 中多行注释使用三个单引号(''')或三个双引号(""")。
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
Python空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
同一行显示多条语句
Python 可以在同一行中使用多条语句(但不推荐),语句之间使用分号(;)分割,以下是一个简单的实例:
str='a' ; str1='b' ; print(str) ; print(str1) #注意空格
执行以上代码,输入结果为:
a
b
输出
用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下:
print('hello, world')
print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:
print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog
print()也可以打印整数,或者计算结果:
print(300)
300
print(100 + 200)
300
因此,我们可以把计算100 + 200的结果打印得更漂亮一点:
print('100 + 200 =', 100 + 200)
100 + 200 = 300
注意,对于100 + 200,Python 解释器自动计算出结果 300,但是,'100 + 200 ='是字符串而非数学公式,Python 把它视为字符串,请自行解释上述打印结果。
输入
现在,已经可以用print()输出你想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办?Python 提供了一个input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:
name = input()
jerry
当你输入name = input()并按下回车后,Python 交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。
输入完成后,不会有任何提示,Python 交互式命令行又回到>>>状态了。那我们刚才输入的内容到哪去了?答案是存放到name变量里了。可以直接输入name查看变量内容:
name
'jerry'
要打印出name变量的内容,除了直接写name然后按回车外,还可以用print()函数:
print(name)
jerry
有了输入和输出,我们就可以把上次打印'hello, world'的程序改成有点意义的程序了:
name = input()
print('hello,', name)
运行上面的程序,第一行代码会让用户输入任意字符作为自己的名字,然后存入name变量中;第二行代码会根据用户的名字向用户说 hello,比如输入 lidao:
python hello.py
lidao
hello, lidao
但是程序运行的时候,没有任何提示信息告诉用户:“嘿,赶紧输入你的名字”,这样显得很不友好。幸好,input()可以让你显示一个字符串来提示用户,于是我们把代码改成:
name = input('please enter your name: ')
print('hello,', name)
再次运行这个程序,你会发现,程序一运行,会首先打印出please enter your name:,这样,用户就可以根据提示,输入名字后,得到 hello, xxx 的输出:
python hello.py
please enter your name: lidao
hello, lidao
每次运行该程序,根据用户输入的不同,输出结果也会不同。在命令行下,输入和输出就是这么简单。
input()和print()是在命令行下面最基本的输入和输出,但是,用户也可以通过其他更高级的图形界面完成输入和输出,比如,在网页上的一个文本框输入自己的名字,点击“确定”后在网页上看到输出信息。
标识符
Python中的标识符是用于识别变量、函数、类、模块以及其他对象的名字。
命名规则:
- 标识符可以包含字母、数字及下划线(_),但是必须以一个非数字字符开始。
- 字母仅仅包括
ISO-Latin字符集中的 A–Z 和 a–z。 - 标识符对大小写敏感的,因此
FOO和foo是两个不同的对象。 - 特殊符号,如
$、%、@等,不能用在标识符中。 以下划线开头的标识符是有特殊意义的。以单下划线开头foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *而导入; 以双下划线开头的__foo代表类的私有成员;以双下划线开头和结尾的__foo__代表 Python 里特殊方法专用的标识,如_init()代表类的构造函数。 另外,如if,else,for等单词是保留字,也不能将其用作标识符。下面的表列出了所有的保留字符及其说明:
保留字
- and 用于表达式运算,逻辑与操作
- as 用于类型转换
- assert 断言,用于判断变量或条件表达式的值是否为真
- break 中断循环语句的执行
- class 用于定义类
- continue 继续执行下一次循环
- def 用于定义函数或方法
- del 删除变量或序列的值
- elif 条件语句,与if 、 else结合使用
- else 条件语句,与if 、 elis结合使用。也用于异常和循环语句
- except except包含捕获异常后的操作代码块,与try、finally结合使用
- exec 用于执行python语句
- for for循环语句
- finally 用于异常语句,出现异常后,始终要执行finally包含的代码块。与try、except结合使用
- from 用于导入模块,与import结合使用
- global 定义全局变量
- if 条件语句,可与elif、else结合使用
- import 用于导入模块,可与from结合使用
- in 判断变量的值是否在序列中
- is 判断变量的值是否为某个类的实例
- lambda 定义匿名函数
- not 用于表达式运算,逻辑非操作
- or 用于表达式运算,逻辑或操作
- pass 表示空的类、方法或函数的占位符
- print 打印语句
- raise 异常抛出操作
- return 指定函数的返回值
- try try包含可以出现异常的语句,与except、finally结合使用
- while while循环语句
- with 简化python语句
- yield 用于依次从函数返回值
变量
什么是变量?请回忆初中数学所学的代数基础知识:
设正方形的边长为a,则正方形的面积为a x a。把边长a看做一个变量,我们就可以根据a的值计算正方形的面积,比如:
若a=2,则面积为a x a = 2 x 2 = 4;
若a=3.5,则面积为a x a = 3.5 x 3.5 = 12.25。
在 Python 中,变量用来存储数据。比如正方形的边长实际值 2 和 3.5。
在实际开发时,如果有数据要被变量存储起来的话,那么就定义变量名,然后赋值相应的数据。 每个变量都包括变量名称和数据这些信息。 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,使用等号(=)用来给变量赋值。 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "lidao" # 字符串
print(counter)
print(miles)
print(name)
以上实例中,100,1000.0 和 "lidao" 分别赋值给counter,miles,name变量。
执行以上程序会输出如下结果:
100
1000.0
lidao
多个变量赋值
Python 允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型数据,值为 1,三个变量都存储同一数据。
当然也可以为多个数据指定多个变量。例如:
a, b, c = 1, 2, "jingjing"jingjing
以上实例,两个整型数据1 和 2的分配给变量 a 和 b,字符串对象"jingjing" 分配给变量 c。
变量名称
在实际开发中,理论上变量名只要按照标识符命名规则可以随意去命名,只要保证不产生冲突即可,但是为了使我们书写出来的代码具有一定的易读特性,因此在定义变量名时,尽可能让它具有实际意义。
# 定义身高变量
high = 175
# 定义名字变量
name = 'jerry'
# 定义年龄变量
age = 19