python基础语法一

1. 变量

(1)变量 = 值

(2)由字母、数字、下划线组成

(3)不能以数字开头

(4)不能与关键字重名

(5)单词都用小写字母

(6)单词之间用“_”连接

(7)获取变量的相关属性:

#       name    =       "ABC"

#         |               |

#        \ | /             \ | /

#       label           value

(8)获取变量的id

id(obj)

(9)获取变量的type

type(obj)

(10)获取变量的value

obj

1.1:获取变量信息

name = "ABC"

print(id(name))          #1672858375792

print(type(name))      #<class 'str'>

print(name)               #ABC

2. 数据类型

2.1 整型int

(1)binary / octal / decimal(default) / hexadecimal

2.1:整型变量

print(18)              #18

print(0b1001)      #9

print(0o17)          #15

print(0x1a)          #26

2.2 浮点型float

(1)计算结果不精确,需要精确结果请使用工具: Decimal(‘数字字符串’)

2.2:浮点型变量

print(1.1 + 2.2)          # 3.3000000000000003

from decimal import Decimal

print(Decimal('1.1') + Decimal('2.2'))        # 3.3

print(Decimal(1.1) + Decimal(2.2))          # 3.300000000000026464....

2.3 布尔型bool

(1)一切对象都有一个布尔值

(2)布尔值只有两种:True和False

(3)以下对象的布尔值为False:False/0/None/空字符串/空列表/空元组/空字典/空集合

(4)其他对象的布尔值均为True

2.3bool型变量

print(True)                 #True

print(False)               #False

print(True + 1)          #2

print(False + 1)        #0

print(bool(False))     #False

print(bool(0))           #False

print(bool(None))    #False

print(bool(""))          #False

print(bool([]))          # or: print(bool(list())) #False

print(bool(()))          # or: print(bool(tuple())) #False

print(bool({}))          # or: print(bool(dict())) #False

print(bool(set()))     #False

2.4 字符串string

见第3节

2.5 数据类型转换

(1)其他类型转为字符串:str(***)

(2)其他类型转为整型:int(***)

注意:字符串类型转化为整型只能是整数字符串

(3)其他类型转化为浮点型:float(***)

注意:字符串类型转化为浮点型只能是数字字符串

2.5:数据类型转换

print(str(10) + str(5.5) + str(True))  # 105.5True

print(int(5.5))                                  #5

print(int(True))                                #1

print(int('128'))                                #128

print(int('A'))                                   # error

print(int('5.5'))                                # error

print(float(True))                            #1.0

print(float(128))                             #128.0

print(float('128'))                           #128.0

print(float('128.5'))                        #128.5

print(float('A'))                              # error

3. 字符串

3.1 字符串表示方式

(1)单引号:'***'(必须在同一行)

(2)双引号:"***"(必须在同一行)

(3)三引号:"""***"""(不必在同一行,三引号里的内容全部都属于字符串,包括换行符等)

3.1:字符串的几种表示方式

str1 = 'A'

str2 = "B"

str3 = """C

         D """

print(str1) #A

print(str2) #B

print(str3) #C

                 #              D

3.2 字符串的驻留机制

(1)驻留机制:即若字符串内容相同,对象就只有一个

(2)非pycharm模式下驻留机制需要满足以下条件之一:

        a)字符串长度为0或1:即任意字符都可以

        b)字符串符合标识符(即由数字字母下划线组成):即若包含空格等其它字符就不会触发驻留机制

        c)字符串只在编译时驻留,而不是运行时

        d)-5到256之间的整数数字

3.2:字符串的驻留机制

a = 'abc'

b = 'abc'

c = 'ab'+'c'

d = ''.join(['ab','c'])

e =  'ab'

f = e+'c'

print(a, id(a)) # abc 2626773437040

print(b, id(b)) # abc 2626773437040

print(c, id(c)) # abc 2626773437040

print(d, id(d)) # abc 2626777516784 , run time

print(f, id(f)) # abc 2626777516656 , run time

3.3 字符串查询

(1)index(): 查找第一次出现的位置,若不存在,抛出异常

(2)find(): 查找第一次出现的位置,若不存在,返回-1

(3)rindex(): 查找最后一次出现的位置,若不存在,抛出异常

(4)rfind(): 查找最后一次出现的位置,若不存在,返回-1

3.3:字符串查询

str1 = 'jsgeyhegy'

print(str1.index('g')) #2

print(str1.find('g')) #2

print(str1.rindex('g')) #7

print(str1.rfind('g')) #7

3.4 字符串大小写转换

(1)upper(): 全部转换为大写,会产生新的对象(即使原来的字符串对象都是大写)

(2)lower():全部转换为小写,会产生新的对象(即使原来的字符串对象都是小写)

(3)swapcase(): 把字符串中的大写转换为小写,小写转换为大写

(4)title(): 把每个单词的首字母转换成大写,其余转换成小写

3.4

str1 = 'jsgeyhegyZ word SHBjdh'

print(str1.upper()) # JSGEYHEGYZ WORD SHBJDH

print(str1.lower()) # jsgeyhegyz word shbjdh

print(str1.swapcase()) # JSGEYHEGYz WORD shbJDH

print(str1.title()) # Jsgeyhegyz Word Shbjdh

3.5 字符串对齐

(1)center(): 居中对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数可选,默认空格。若指定宽度小于实际字符串宽度,则返回原字符串

(2)ljust(): 左对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数可选,默认空格。若指定宽度小于实际字符串宽度,则返回原字符串

(3)rjust(): 右对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数可选,默认空格。若指定宽度小于实际字符串宽度,则返回原字符串

(4)zfill(): 右对齐,只有一个参数来指定宽度,若指定宽度小于实际字符串宽度,则返回原字符串,左边固定用0填充

3.5

str1 = 'jsgeyhegyZ word SHBjdh'

print(str1.center(50, '$')) # $$$$$$$$$$$$$$jsgeyhegyZ word SHBjdh$$$$$$$$$$$$$$

print(str1.ljust(50, '$')) # jsgeyhegyZ word SHBjdh$$$$$$$$$$$$$$$$$$$$$$$$$$$$

print(str1.rjust(50, '$')) # $$$$$$$$$$$$$$$$$$$$$$$$$$$$jsgeyhegyZ word SHBjdh

print(str1.zfill(50)) # 0000000000000000000000000000jsgeyhegyZ word SHBjdh

3.6 字符串劈分

(1)split(): 从左侧开始劈分,返回字符串列表,有两个可选参数:1)sep:分割操作符,默认空格2)maxsplit:最大分割次数

(2)rsplit(): 从右侧开始劈分,返回字符串列表,有两个可选参数:1)sep:分割操作符,默认空格2)maxsplit:最大分割次数

(3)list = re.split(分割操作符,字符对象):当分割对象不是某个确定的字符时,就可以用正则匹配。

3.6

str1 = 'jsgeyhegyZ word SHBjdh'

lst1 = str1.split(sep='g', maxsplit=1)

lst2 = str1.rsplit(sep='g', maxsplit=1)

print(lst1) # ['js', 'eyhegyZ word SHBjdh']

print(lst2) # ['jsgeyhe', 'yZ word SHBjdh']

str = "aaa    bbb        ccc"

list = re.split(r’[ ]+’,str)

print(list)  #[‘aaa’,’bbb’,’ccc’]

3.7 字符串判断

(1)isidentifier(): 判断字符串是否是合法的标识符

(2)isspace(): 判断字符串是否全部由空白字符组成()

(3)isalpha(): 判断指定的字符串是否全部由字母组成

(4)isdecimal(): 判断指定字符串是否全部由十进制的数字组成

(5)isnumeric(): 判断指定的字符串是否全部由数字组成

(6)isalnum(): 判断指定字符串是否全部由字母和数字组成

(7)isdigit():如果字符串只包含数字则返回True

3.7

str1 = 'jsgeyhegyZ word SHBjdh12 34od'

print(str1.isidentifier()) #False

print(str1.isspace()) #False

print(str1.isalpha()) #False

print(str1.isdecimal()) #False

print(str1.isnumeric()) #False

print(str1.isalnum()) #False

3.8 字符串替换

(1)replace(): 第一个参数是被替换的子字符串,第二个参数是要替换成的子字符串,第三个参数指定最大替换次数。返回替换后的字符串

3.8

str1 = 'hhhhhwgdyehhhwoeurbdy'

print(str1.replace('h','o',5)) #ooooowgdyehhhwoeurbdy

3.9 字符串拼接

(1)join(): 将列表或元组中的字符串合并成一个字符串(效率比+高)

(2)不同内容的字符串拼接使用加号+

(3)相同内容的字符串拼接使用乘号*(即重复)

3.9:字符串拼接

print(str(10) + str(5.5) + str(True)) # 105.5True

print(‘str’*4) # strstrstrstr

lst1 = ['hsgd', 'whhd', 'syye']

print(''.join(lst1)) # hsgdwhhdsyye

lst2 = ('hsgd', 'whhd', 'syye')

print(''.join(lst2)) # hsgdwhhdsyye

print('$'.join('hdue')) # h$d$u$e

3.10 字符串比较

(1)比较字符串内容(实际比较的是ascii码):# >  >=   <  <=   ==   !=

(2)比较字符串id:is

3.10

print('apple' > 'app') #True

print('apple' > 'banana')  #97>98?False

print('banana' >= 'apple') #True

3.11 获取字符串原始值

(1)ord():即获取ASCII码

3.11

print(ord('a'))  #97

3.12 字符串切片

(1)切片产生新的对象[start:end:step],步长为负数默认从最后一个字符开始

3.12

str1 = 'hshb sjwh0281;kwi'

print(str1[5:])            #sjwh0281;kwi

print(str1[:9])            #hshb sjwh

print(str1[0:3])          #hsh

print(str1[5:12])        #sjwh028

print(str1[5:12:2])     #sw08

print(str1[::2])        #hh jh21ki

print(str1[::-1])         #iwk;1820hwjs bhsh

3.13 格式化字符串

(1)方式一:%作为占位符

                        %s:字符串

                        %i或%d:整数

                        %f:浮点数

                        %10d:10表示的是宽度,表示这个数字将占据10个宽度

                        %.3f: .3表示该浮点数的精度为3,即小数点后保留3位

                        %10.3f: 总宽度为10,小数点后保留3位

                        {序号:.3}: .3表示一共是3位数字

                        {序号:10.3}: 表示宽度是10,数字有3位

(2)方式二:{}作为占位符,调用format:当{}只有1个时,里面的序号可以不写

                        {0:<50}:0表示占位符,<表示左对齐,^表示居中对齐,>表示右对齐,50表示此字符串占据50个宽度

(3)方式三:f-string

3.13

name = 'Julie'

age = 18

print('my name is %s, my age is %d' % (name, age)) #my name is Julie, my age is 18

print('my name is {0}, you can call me {0}, and my age is {1}'.format(name, age))# my name is Julie, you can call me Julie, and my age is 18

print(f'my name is {name}, my age is {age}') #my name is Julie, my age is 18

print('%10d' % (3)) #         3

print('%.3f' % (3.1415926)) #3.142

print('%10.3f' % (3.1415926)) #     3.142

print('{0:.3}'.format(3.1415926)) #3.14

print('{:.3}'.format(3.1415926)) #3.14

print('{:10.3}'.format(3.1415926)) #      3.14

3.14 字符串编码转换

(1)编码:将字符串转换成二进制

(2)解码:将二进制转换成字符串

(3)注意:编码和解码的格式必须保持一致,否则会报错

3.14

str = '我是xxx'

byte = str.encode(encoding='GBK') #GBK: 一个汉字占两个字节

str1 = byte.decode(encoding='GBK')

byte2 = str.encode(encoding='UTF-8') #UTF-8: 一个汉字占三个字节

str2 = byte2.decode(encoding='UTF-8')

print(byte) #b'\xce\xd2\xca\xc7xxx'

print(str1) #我是xxx

print(byte2) #b'\xe6\x88\x91\xe6\x98\xafxxx'

print(str2) #我是xxx

3.15 获取字符串长度

(1)len()

3.15

str = 'abcxxx'

print(len(str)) #6

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值