注释
注释可以帮助阅读程序,通常用于概括算法、确认变量的用途或者阐明难以理解的代码段。随着程序越来越大、越来越复杂,就应在其中添加说明,对我们解决问题的方法进行大致阐述。在Python程序中有两种类型的注释,分别是单行注释和多行注释。
单行注释
单行注释是只在一行中显示注释内容,Python中单行注释以井号(#)开头,井号(#)后面的内容都会被Python解释器忽略。
# 向大家问好
print('Hello Python people!')
多行注释
多行注释也称为成对注释,这类注释的标记是成对出现的。在Python语言中,有两种实现多行注释的方法。
第一种:用3个单引号’’'将注释括起来。
'''
print('nei hou')
print('nei hou')
print('nei hou')
'''
print('这是多行注释,用3个单引号')
第二种:用3个双引号"""将注释括起来。
"""
print('nei hou')
print('nei hou')
print('nei hou')
"""
print('这是多行注释,用3个双引号')
注意:
注释要放在被注释内容的上方或后面。
函数头部需注释,包括文件名、作者信息、功能信息和版本信息。
声明中文编码格式的方法是在文件开头加上如下代码
# coding = utf-8
# 或者
# coding = gbk
标识符
标识符是用来标识某个实体的一个符号。在编程语言中,标识符是计算机语言中作为名字的有效字符串集合。标识符是用户编程时使用的名字,变量、常量、函数、语句块也有名字,它们的名字称为标识符。
1、合法的标识符
在Python语言中,所有标识符可以包括英文、数字以及下划线,但要符合以下规则:
标识符开头必须是字母或下划线,剩下的字符可以是字母和数字或下划线。
标识符中不能出现分隔符、标点符号或者运算符。
标识符是区分大小写的。
标识符不能使用关键字。
标识符最好不要使用内置模块名、类型名、函数名、已经导入的模块名及其成员。
可以通过dir(__builtins__)查看所有内置函数和内置对象。
[‘ArithmeticError’, ‘AssertionError’, ‘AttributeError’, ‘BaseException’, ‘BlockingIOError’, ‘BrokenPipeError’, ‘BufferError’, ‘BytesWarning’, ‘ChildProcessError’, ‘ConnectionAbortedError’, ‘ConnectionError’, ‘ConnectionRefusedError’, ‘ConnectionResetError’, ‘DeprecationWarning’, ‘EOFError’, ‘Ellipsis’, ‘EnvironmentError’, ‘Exception’, ‘False’, ‘FileExistsError’, ‘FileNotFoundError’, ‘FloatingPointError’, ‘FutureWarning’, ‘GeneratorExit’, ‘IOError’, ‘ImportError’, ‘ImportWarning’, ‘IndentationError’, ‘IndexError’, ‘InterruptedError’, ‘IsADirectoryError’, ‘KeyError’, ‘KeyboardInterrupt’, ‘LookupError’, ‘MemoryError’, ‘ModuleNotFoundError’, ‘NameError’, ‘None’, ‘NotADirectoryError’, ‘NotImplemented’, ‘NotImplementedError’, ‘OSError’, ‘OverflowError’, ‘PendingDeprecationWarning’, ‘PermissionError’, ‘ProcessLookupError’, ‘RecursionError’, ‘ReferenceError’, ‘ResourceWarning’, ‘RuntimeError’, ‘RuntimeWarning’, ‘StopAsyncIteration’, ‘StopIteration’, ‘SyntaxError’, ‘SyntaxWarning’, ‘SystemError’, ‘SystemExit’, ‘TabError’, ‘TimeoutError’, ‘True’, ‘TypeError’, ‘UnboundLocalError’, ‘UnicodeDecodeError’, ‘UnicodeEncodeError’, ‘UnicodeError’, ‘UnicodeTranslateError’, ‘UnicodeWarning’, ‘UserWarning’, ‘ValueError’, ‘Warning’, ‘WindowsError’, ‘ZeroDivisionError’, ‘build_class’, ‘debug’, ‘doc’, ‘import’, ‘loader’, ‘name’, ‘package’, ‘spec’, ‘abs’, ‘all’, ‘any’, ‘ascii’, ‘bin’, ‘bool’, ‘breakpoint’, ‘bytearray’, ‘bytes’, ‘callable’, ‘chr’, ‘classmethod’, ‘compile’, ‘complex’, ‘copyright’, ‘credits’, ‘delattr’, ‘dict’, ‘dir’, ‘divmod’, ‘enumerate’, ‘eval’, ‘exec’, ‘exit’, ‘filter’, ‘float’, ‘format’, ‘frozenset’, ‘getattr’, ‘globals’, ‘hasattr’, ‘hash’, ‘help’, ‘hex’, ‘id’, ‘input’, ‘int’, ‘isinstance’, ‘issubclass’, ‘iter’, ‘len’, ‘license’, ‘list’, ‘locals’, ‘map’, ‘max’, ‘memoryview’, ‘min’, ‘next’, ‘object’, ‘oct’, ‘open’, ‘ord’, ‘pow’, ‘print’, ‘property’, ‘quit’, ‘range’, ‘repr’, ‘reversed’, ‘round’, ‘set’, ‘setattr’, ‘slice’, ‘sorted’, ‘staticmethod’, ‘str’, ‘sum’, ‘super’, ‘tuple’, ‘type’, ‘vars’, ‘zip’]
2、下划线标识符
以下划线开头的标识符具有特殊意义。
以单下划线开头(_xxx)的标识符代表不能直接访问的类属性,需要通过类提供的接口进行访问,不能用“from xxx import x” 导入。
以双下划线开头(__xxx)的标识符代表类的私有成员。
以双下划线开头和结尾(__xxx__)的标识符代表Python中特殊方法专用的标识,如__init__代表类的构造函数。
关键字
在Python中,有一部分是关键字,构成语言的标识符,这样的标识符是保留字,不能用于其他用途,否则会引起语法错误。我们可以导入keyword模块查看所有Python关键字。
import keyword
print(keyword.kwlist)
SymbolDescriptionand用于表达式运算,表示逻辑与操作
as用于类型转换
assert断言,用于判断变量或条件表达式的值是否为真
break中断循环语句的执行
class用于定义类
continue继续执行下一次循环
def删除变量或者序列的值
elif条件语句,与if else结合使用
else条件语句,与if else结合使用,也可用于异常和循环
except包括捕获异常后的操作代码,与try和finally结合使用
finally用于异常语句,出现异常后,始终要执行finally包含的代码块,与try、except结合使用
for循环语句
from用于导入模块,与import结合使用
global定义全局变量
if条件语句,与else、elif结合使用
import用于导入模块,与from结合使用
in判断变量是否存在序列中
is判断变量是否为某个类的实例
lambda定义匿名函数
nonlocal用于表示外部作用域的变量
not用于表达式运算,表示逻辑非操作
or用于表达式运算,表示逻辑或操作
pass空的类、函数、方法的占位符
raise异常抛出操作
return用于从函数返回计算结果
try包含可能会出现异常的语句,与except、finally结合使用
while循环语句
with简化Python的语句
yield用于从函数依次返回值
注意:None是一个特殊的Python对象,和False不同,不是0,也不是空字符串、空列表等。None有自己的数据类型NoneType,None和任何其他数据类型进行是否相等比较结果返回永远是False。可以将None赋值给任何变量,但是不能创建其他NoneType对象。
变量
变量可以通过变量名访问,变量通常是可变的。Python语言同样可以定义变量,用于表示可变数据。变量具有名字,不同变量是通过名字相互区分的,因此变量名具有标识作用,也就是标识符。以下是Python变量名的命名规则:
变量名只能包含字母、数字和下划线,但不能用数字开头。例如可将变量命名为message_1,但不能将其命名为1_message。
变量名不能包含空格,但可使用下划线来分隔其中的单词。例如变量名greeting_message可行,但变量名greeting message会引发错误。
不要将Python关键字和函数名用作变量名。
除了下划线之外,其他符号不能作为变量名使用。
变量名应既简短又具有描述性。例如,name比n好,student_score比s_s好。
慎用小写字母l和大写字母O,因为它们可能会被看成数字1和0。
message = 'Hello Python world!'
print(message)
# 同时赋予多个变量
x,y = 1,2
print('x:%s,y:%s'%(x,y))
数据类型
Python语言中提供了几种数据类型,如数值(int、float、和complex)、布尔(bool)、字符串(str)、列表(list)、元组(tuple)、字典(dict)等。
1、整数型int
整数是没有小数部分的数值,分为正整数、0和负整数。例如下列值都是合法的整数:
100 、 0、 -100
2、浮点型float
浮点数是包含小数点的数或科学计数法表示的数。例如下列值都是浮点数:
-56 、 0.19 、 10.0 、 5.12e2 、 3.14e-1 、22.1E-10
3、复数型complex
复数由实数部分和虚数部分构成,复数形式为:实部+虚部 j 或者complex(a,b)
3.14j 、 5.213e-11j 、 -0.987+0j
4、布尔型
布尔型是一种表示逻辑值的简单类型,它的值只能是真或假这两个值中的一个,即True和Flase.
>>> 10>8
True
>>> 1+2==2+1``
True
>>> True and False
False
5、字符串
可以使用单引号、双引号、三引号来创建字符串。
‘Hello’ 、 “Python” 、 ‘’‘11111’’’
6、列表list
列表用中括号“[“和”]”将列表中的元素括起来,元素间以逗号分隔。
[1,2,3] 、 [‘apple’,‘pear’,‘orange’]
7、元组tuple
元组用"(“和”)"作为边界将元素括起来,元素间以逗号分隔。
(1,2,3) 、 (‘apple’,‘pear’,‘orange’)
8、字典dict
字典是Python中唯一内建的映射类型,可用来实现通过数据查找关联数据的功能。字典是键值对的无序集合。字典中每个元素都包含键和值两部分。字典用大括号{ }来表示,键和值间用冒号分隔,元素之间用逗号分隔。
{‘语文’:‘122分’,‘数学’:‘110分’,‘英语’:‘125分’}
9、集合set
Python中集合是一组对象的集合,对象可以是各种不可变类型。集合可以由各种不可变类型元素组成,但元素之间没有任何顺序,并且元素都不重复。
(‘apple’,‘pear’,‘orange’,‘peach’)
运算符
1、算术运算符
通常用于实现数学运算功能。
运算符功能+加,实现两个对象相加
-减,得到负数或表示一个数减去另一个数
*乘,实现两个数相乘或者返回一个被重复若干次的字符串
/除,实现一个数除以另一个数
%取模,返回除法的余数
//取整除,返回商的整数部分,不包含余数
**幂,返回x的y次幂
2、比较运算符
也称为关系运算符,表示两个变量或常量之间的关系,可用来比较两个数字的大小。
运算符功能>大于,用于返回x是否大于y
>=大于等于,用于返回x是否大于等于y
<=小于等于,用于返回x是否小于等于y
==等于,用于比较对象是否相等
!=不等于,用于比较对象是否不相等
3、测试运算符
也称为成员运算符,能够测试实例中包含的一系列成员,包括字符串、列表或元组。
运算符功能in如果在制定序列中找到值则返回True;否则,返回False
not in如果在制定序列中没有找到值则返回True;否则,返回False
4、逻辑运算符
运算符功能andx为 False,x and y 返回False, 否则它返回y的计算值
orx为 True,x or y 返回True, 否则它返回y的计算值
notx为 True,not x 返回False,;x为False ,not x 返回 True
表达式
案例
根据以下叙述写出正确的条件表达式:
有语文(Chinese)、数学(Math)、英语(English)三门课程,均采用百分制,60分及以上及格,90分及以上优秀。
(1)三门课程都及格
(2)至少一门课程及格
(3)语文及格且数学或者英语优秀
# 第一小题
Chinese >= 60 and Math >= 60 and English >= 60
# 第二小题
Chinese >= 60 or Math >= 60 or English >= 60
# 第三小题
(Chinese >= 60) and (Math >= 90 or English >= 90)
内置函数
Python内置了一系列的常用函数,不需要额外导入任何模块就可以直接使用,运行速度较快,非常方便。我们可以使用内置函数 dir( ) 查看所有的内置函数和内置对象,还可以通过help(函数名) 查看某个函数的用法。
常用内置函数
函数功能abs(x)返回数字x的绝对值;如果x为复数,返回值就是该复数的模
bin(x)把整数x转换为二进制
divmod(x,y)函数返回整商和余数的元组
id(x)返回对象x的标识(内存地址)
len(x)返回对象x(列表、元组、字典、字符串、集合、range对象)的元素个数
max(x)、min(x)返回给定参数的最大值、最小值,参数可以为可迭代对象
pow(x,y)返回以x为底,y为指数的幂
range([start, ]end[,step])返回range对象,该对象包含按参数([start,] end)范围内,step为步长
round(x[,n])返回浮点数x的四舍五入值,若不给出n值,则返回整数;给出n值,则代表舍入到小数点后的位数
sum(iterable,start=0,/)返回序列iterabla中所有元素之和,如果指定起始值start,则返回start+sum(iterable);如果iterable为空,则返回start
type(x)返回对象x的数据类型
常用内置类型转换函数
函数功能chr(x)返回Unicode编码为x所对应的字符
ord(x)返回一个一个字符的Unicode编码
案例
1、通过输入函数input()输入股票代码、股票名称、当天股票最高价和最低价,通过输出函数print()输出股票代码+股票名称、最高价、最低价和差价。
# 法一
stock_code = int(input('请输入股票代码:'))
stock_name = input('请输入股票名称:')
highest = float(input('请输入股票当天最高价:'))
lower = float(input('请输入股票当天最低价:'))
diff = highest-lower
print('股票代码+股票名称:%s+%s,最高价:%s,最低价:%s,差价:%s'
%(stock_code,stock_name,highest,lower,diff))
# 法二(用split和 map)
print('输入以","分隔')
nn=input('请输入股票代码和股票名称:')
code,name = map(str,nn.split(','))
hl = input('请输入当天最高价和最低价:')
highest,lower = map(float,hl.split(','))
diff = highest-lower
print('股票代码+股票名称:%s+%s'%(code,name))
print('最高价:%.2f,最低价:%.2f,差值:%.2f'%(highest,lower,diff))
2、请编写一个程序,能接受用户输入的一个复数的实部和虚部,输出其复数表示形式,以及其模。
# 法一
import math
a = float(input('请输入复数的实部:'))
b = float(input('请输入复数的虚部:'))
c = math.sqrt(a**2+b**2)
print('复数:'+str(a)+'+'+str(b)+'i')
print('模为:',c)
# 法二
import math
x = input('请输入复数的实部和虚部:')
a,b = map(float,x.split())
m = complex(a,b)
c = abs(m)
print('输入的复数为:'+str(m),',模为:'+str(c))