Python基础编程

1 了解几个概念

1.1 表达式

表达式是由数字算符数字分组符号(括号)、自由变量约束变量等以能求得数值有意义的排列方法所得到的集合

  • 特点
    • 表达式一般仅仅用于一些结果,不会对程序产生实质性的影响
    • 若在交互式模式下输入一个表达式,解释器会自动将表达式的结果输出
    • 通常书写表达式时,在每一个运算符前后都放一个空格,提高代码的可读性
2020 * (4 +9)

1.2 python中的语句

  • 一个语法上自成体系的单位,由一个词或语法上有关联的一组词构成
  • 语句的执行一般那不会对程序产生一定的影响,在交互式模式,不一定会输出语句的执行结果

1.3 程序

  • 程序就是由一条一条的语句和一条一条的表达式构成的

1.4 函数

  • 函数就是一种语句,函数专门用来完成特定的功能
  • 函数长的形如:xxx() 例如:print(),input(),max(),abs(),sort()
  • 函数的分类:
    • 内置函数:又称内建函数,由语法规定存在的函数,这些函数包含在编译器的运行时库中,程序员不用单独书写代码实现,只需调用即可
    • 自定义函数:由程序员自主创建的函数
    • 当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数
  • 函数的两个要素
    • 参数
    • 返回值

2 Python的标识符

2.1 关键字

  • python一些具有特殊功能的标识符,这就是所谓的关键字,关键字是Python已经使用了的,不允许开发者定义和关键字相同的名字的标识符
>>>help('keywords')
Here is a list of the Python keywords.  Enter any keyword to get more help.

False               class               from                or
None                continue            global              pass
True                def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield
break               for                 not  
>>>imprt keyword as key    #调用 as 关键字,方便后面调用不需要频繁输入囧长的代码
>>>print(key.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

提示: python对大小写敏感,关键字二号各种自定义标识符(如变量名、函数名)在使用时区分大小写。例如:if不能写成IF/If/iF,ABC 和 abc 是两个不同的概念

2.2 标识符概念

  • 开发人员在程序中自定义的一些符号和名称。标识符是自己定义的,如变量名 、函数名等
  • 组成:由26个英文字母大小写,数字 0-9 符号 _$
  • 标识符的规则:
    • 1.标识符中可以包含字母、数字、_(下划线),但是不能使用数字开头 例如:name1 name_1 _name1 1name(不行)
    • 2.Python中禁止使用__关键字__和__保留字__来作为标识符
  • 命名方式
    • 驼峰命名法
      • 小驼峰式命名法: 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
      • 大驼峰式命名法: 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
    • 下划线命名法
      • 不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如 get_url buffer_size

    提示:关于带有“_”的命名应尽量避免使用下面这些样式:

    • 前后带有下划线的变量名通常为系统变量,例如, 都是系统变量_name_,_doc_
    • 以一个下划线开头的变量(如_abc)不能被 from …… import * 语句导入
    • 以两个下划线开头、末尾无下划线的变量(如 __abc)是类的本地变量

3. 基本数据类型

  • 数据类型指的就是变量的值的类型,也就是可以为变量赋哪些值

3.1 数字

3.1.1 数字常量

不同类型的数字,其表示方法有很多不同

1. 整数常量
  • 整数常量就是不带小数点的数。如:123、-12、0、999999等,在pyhton3.x 里不再区别整数和长整数。整数理论上无穷大,只要计算机内存足够
>>> 2**100
1267650600228229401496703205376
>>> 9**1024
139421472706236791468735287967015707232606232113998186759762284283203248267399327423485002476018294548027207658124580006956269122224761375615358997681237349433785401584729106693395255281491169142017082115307947771801954704567433211464560639140944673635364155016693389201613594038984686916178623702578352190636251776039742101384851474311083735102877993131212196962695464654469816719202970619252343026646014132485548307935847260900441555694943498191955672798596377459777392636575523873495086339994375985976543710570091438233257228420529594557457359609723639787519567621434999954843382100489400924995961904023259324301047965917783124275162880514542735528152228927483841372844810255470399471841348890379437250393401562476664019972812975660227449988177768002661436897984534184331079950399306756818061310948084534985374661203278436590349231431071569402389429768922180485838968764968523571261288038064310442585283933256404572748606640151307376800250725427496845607662821346676098703361
  • 一般的整数常量都是十进制的。Python还允许将整数常量表示为二进制、八进制和十六进制
    • 二进制:以 0b | 0B 开头,后面跟二进制数字(0~1),例如:0b1011、0B11
    • 八进制:以 0o | 0O 开头,后面跟八进制数字(0~7),例如:0o245646、0O1452
    • 十六进制:以 0x | 0X 开头,后面跟十六进制数字或字母(0~9 | A~F),例如0x2A、0X132

提示:不同进制只是整数的不同的书写形式,程序运行时都会处理为十进制数。

  • 可以使用 int() 函数将一个字符串按指定进制转换成整数。int 基本格式:int('整数字符串',n)
  • int 按 n 进制将整数字符串转换为对应的整数
>>>int('213')
213
>>>int('1011',2)
11
>>>int('1011',8)
521
>>>int('1011',10)
1011
>>>int('1011',16)
4113
>>>int('1011',5)  #转换成 5进制
131

提示:int 函数的第一个参数只能是整数字符串,即第一个字符可以是正负号,其他字符必须是数字,不能包含小数点或其他符号,否则会出错。

  • Python还提供了内置函数 bin(x),oct(x),hex(x) 用于将整数转换为对应的字符串。例如:
>>>bin(99)
'0b1100011'
>>>oct(99)
'0o143'
>>>hex(99)
'0x63'
2. 浮点数常量
  • 12.24、2.、3.00、1.23e+10、12.23E-10 等都是合法的浮点数常量。调用**type()**函数查看数据类型
>>>type(123)
<class 'int'>
>>>type(123.0)
<class 'float'>
3. 复数常量
  • 复数常量表示为“实部+虚部”形式,虚部以 j | J 结尾。如 2+3j 、2-3J、2j。调用**complex()**函数创建复数。complex() 基本格式为:complex(实部,虚部)
>>>complex(2,3)
(2+3j)
>>>type(2+3j)
<class 'complex'>
4. 布尔(bool)类型常量和空值
  • 布尔类型的两个值 True、False 分别用于表示逻辑真和逻辑假,True、False是预定义的内部变量。从面向对象来看,布尔类型是int类型的字类,即True对应整数1,Fasle对应整数0。例如:
>>>type(True)
>class 'bool'>
>>>True == 1
True
>>>True + 3
4
>>>isinstance(True,int)  #测试 True 是否是 int 的实例
True
>>>True is 1             #测试 True 和 1 是否是同一个对象
False
  • None常量:只有一个数值就是None 也就是空值

3.1.2 数字运算

  • 算数运算(a=10,b=20)在这里插入图片描述
  • 比较运算在这里插入图片描述
  • 赋值运算在这里插入图片描述
  • 逻辑运算在这里插入图片描述
  • 成员运算在这里插入图片描述
  • 身份运算在这里插入图片描述
  • 位运算
    • & 将十进制转换为2进制,然后每一位都进行与运算。(这个符号也可以成为按位与运算符)例如说123 和 456 这两个数字的二进制进行与运算,就是123 & 456,首先将123转换为二进制是001111011,然后在将456转换为二进制111001000,与运算开始,最后得到的结果是1001000 转换成10进制就是72。

    • | 按位或运算符,同样,也是将十进制先转换为二进制,然后逐位进行或运算后,在转换为十进制,和&一样,只不过每一位都是或运算。

    • ^ 按位异或运算符,将两个数都转换为二进制,两个数的同一位相异时,这一位就为1,依旧拿123和456举例子吧,首先都转换成2进制,123=001111011 456=111001000 然后逐位比对,如果相异,就为1,相同就为0,最后的结果就是110110011 转换为十进制就是135。

    • << 左移动运算位,将准备运算的数从十进制转换成二进制,往左移几位,右边不够的地方用0填。拿123距离,转换为二进制为1111011 假如,现在需要这个数向左移动两位,那这个二进制后面就需要添两个0,123 << 2 结果就是111101100 转换为十进制就是492。

    • ‘>>’ 右移动运算位,将准备运算的数从十进制转换成二进制,往右移几位,如果没地方移了,从右边开始删几位,依旧拿123来举例1111011 右移两位后变成了11110,转换成十进制就是30。

按位取反运算规则:按位取反再加1

  • 运算符优先级在这里插入图片描述

3.1.3 小数

  • 因为计算机中硬件限制,浮点数有一个缺点是 缺乏精确度。例如:
>>> 0.3-0.1-0.1-0.1
-2.7755575615628914e-17
>>> 0.3+0.3+0.3+0.1
0.9999999999999999
  • 从Python2.4 起,引入了新的数字类型:小数对象。
1. 创建和使用小数对象
  • 小数对象使用decimal模块中的Decimal函数来创建,即使用时需要先导入模块。例如:
>>> from decimal import Decimal as dec
>>> dec('0.3')+dec('0.3')+dec('0.3')+dec('0.1')
Decimal('1.0')
>>> dec('0.3')-dec('0.1')-dec('0.1')-dec('0.1')
Decimal('0.0')
>>> type(dec('0.1'))
<class 'decimal.Decimal'>
2. 小数的全局精度
  • 可使用decimal 模块中的上下文对象设置小数的全局精度。例如:
>>> from decimal import Decimal as dec
>>> dec('1')/dec('3')
Decimal('0.3333333333333333333333333333')
>>> decimal.getcontext().prec=5   #设置全局小数精度为5位有效数字
>>> dec('1')/dec('3')
Decimal('0.33333')
>>> dec('10')/dec('3')
Decimal('3.3333')
3. 小数的临时精度
  • 可以用with 语句创建临时的上下文对象,以设置临时的小数精度。例如:
>>> with decimal.localcontext() as local:
	local.prec=3
	dec('1')/dec('3')
	dec('10')/dec('3')

	
Decimal('0.333')
Decimal('3.33')
>>> dec('1')/dec('3')
Decimal('0.33333')  #由于前面设置了全局精度为5位有效数字

3.1.4 分数

  • 分数对象明确地拥有一个分子和分母,分子分母保持最简。使用分数可以有效地避免浮点数的不精确性
  • 分数使用 fractions 模块中的 Fractions 函数来创建。例如:
>>> from fractions import Fraction as fra
>>> x=fra(2,8)
>>> x
Fraction(1, 4)
>>> x+2
Fraction(9, 4)
>>> x-2
Fraction(-7, 4)
>>> x*2
Fraction(1, 2)
>>> x/2
Fraction(1, 8)
  • 分数的打印格式和交互模式下的略有不同。例如:
>>> x=fra(2,8)
>>> print(x)
1/4
  • 可以使用Fraction.from_float 函数将浮点数转换成分数:
>>>Fraction.from.float(0.25)
Fraction(1,4)

3.1.5 数学函数

  • python 提供了用于数字处理的内置函数和内置模块。
1. 内置的常用数学函数
  • 查看内置函数 dir(__builtins__);import builtins 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']
  • 查看内置用法
help(内置函数名)
2. math模块函数
  • python 在math模块中提供了许多的数学函数,可以使用import math导入math模块,使用help(math)查看里面各个函数的用法
>>> import math
>>> math.pi
3.141592653589793
>>>math.e
2.718281828459045
>>> math.inf
inf
>>> math.ceil(2.3)  #返回不小于x的最小整数
3
>>> math.fabs(-5)
5.0
>>> math.factorial(0),math.factorial(5) #阶乘
(1, 120)
>>> math.floor(2.3) #返回不大于x的最小整数
2
>>> x=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]
>>> sum(x)
0.9999999999999999
>>> math.fsum(x)  #更精确
1.0
>>> math.gcd(12,8)  #求最大公约数
4
>>> math.expm1(2)  #返回 e^2-1
6.38905609893065

3.2 字符串

  • 字符串是由数字、字母、下划线组成的一串字符
  • 注意
    • 单引号和双引号不能混合使用(“”,‘’,不可以(‘ ”,“ ’))
    • Python中用一对双引号或者一对单引号包裹的内容就是字符串

3.2.1 字符串常量

  • python 字符串常量可用下列多种方法表示。
    • 单引号:‘a’,‘123’.‘abcd’
    • 双引号:“a”,“123”,“abcd”
    • 3个单引号 或者 3个双引号:’’‘python code’’’,""" pyhton string “”",三引号字符可以包含多行字符
    • 带u或U前缀的Unicode字符串:u’abcd’,U’abcd’

字符串都是str类型

>>> x=str(123)
>>> x
'123'
>>> type(x)
<class 'str'>
>>> x=str(u'abc12')
>>> x
'abc12'
1. 单引号与双引号
  • 在表示字符串常量时,单引号与双引号没有区别。在单引号字符串中可嵌入双引号,在双引号字符串中可以嵌入单引号
>>> '123abc'
'123abc'    #在交互式模式下,直接显示字符串时,默认使用单引号表示
>>> "123'abc"  
"123'abc"   #如果字符串中由单引号,则用双引号表示
>>> print('123abc',"123abc")
123abc 123abc  #打印字符串时,不会显示表示字符串的单引号或双引号
2. 三引号
  • 三引号通常表示多行字符串(也称 块字符)。例如:
>>> x="""this is
a python
multiline string."""
>>> x
'this is\na python\nmultiline string.'
>>> print(x)
this is
a python
multiline string.
  • 三引号的另一种作用是作为文档的注释,被三引号包含的代码块作为注释,在执行时被忽略。

3.2.2 转义字符

  • 转义字符是一种特殊的字符常量。转义字符以反斜线""开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符
  • 总结
    • \t 水平制表符
    • \v 垂直制表符
    • \n 换行符
    • \ 反斜线
    • ’ 单引号
    • ‘’ 双引号
    • \a 响铃符
    • \b 退格符
    • \f 换页符
    • \r 回车符
    • \0 Null,空字符串
    • \ooo 八进制表示的ASCII码对应字符
    • \xhh 十六进制值表示的ASCII码对应的字符

3.2.3 长字符串

  • 长字符串 又叫做文档字符串 我们使用三重引号来表示一个长字符串’’’ ‘’’
  • 三重引号可以换行,并且会保留字符串中的格式

3.2.4 格式化字符串

  • 第一种格式化字符串 拼串
  • 第二种格式化字符串 参数传递
  • 第三种格式化字符串 占位符
    • %s 字符串占位
    • %f 浮点数占位
    • %d 整数占位
  • 第四种格式化字符串 f’{变量}’/ str.format

3.2.5 字符串的其他操作

  • len() 字符串的长度
  • max() 最大值
  • min() 最小值
  • split()分割字符串
>>> s="i love"
>>> s2=" python" #前面放一个空格,连接代码时提高可读性
>>> len(s),len(s2)
(6, 7)
>>> a=[1,2,3,4,5,6]
>>> max(a)
6
>>> min(a)
1
>>> s.split(' ') #按空格分割
['i', 'love']
  • join()拼接字符串
    • 描述
      Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

    • 语法
      join()方法语法:
      str.join(sequence)

    • 参数
      sequence – 要连接的元素序列。

    • 返回值
      返回通过指定字符连接序列中元素后生成的新字符串。

>>> s1="-"
>>> s2=""
>>> seq=("p","y","t","h","o","n")
>>> print(s1.join(seq))
p-y-t-h-o-n
>>> print(s2.join(seq))
python
>>> seq=("i love"," python")
>>> print(s2.join(seq))
i love python
  • 去空格
    • s.strip() 左右两边去空格
    • s.lstrip() 去左边空格
    • s.rstrip() 去右边空格
>>> s=" 人生苦短,我用yhon "
>>> s.strip()
'人生苦短,我用yhon'
>>> s.lstrip()
'人生苦短,我用yhon '
>>> s.rstrip()
' 人生苦短,我用yhon'
  • 字符串大小写
    • s.upper() 全部大写
    • s.lower() 全部小写
    • s.isupper() 判断是不是大写
    • s.islower() 判断是不是小写
>>> str=" I Love Python"
>>> str.upper()
' I LOVE PYTHON'
>>> str.upper().isupper()
True
>>> str.lower()
' i love python'
>>> str.lower().islower()
True

4 变量

4.1 变量的概念

变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字。

  • 在python 中使用变量时,必须理解一下几点:
    • 变量在第一次赋值时被创建,再次出现时直接使用。
    • 变量没有数据类型的概念。数据类型属于对象,类型决定了对象在内存中的存储方式
    • 变量引用了对象。当在表达式中使用变量时,变量立即被其引用的对象替代。所以变量在使用之前必须为其赋值
  • 变量命名规则
    • 变量名由字母、数字、下划线组成要符合标识符的命名规范
    • 数字不能开头
    • 不能使用关键字
    • 区分大小写

注意 : 是两个对象相等和两个对象是同一个对象是两个概念

>>>s1 = {'Jerry':'Python'}
>>> import copy
>>> s2=copy.deepcopy(s1)
>>> print(s2)
{'Jerry': 'Python'}
>>> print(s1==s2)
True
>>> print(s1 is s2)
False

4.2变量的运算

• 变量的运算就是正常的四则运算 ,需要注意的是在运算过程中含有浮点数,那么它返回的就是一个浮点数类型

思考与练习:a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现

>>> a,b=6,8
>>> a
6
>>> b
8
>>> c=a
>>> a=b
>>> b=c
>>> a
8
>>> b
6
>>> a,b=6,8
>>> c=[a,b]
>>> c
[6, 8]
>>> a=c[1]
>>> b=c[0]
>>> a
8
>>> b
6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值