1、算数运算符:

+   -  *  /   **    %  //  

num=9%2

print(num)

num=9%2
print(num)


num=9//2
print(num )

2、成员运算

name='苟陇辉'
 if '苟' in name:
    print('ok')
else:
    print('error')

 if '苟'not in name:
    print('ok')
else:
   print('error')

in             not in   判断某个东西是否在某个东西中包含。

3、逻辑运算

布尔值:  结果 为‘真’  true   或者 结果为  ‘假’  false

# '' 空字符为假

# '   '  只要里面有东西 就为真

#  0    假

# 其他  真

  ‘转换bool值     

a=123

b=bool(a )’

name='苟陇辉'
v= '苟' in name
print(v)

user='gou'
pwd=123
v=user=='gou' and pwd==124 or user=='ales'and pwd=='123' print(v)

4、赋值运算

count=1

count=count+1  即  count+=1

count=count%1 即 count%=1

5、比较运算

a= 1>5

print(a)

结果为 false

总结: 算数运算符 和 赋值运算符 得到的均为‘’真实‘’结果;比较运算符、 逻辑运算符、成员运算得到的结果均为“布尔值” 

针对逻辑运算的进一步研究:

  1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

  2 ,  x or y , x为真,值就是x,x为假,值是y;

             x and y, x为真,值是y,x为假,值是x。

 

python 小数点变百分数 python小数转换为百分数_取值

基本数据类型

 一、整形  int   

注:在Python3中,无论数字多大,都属于int类型;在Python2中,数字变大,超过一定范围则称为long型;

魔法  

1、转换功能

a='123'
print(type(a),a)     # type 查看类型 
b=int(a)             # 将字符串'123',转换为数字123
print(type(b),b)

python 小数点变百分数 python小数转换为百分数_python 小数点变百分数_02

a='0011'
v=int(a ,base=2)    # base=16/8/2  指代以16进制数,8进制数,2进制数表示a, 若是不写base=  则默认10进制数
print(v)

python 小数点变百分数 python小数转换为百分数_python 小数点变百分数_03

2、

age=10
r=age.bit_length()    #表示当前数字的二进制,至少用多少位表示  10的二进制数为1010 即4位
print(r)

 

二、字符串

魔法 

1、

test='gou'
v=test.capitalize()         #表示首字母大写,其他字母小写
print(v)

2、

test='gou'
v=test.casefold()          #表所有字母变小写
print(v)

注意:

test='gou'
v=test.lower()          #也表所有字母变小写,但是特殊字符表示不了。而capitalize()则对于很多未知的对应关系也可以表示
print(v)

3、

test='gou'
v=test.center(20,'*')       # 表示  设置宽度,并将内容居中,其中20代表总长度,'*'代表空白处的未知填充,只能有一个字符,可有可无
print(v)

标准为:test.center(width,fillchar=None)

# print(test.ljust(20, '*'))  # gouLONGhui**********
# print(test.rjust(20, '*'))  # **********gouLONGhui
# print(test.zfill(20))  # 0000000000gouLONGhui 默认为0填充,无法设置参数

4、

test='gougou'
v=test.count('ou')      # 去字符串里寻找子序列('ou')出现的次数
print(v)

 

test='gougou'
v=test.count('ou',5,8)      # 去字符串里寻找子序列('ou')出现的次数,指定寻找的起始 和 结束 位置  注意字符串第一位为0
print(v)

5、

test='gou'
v=test.endswith('ex')      #  字符串以什么结尾 
print(v)                   #  v=test.startswith('a') 表示字符串以什么开头

 

6、

test='gougou'
v=test.find('ou',5,8)       # 从开始往后找,获取其位置,索引 ,可指定其寻找的起始位置,注意,大于等于5,小于8
print(v)

注意:找不到时 结果为-1

7、

test='gougou'
v=test.index('8')           #  从开始往后找,获取其位置 ,可指定其寻找的起始位置,找不到时程序报错,故一般使用find命令,找不到时 运行结果为-1
print(v)

 

8、

test='i am {name},age{a}'
v=test.format(name='gou',a=19)     # 格式化,将一个字符串的占位符替换为指定的值。注意格式的准确性,括号必须为大括号
print(v)
test='i am {name},age{a}'
v=test.format_map({'name':'gou','a':19})     # 也是格式化,将一个字符串的占位符替换为指定的值。注意格式的准确性,冒号不能少
print(v)

 

9、

test='syeijc435_+'
v=test.isalnum()        # 判断字符串中是否只包含字母和数字,若有其他符号 ,则结果为false
print(v)

10、

test='tuys'
v=test.isalpha()        # 判断字符串是否只包含字母 汉字
print(v)

11、

test='124'
v=test.isdecimal()      # 判断字符串是否只包含数字
print(v)
test='12'
v=test.isdigit()         # 判断字符串是否只包含数字          
print(v)

 

 二者的区别为  若为 ② 则 .isdecimal 为false       . isdigit 为true   

test='二2②'
v=test.isnumeric()      # 判断是否全为数字  可识别汉字
print(v)

.isnumeric 也可识别 汉字‘二’

12、

test='_123rt'
v=test.isidentifier()       # 判断 标识符 格式是否正确  注意:标识符同字符串规则一样,不能使用数字开头
print(v)

 

13、

test='\totijd\n'
v=test.isprintable()        # 判断是否存在不可见的(如\n、\t) ,或运行结果不可显示的字符  
print(v)

 

14、

test='    '
v=test.isspace()        # 判断是否字符串全为空格
print(v)

 

15、

test='Gou long hui'
v=test.istitle()        # 判断是否为标题(标题中每一个首字母都需大写)
print(v)
v=test.title()      # 转换为标题
print(v)
test1 = 'gou sf\tsf h6ui'
print(test1.title())  # Gou Sf    Sf H6Ui 非字母隔开的每个单词首字母大写

16、

test='aeiou'
test1='12345'   #  获得对应关系
v='asidou'
v1=str.maketrans('aeiou','12345')       # 替换功能
new_v=v.translate(v1)
print(new_v)

 

17、

test='gou'
v=test.swapcase()       # 大小写转换
print(v)

 

17、

test='username\temail\tpassword\ngoulonghui\tglh020@qq.com\t123\nweiguoquan\tweiguoquan@qq.com\t234'
v=test.expandtabs(20)       # 从开始往后找制表符'\t',20个一组,找到后用空格自动补齐20,可用于制作表格
print(v)

 

必背魔法:

1、

test='gouex'
v=test.find('ex')       # 从开始往后找,找到第一个之后,获取其位置
print(v)

 

test='gouex'
v=test.rfind('ex',2,5)      # 从右往左找,规定范围在>=2,<5,之间,获取其位置, 注意:无论从左往右还是,从右往左数,都是左边第一个字符 索引为0
print(v)

 

2、

test='苟陇辉五六七八九'
v='_'.join(test)        # 将字符串中的每一个元素按照指定分隔符拼接。 注意    .join
print(v)
l = ['s', 'f']
print(''.join(l))  # sf   只有列表中元素全是字符串时,才可将列表转换为字符串

3和4 、

test='gou'
v1=test.islower()       # 判断字符串是否全为小写
v2=test.lower()         # 将字符串全部转换为小写
v3=test.isupper()       # 判断字符串是否全为大写
v4=test.upper()         # 将字符串全部转换为大写
print(v1,v2,v3,v4)

5、

test='  xgou  '
test1='al\te\tx'
# v1=test.lstrip()          # 去除左边空格
# v2=test1.lstrip()         # 去除‘\t’‘\n’
# v3=test.rstrip()          # 去除右边空格
# v4=test1.rstrip()         # 去除‘\t’‘\n’
# v5=test.strip()           # 去除两边空格,不能去除中间空格
# v6=test1.strip()          # 去除‘\t’‘\n’
test2='xgou'
v7=test2.lstrip('xa')       # 去除指定字符
print(v7)


6、
test='testasdsddfg'
v1=test.partition('s')      # 以目标's'分割,找到第一个s后分,只能分割三块
v2=test.rpartition('s')     # 以目标's'分割,从右找 找到第一个s后分,只能分割三块
v3=test.split('s',)         # 以目标's'分割,找到第一个s后分,但是不显示分割字符s
v4=test.rsplit('s')         # 以目标's'分割,从右找到第一个s后分,但是不显示分割字符s
v5=test.split('s',2)        # 以目标's'分割,找到2个s后停止分割,且不显示分割字符s
print(v1)
print(v2)
print(v3)
print(v4)
print(v5)

特例:test.splitlines()  表示根据换行符‘\n’分割      test.splitlines(True) 则显示换行符‘\n’, test.splitlines(False),则不显示换行符‘\n’。

7、

test='gougougou'
v=test.replace('ou','bbb',2)        # 替换功能
print(v)

 

特殊用法:

1、

test='gou'
v=test[2]           # 据 索引 或 下标 获取字符串中的某个字符
print(v)
v2=test[0:2]        # 索引范围 左开右闭,顾头不顾尾
print(v2)
v3=len(test)        # 判断当前字符串有多少字符组成
print(v3)

2、for

test='苟陇辉苟'
index=0
while index<len(test):
    v=test[index]
    print(v)
    index+=1
print('====')

使用for语句时:

test='苟陇辉苟'     # for 循环格式   for 变量名 in 字符串:
for v in test:      #                    变量名
    print(v)

 

字符串一旦创建,不可修改;

一旦修改或者拼接,都会造成重新生成字符串;

补充:

range的用法    帮助创建连续的数字,v=range(0,100,5)步长为5

                 v='gougougou'

replace      v=test.replace('ex','bbb',2)   2为替换前2个

 

练习题:将用户输入的文字及其对应的索引打印出来。

test=input('请输入:')
v=range(0,len(test))
for item in v:
    print(item,test[item])

 三、列表list

list 为类,li为通过list类创建的对象,列表里每一个元素通过, 隔开,中括号 括起来;可以修改,删除

方法

1、

 

li = [1,12,9,'age',['苟陇辉',[19,10],'你'],'gou',True]

 

li = [1,12,9,'age',['苟陇辉',[19,10],'你'],'gou',True]
print(li[3])            #
print(li[3:5])
li[1] = 120
print(li)
li[1] = [11,22,33,44]
print(li)
li[2:4] = [120,90]
print(li)
del li[1]
print(li)
del li[2:6]
print(li)           # 可通过索引、切片 取值,删除其中的元素

 

同样支持for循环,while 循环

2、in 操作

v = 12 in li

print(v)        True

 

3、

li = [1,12,9,'age',['苟陇辉',['19','10'],'你'],'gou',True]
v = li[4][1][0][1]      # 索引取值一直往里找
print(v)

结果为9
4、
(1)
s = 'asdfghkl'
list(s)             # 转化功能   字符串转化为列表,内部使用的for循环,注意: 数字不可被转化,不可使用for循环
print(list(s))

 

(2)、列表转化字符串

①:列表中既有数字,又有字符串是 需要自己写一个for循环一个一个处理:

li=[1,2,3,'gou]

s=''

for item in li

  s=s+str(item)

print(s)

② 只有字符串

li=['123','gou']

v=''.join(li)

print(v)

一般方法:

1、

li = ['11','22','33','44']
li.append(5)            # 直接在原值后面追加一个
print(li)
li.append([99,'苟陇辉'])      # 只将一个整体以列表的形式加进去
print(li)
li.extend([99,'苟陇辉'])       # 将每一个元素都加进去
print(li)

 

2、

li = ['11', '22', '33', '44']
v = li.copy()                       # 浅拷贝   
print(v)

 

3、

li = ['11', '22', '33', '44','22']
v = li.count('22')                  #  计算‘22 ’出现的次数
print(v)

 

4、

li = [11,22,33,22,44]
v = li.index(22)                # 寻找当前元素的索引,找到第一个之后就不在找了
print(v)
v = li.index(22,2,4)            # 可加起始位置
print(v)
v = li.insert(0,99)             # 在指定位置0, 插入指定元素99
print(v)

5、

li = [11,22,33,22,44]
li.reverse()                        # 将当前列表进行反转
print(li)
li.sort()                           # 排序,从小到大排序
print(li)
li.sort(reverse=True)               # 从大到小排序
print(li)

 

6、删除

li = [11,22,33,22,44]
v = li.pop()                # 默认删除最后一个元素
print(li)                   # 获取删除后的列表
print(v)                    # 获取删除的值
li.pop(1)                   # 删除指定索引的元素
print(li)
print(li.pop(1))

li = [11,22,33,22,44]
li.remove(22)               # 删除指定的元素
print(li)

li.clear()                  # 清空列表
print(li)

 

li = ['gou', 2, 0, True, [1, 2, 3], 'gou long hui']

del li  # 在内存级别删除
print(li)  # NameError: name 'li' is not defined
del li[1]  # 按照索引删除
print(li)
del li[:-1]  # 按照索引删除
print(li)
del li[:-1:2]  # 可加步长
print(li)

四、元祖  tuple

类:元祖   按照元祖类创建的对象 tu ;       #  元祖是对列表的二次加工;  小括号括起来,最后面加一个逗号“,”;

注:元祖(一级元素)不可被修改,不能被增加或者删除;   有序的;

tu = (111,'gou',(,),[()],True,33,44,)

 常用方法:

1、索引取值:v = tu[0]

2、切片取值:v = tu[0:2]

3、支持for循环

4、相互转换:s li tu

v = tuple(s)   v = tuple(li)

v = list(tu)     v = '_'.join(tu)( 只有字符串时)

一般方法:

count  : v = tu.count(33)    获取元素33  在 tu中出现的次数

index   :   v = tu.index(111)   获取元素 111  在tu中的索引    左边优先

五、字典 dict

1 基础数据类型之一,{} 以键值对的形式存储数据。
 2     dic = {'name':'Laonanhai',
 3             'age':45,
 4             'name_list':['反面教材','俊俊',....]
 5             }
 6     以key:value形式,映射,存储的大量的关系型数据。
 7     数据类型的分类:
 8         可变(不可哈希hash):list,dict,set, list = [11,222,333]
 9         不可变(可哈希hash):str,tuple,int,bool   name = 'gou'
10         容器类:
11             容器类的数据类型:list,tuple,dict, l1 = [11,True,'gou',[22,33,44]]
12             非容器类的数据类型:str,int,bool。 s1 = '[11,22,33]'
13     字典的key必须是不可变的数据类型,是唯一的,
14         hash算法:
15             字典的键通过hash表转换成数字,采用二分查找查询数字。每次取中间的数向两边去查找。
16     字典的value可以是任意数据类型。
17     字典的查询速度非常快,存储的大量的关系型数据。
18     字典在python3.5包含3.5之前都是无序,但3.6之后是有序的。

 

对象   info = {'k1':'v1','k2':'v2'}

info = {'k1':18,

           'k2':true

           'k3':[11,22,33,{'kk1':'vv1','kk2':'vv2'},'kk3':(11,22,)]

           'k4':(11,22,33)}

注意: value  可是任意值

             key    列表,字典,不可为key ;bool值  True  默认=1   False  默认=0,若是重复是  则不显示

1、字典是无序的

2、取值:据K取值,即据索引取到指定元素 ,但不可使用切片(因为字典是无序的)。

3、删除:据K删除      del info ['k3']['kk1']

4、支持for循环 

for item in info         ==       for item in into.keys      默认循环‘k’

  print(item)   

for item in info.values        循环‘values’

  print(item)

for (k,v) in info.items()       循环K,V

  print(k,v)

5.v = dic.get('k1','111')    根据k获取值,key不存在时,可以可指定输入结果 111   不指定值时,默认结果为none

   print(v)

6 、v = dic.pop('k1',90)     找不到K值时,不报错,可指定 90  结果    注意:不写k时,默认删除最后一个

      print(dic,v)   其中v 为删除的值   

      dic.popitem  随机删除

7、v = dic.setdefault('k',123)   

   设置值,若key以存在,则不设置,获取当前k对应的值; 不存在时,设置并获取当前K对应的值

8、dic.uptade({'k1':'1234','k3':'3333'})    更新字典,若K以存在,则更新其V,若K不存在,加一个进去。

python 小数点变百分数 python小数转换为百分数_python 小数点变百分数_04

python 小数点变百分数 python小数转换为百分数_python 小数点变百分数_05

1 dic = {'name': 'alex', 'age': 44, 'gender': '男'}
 2 # 增
 3 # dic['name'] = 'gou'  # 有则覆盖
 4 # dic['hobby'] = 'girl'  # 无则添加
 5 # print(dic)
 6 # dic.setdefault('name', 'long')
 7 # print(dic.setdefault('name', 'long'))   # alex  # 返回其对应的value
 8 # print(dic)  # {'name': 'alex', 'age': 44, 'gender': '男'} 有则不变
 9 # dic.setdefault('hobby', 'girl')  # girl  返回其对应的value
10 # print(dic.setdefault('hobby', 'girl'))  # {'name': 'alex', 'age': 44, 'gender': '男', 'hobby': 'girl'} 无则添加
11 # print(dic)
12 
13 # 删
14 # print(dic.pop('name'))  # 返回删除的value
15 # print(dic)
16 # print(dic.popitem())  # 返回('gender', '男') 随机删除
17 # print(dic)  # {'name': 'alex', 'age': 44}
18 # dic.clear()
19 # print(dic)
20 # del dic
21 # print(dic)  # NameError: name 'dic' is not defined
22 # del dic['name']
23 # print(dic)
24 
25 # 改
26 # dic['name'] = 'GouLongHui'
27 # print(dic)
28 # dic1 = {'k1': '22', 'k2': '66'}
29 # dic2 = {'k1': '11', 'k3': '88'}
30 # dic2.update(dic1)
31 # print(dic2)  # {'k1': '22', 'k3': '88', 'k2': '66'}
32 
33 # 查
34 # print(dic['name'])
35 # # print(dic['name1'])  # 找不到报错
36 # print(dic.get('name'))
37 # print(dic.get('name1', '不存在键'))
38 # print(dic.keys(), type(dic.keys()))  # <class 'dict_keys'>
39 # print(list(dic.keys()), type(list(dic.keys())))  # 相互转化
40 # print(dic.values(), type(dic.values()))  # <class 'dict_values'>
41 # print(str(dic.values()), type(str(dic.values())))  #
42 # print(dic.items(), type(dic.items()))  # <class 'dict_items'>
43 # print(list(dic.items()), type(list(dic.items())))
44 # for i in dic.keys():
45 #     print(i)
46 # for i in dic.values():
47 #     print(i)
48 # for i, v in dic.items():
49 #     print(i, v)

dic的增删改查

dic = dict.fromkeys('abc', 666)  # 生成一个字典,迭代着去将第一个参数中的元素拿出来,当做字典的key,
print(dic)  # {'a': 666, 'b': 666, 'c': 666}
dic1 = dict.fromkeys([11, 22, 33], 'gou')
print(dic1)  # {11: 'gou', 22: 'gou', 33: 'gou'}

六、BOOL值

注意:转换为bool值  :  bool()

     假:  空字典,空列表,空元祖,空字符串,0

其余均为真。

 总结:

可变:列表,字典

不可变:字符串,数字,元祖                  验证方式:name = 'gou'  id(name)  可查看其储存ID

 

访问顺序:①:直接访问:数字

                  ②:顺序访问(即索引):字符串、列表、元祖

                  ③:映射:字典

存储元素个数:

                      容器类型:列表、元祖、字典

                       原子: 数字、字符串

七、集合:   s = {,,,}

定义:①:不同元素组成

           ②:无序

           ③:集合中的元素必须是不可变类型:数字、字符串、元祖

方法:
# 集合:
# s = set('hello')            # 定义一个集合
# print(s)

# s = {1,2,3,4,5,'6'}
# s.add('2')                  # 添加一个元素
# print(s)

# s = {1,2,3,4,5,'6'}
# s.clear()                   # 清空列表
# print(s)

# s = {1,2,3,4,5,'6'}
# s1 = s.copy()                 # 复制
# print(s1)

# s = {1,2,3,4,5,'6'}
# s.pop()                         # 随机删
# print(s.pop())                 # 有返回值,删除那个返回那个
# print(s)

# s = {1,2,3,4,5,'6'}
# s.remove('6')               # 指定元素删除,找不到时报错
# s1 = s.discard('6')         # 指定元素删除,找不到时不报错,返回值为None

# v = ['aaa','bbb','ccc']
# v1 = ['aaa','bbb','eee']
# s = set(v)
# s1 = set(v1)
# print(s,s1)
# print(s.intersection(s1))   # 交集
# print(s&s1)                 # 交集
#
# print(s.union(s1))          # 并集
# print(s|s1)                 # 并集
#
# print(s.difference(s1))     # 差集
# print(s1.difference(s))     # 差集
# print(s-s1)
#
# print(s.symmetric_difference(s1))   # 交叉补集
# print(s^s1)                         # 交叉补集
#
# s.difference_update(s1)             # 差集之后 将得到的集合赋值给给s (即更新)
# print(s)

# s1 = {1, 2}
# s2 = {1, 2, 3, 4}
# print(s1.issubset(s2))   #    结果为 True   s1是s2的子集
# print(s1 < s2)           # 子集
# print(s2.issuperset(s1))  #   True   s2是s1的父集
# print(s2 > s1)            # 父集 (超集)
# s1.update(s2)    # 更新多个值
# s1.add(5)  # 更新一个值
# s1.union(s2)     # 不更新
# print(s1)

# s = set( )        # 定义可变的集合
# s = frozenset()   # 定义不可变的集合

# names = ['gou','glh','gou','wc']          #  简单去重
# s = set(names)
# print(s)
# names = list(s)

八、字符串格式化

字符串格式化:
一:百分号方式
#  %s 均可接收    %d 只能接收数字类型   %f 浮点数(小数)
# msg = 'i am %s my hobby is %s' %('glh','gou')     # %.2s代表截取字符串的长度为2
# print(msg)

# tpl = 'percent%.2f' %(99.895652)        #2代表保留2位小数
# print(tpl)
# tpl = 'percent%.2f %%'%(99.895652)      # 打印百分比
# print(tpl)
# 
# tpl = 'i am %(pp).2f' %{'pp': 123.456}   #  后边为字典
# print(tpl)
# 
# msg = 'i am %(name)+60s %(age)d'%{'name': 'glh','age': 23}      # +号表示右对齐并补齐60位
# print(msg)
# msg = 'i am \033[46;1m%(name)+60s\033[0m my hobby is gou ' %{'name': 'glh'}        # 加颜色
# print(msg)
# 
# print('root','x','x','o',sep=':')  # 分别得到结果 后拼接成一条记录    结果为  root:x:x:o
 
# 二 format 字符串格式化

# tpl = 'i am {},age{},{}'.format('glh','23','gou')
# print(tpl)
# tpl = 'i am {2},age{1},{0}'.format('glh','23',['gou',23])      # 相当于按照后面后面元祖索引取值
# print(tpl)

# #  .format('seven',18) == .format(*['seven',18])
# #  .format('seven',18) == .format(**{'seven',18})

# tpl = 'numbers: {:b},{:o},{:d},{:x},{:X},{:%}'.format(15,15,15,15,15,15.89632)
# print(tpl)
# # 结果为numbers: 1111,17,15,f,F,1589.632000%   上述分别代表打印二进制 八进制 十进制 十六进制小写 十六进制大写 转换为百分数,默认保留6位
# 第三种
s = 'hello'
s1 = 'sss'
s3 = 'lao'
print(f'你好{s1}{s3}{s}')  # 前边加一个f,只有python3.6以上的版本支持

 

学无止境!