Python之路-变量和基本数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路-变量和基本数据类型相关的知识,希望对你有一定的参考价值。

一、注释

注释的作用:

  增加程序的可读性

  作为调试用

  提高团队的合作效率

注释的分类

  1、单行注释

  以井号(#)开头,右边的所有内容当做说明

  2、多行注释

  以三对单引号(’’’注释内容’’’)将注释包含起来

其他语法

Python的语法比较简单,采用缩进的方式。

# print absolute value of an integer: 
a = 100 
if a >= 0:     
	print(a) 
else:     
	print(-a)

  上面代码中,以‘# ’是注释的标识符,可以记录当前代码所代表的意义,解释器会自动忽略这部分内容。   

  当语句以‘:’结尾时,缩进语句视为代码块。   

  在Python中,通常我们以4个空格的缩进来进行区分。可以在每句结束之后加一个‘;’号。通常在Python中,默认以换行为新的一行,若想在一行输入多句语句,一定要加‘;’,否则报错。

  注意: 由于Python采用缩进的语法,在你复制,粘贴语句时,一定要注意,重新检查当前代码的缩进格式。 在Python中,对大小写十分敏感,如果大小写错误,会报错。

 

二、变量

 标识符

  什么是标识符
  标识符是自己定义的,如变量名 、函数名等

标识符命名规则

  1、只能包含字母、数字和下划线。变量名可以以字母或者下划线开头。但是不能以数字开头。

  2、不能包含空格,但可以使用下划线来分隔其中的单词。

  3、不能使用Python中的关键字作为变量名

  4、建议使用驼峰命名法,驼峰式命名分为大驼峰(UserName)。和小驼峰(userName)。

常用关键字
  系统有一些常用关键字不可以用来当做标识符。

在Python中查看




import keyword print(keyword.kwlist)

[\'False\', \'None\', \'True\', \'and\', \'as\', \'assert\', \'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\']

 

三、数据类型

Number

  int:

  Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样。

  float:

  浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。

  complex:

  一个实数和一个虚数的组合构成一个复数。

  bool:

  bool值是特殊的整型,取值范围只有两个值,也就是True和False。

 字符串

     字符串就是一系列任意文本。Python中的字符串用单引号或者双引号括起来,同时可以使用反斜杠(\\)转义特殊字符。

  单引号(’’)和双引号("”)本身只是一种表示方式,不是字符串的一部分,因此,字符串’hello’只有h,e,l,l,o这五个字符。如果’本身也是字符的话,那么就可以用””括起来,比如”I’m OK” 当中包含了一个 ’ 。如果字符串内部包含 ’ 或者 ” ,但是又想当成普通字符串处理怎么办?这个时候就要用转义字符(\\)来标识

  操作字符串

    截取字符串语法:变量[开始下标:结束下标]

  加号(+)是字符串的连接符

    星号(*)表示复制当前字符串

 

  格式化输入

  通过它能够完成从键盘获取数据,然后保存到指定的变量中 input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存

  格式化输出

  常用的格式符号:%[(name)][flags][width].[precision]typecode

       

  字符串下标与切片

  下标就是编号,字符串实际是字符的组合。

  声明一个字符串str1值为:abcd

   

    切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

    切片的语法:[起始:结束:步长]

    

  字符串常用函数

       

        

        

        

        

 

字符串练习:

# -*- coding:utf-8 -*-

\'\'\'
    格式化输出
\'\'\'

# name = \'joe\'
# age = 18
# address = \'上海\'
# print(\'大家好我叫%s,我今年%d岁,我来自%s\'%(name,age,address))
# print(\'大家好我叫%s\'%name)

\'\'\'
    字符串常用函数
\'\'\'
#find
# str = \'I love python\'
# print(str.find(\'o\'))#返回的是该字符的位置
# print(str.find(\'w\')) #没有的化返回-1

#index
# str = \'I love python\'
# print(str.index\'o\'))#返回的是该字符的位置
# print(str.index(\'o\')) #没有的化返回报错信息

#count
# str = \'I love python\'
# print(str.count(\'o\'))#返回的是该字符出现的次数
# print(str.index(\'o\',2,6)) #在指定位置查找出现的次数

#replace
# str = \'I love python\'
# print(str.replace(\'p\',\'P\'))#替换并输出  I love Python


#split
# str = \'I love python o\'
# print(str.split(\' \'))#指定字符切分 [\'I\', \'love\', \'python\', \'o\']
#capitalize # str = \'i love python o\' # print(str.capitalize()) #将字符串的首字母大写I love python o #capitalize # str = \'i love python o\' # print(str.title()) #将字符串中每个单词的的首字母大写I Love Python O #startswith # str = \'i love python o\' # print(str.startswith(\'i\')) #检测字符串是否以指定的字符开头 是则返回True 否则False #swith # str = \'i love python o\' # print(str.endswith(\'p\')) #检测字符串是否以指定的字符结尾 是则返回True 否则False #upper # str = \'i love python o\' # print(str.upper()) #所有字母转化为大写 #lower # str = \'I LOVE PYTHON O\' # print(str.lower()) #字符串转化为小写 #ljust # str = \'hello\' # print(str.ljust(10)) #返回一个原字符串左对齐,并使用空格填充至长度width的新字符串hello #rjust # str = \'hello\' # print(str.rjust(10)) #返回一个原字符串右对齐,并使用空格填充至长度width的新字符串 hello #center # str = \'hello\' # print(str.center(10)) #返回一个原字符串居中,并使用空格填充至长度width的新字符串 hello #lstrip # str = \' hello\' # print(str.lstrip()) #除去字符串左边的空白字符hello #rstrip # str = \'hello \' # print(str.rstrip()) #除去字符串右边的空白字符hello #partition # str = \'hello world hello china\' # print(str.partition(\'world\')) #可以将字符串以str进行分割成三部分 str前,str,str后(\'hello \', \'world\', \' hello china\') #join # str = \'hello world hello china\' # str1 = \'-\' # print(str1.join(str)) #str中每个字符后面插入str1,构造出新的字符串h-e-l-l-o- -w-o-r-l-d- -h-e-l-l-o- -c-h-i-n-a #isspace # str = \'hello world hello china\' # print(str.isspace()) #如果str中只包含空格,则返回true 否则返回false #isalnum # str = \'hello\' # print(str.isalnum()) #如果str中所有字符都是字母或者数字,则返回true 否则返回false #isdigit # str = \'8765\' # print(str.isdigit()) #如果str中只包含数字,则返回true 否则返回false #isalpha str = \'hello china\' print(str.isalpha()) #如果str中所有字符都是字母,则返回true 否则返回false

列表

  列表写在[ ]内,元素之间用逗号隔开:

  注意

  List写在方括号之间,元素用逗号隔开

  和字符串一样,List可以被索引和切片

  List可以使用加号(+)操作进行拼接

  List中的元素是可以被改变的

列表的访问:

  列表是由一系列按特定顺序排列的元素组成,列表能存储多种类型的数据,其中的元素之间可以没有任何关系

  列表索引

     

列表的操作:

  修改列表元素

  修改列表元素的语法和访问列表元素的语法类似,指定列表名和要修改元素的索引,再指定新值

  以下列表名为:students,需要将jack修改为tom

 

  添加列表元素1:

  在列表末尾追加元素:使用append()方法将元素追加到列表的末尾。也可以用append()方法来动态创建列表

  以下列表名为:students,需要将‘篮球添加到列表的末尾’,使用append()方法

      

  添加列表元素2:

  在列表中插入元素:通过指定新元素的索引和值,使用insert()方法可以在列表的任何位置添加新元素

  以下列表名为:students,需要将‘音乐插入到男的后面,使用insert()方法

     

  删除列表元素

  使用pop()方法删除元素:pop方法用于移出列表中的一个元素(默认是最后一个元素),可以指定元素索引,并且返回该元素的值

  使用del语句删除元素:如果知道要删除的元素在列表中的位置,可使用del语句删除元素,元素一旦被删除之后就再无法访问

  使用remove()方法删除元素:当不知道元素索引,只知道元素值的时候,使用remove()方法删除元素

  查找列表元素

  所谓的查找,就是看看指定的元素是否存在

  in(存在),如果存在那么结果为true,否则为false

  not in(不存在),如果不存在那么结果为true,否则false

  Python列表函数

      

       

       

列表练习:

# -*- coding:utf-8 -*-

#列表:是由一系列特定顺序排列的元素组成
      # 列表可以存储多种类型的数据,
      # 元素之间没有任何关系

\'\'\'
    访问列表
\'\'\'

# list01 = [\'jack\',\'jane\',\'joe\',\'black\',\'\']
# print(list01[2])  #通过下标访问

#二维列表
# list02 = [\'jack\',\'jane\',[\'leonado\',\'joe\'],\'black\',\'\']
# print(list02[2])
# print(list02[2][0]) #获取leonado

# list02 = [\'jack\',\'jane\',[\'leonado\',\'joe\'],\'black\',\'\']
# list02[0] = \'lili\'   #通过下标获取到元素,并且给其赋新的值
# list02[2][0] = \'susan\'
# print(list02)

#列表是一个可变的类型数据,允许我们对其里面的数据进行修改

\'\'\'
    列表的操作-追加
       append列表末尾追加
       insert指定位置插入
\'\'\'

#append
# list02 = [\'jack\',\'jane\',\'joe\']
# list02.append(\'susam\')
# print(list02)

#insert
# list02 = [\'jack\',\'jane\',\'joe\',\'black\']
# print(\'插入之前\')
# print(list02)
# print(\'_\'*20)
# #指定位置插入
# list02.insert(1,\'susan\')
# print(list02)

\'\'\'
    删除元素
       pop默认从最后删除,还可以通过指定索引删除
       del通过指定位置删除
       remove通过值删除
# \'\'\'
# list02 = [\'jack\',\'jane\',\'joe\',\'black\']
# print(\'删除之前\')
# print(list02)
# print(\'_\'*20)
# print(list02.pop())  #执行删除操作  并且返回删除的元素
# print(list02)
# print(\'继续删除\')
# print(\'_\'*20)
# print(list02.pop(1))  #执行删除操作  并且返回删除的元素
# print(list02)
#del # list02 = [\'jack\',\'jane\',\'joe\',\'black\'] # print(\'删除之前\') # print(list02) # print(\'_\'*20) # del list02[1] #指定索引删除 彻底删除 # del list02 #默认将整个列表 从内存中彻底删除, # print(list02) #remove 在不知道下标,但是知道具体值的时候通过值来删除 # list02 = [\'jack\',\'jane\',\'joe\',\'black\'] # print(\'删除之前\') # print(list02) # print(\'_\'*20) # list02.remove(\'jane\') #通过元素的值进行删除 # print(list02) \'\'\' 查找元素是否存在 in not in \'\'\' # list02 = [\'jack\',\'jane\',\'joe\',\'black\'] # name = \'jack\' # name2 = \'lee\' # print(name in list02) # print(name2 in list02) # list02 = [\'jack\',\'jane\',\'joe\',\'black\'] # name = \'jack\' # name2 = \'lee\' # print(name not in list02) # print(name2 not in list02)
# -*- coding:utf-8 -*-

\'\'\'
    列表函数
\'\'\'

# list05 = [\'jack\',\'jane\',\'joe\',\'black\',\'12\']
# #查看列表长度 返回列表元素个数
# print(len(list05)) #类似于一个方法,将参数传入

# list05 = [\'jack\',\'jane\',\'joe\',\'black\'] #如果是字符类型,取字母靠后的
# list05 = [1,52,23,58,100] #默认数值输出结果,取最大值。
# print(max(list05)) #类似于一个方法,将参数传入


# list05 = [\'jack\',\'jane\',\'joe\',\'black\'] #如果是字符类型,取字母靠迁的
# list05 = [1,52,23,58,100] #默认数值输出结果,取最小值。
# print(min(list05)) #类似于一个方法,将参数传入

# list05 = [\'jack\',\'jane\',\'joe\',\'black\',\'joe\',\'jane\']
# print(list05.count(\'joe\')) #统计元素出现的次数


# list05 = [\'jack\',\'jane\',\'joe\',\'black\']
# list06 = [\'aaa\',\'bc\']
# list05.extend(list06) #扩展列表 在一个列表末尾一次性追加一个新列表 传入参数为一个列表 类似于单个元素使用append追加
# print(list05.extend(list06)) #必须先追加再输出
# print(list05)


# list05 = [\'jack\', \'jane\', \'joe\', \'black\',\'joe\']
# print(list05.index(\'joe\')) #从一个列表中找出某一个值第一次出现的位置的索引

# list05 = [\'jack\', \'jane\', \'joe\', \'black\',\'joe\']
# list05.reverse() #对列表中的元素做反向旋转
# print(list05)
# print(list05.reverse()) #不可以在输出里面做旋转,必须先反向旋转再单独输出  和追加extend一样

# list06 = [2,3,5,9,6,12,40]
# list06.sort()  #对列表进行排序
# \'print(list06.sort()) #先做排序  在输出
# print(list06)

# list05 = [\'jack\', \'jane\', \'joe\', \'black\',\'joe\']
# list05.clear() #用于清空列表
# print(list05)

# list05 = [\'jack\', \'jane\', \'joe\', \'black\',\'joe\']
# list07 = list05.copy() #复制列表
# print(list07)

#
# list = [\'lee\',\'jone\',\'jack\']
# list.insert(0,\'teacher\')
# list.insert(list.__len__(),\'bzr\')
# print(list)
# # print(list.__len__())
# print(list[1][3])

 

元组

  元祖写在小括号内,元素之间用逗号隔开

  注意:

  tuple的元素不可改变,但是可以包含可变的对象,比如list

  构造包含0个或者1个元素的元祖有特殊语法规则:

  tuple1=() #空元祖

  tuple2=(1,) #一个元素,需要在元素后添加逗号    

      

  访问元组:

  元组索引:以下元组成名为students,要访问元祖中的tom

       

  删除元组

  元祖和列表不一样,元祖中的元素值是不允许被单独修改和删除的,但是我们可以使用del语句来删除整个元祖

    删除元祖语法: del 元组名

      

  元组截取

  元组的元素虽然不能够被改变,但是元组也是一个序列,也可以通过索引去访问和截取元组中指定位置的元素

  以下元组名为:students,需要截取students的前三个元素

     

  多维元组

  多维元祖就是元祖中的元祖,元祖中的元素可以是一个新的元祖

  以下列元祖为:students,需要获取元祖中的tom

       

  Python元祖函数

      

元祖练习:

# -*- coding:utf-8 -*-

\'\'\'
    Python 里面的元祖和列表类似,不同之处在于元祖中的元素不能被修改,而列表中的元素可以被修改
    也可以进行分片和连接。元祖使用小括号,列表使用方括号。
\'\'\'

\'\'\'
    元祖 不可修改 提供了删除del 彻底删除(没法通过下标删除)
    元祖中的元素虽然不能被改变,但是元祖也是一个序列,也可以通过索引去访问和截取元祖指定位置的元素
    多维元祖:元祖中的元祖
\'\'\'
# tup01 = (1,2,3,4,5)
# print(tup01[3])

\'\'\'
    元祖函数:
\'\'\'

# tup01 = (1,2,3,4,5)
# print(len(tup01)) #计算元祖中元素的个数

# tup01 = (1,2,3,4,5)
# print(max(tup01)) #计算元祖中最大的元素

# tup01 = (1,2,3,4,5)
# print(min(tup01)) #计算元祖中最小的元素

# list = [\'jack\',\'joe\',\'black\']
# print(type(list))
# print(tuple(list)) #将列表转化为元祖
# print(type(tuple(list)))


# tup01 = (1,2,3,4,5)
# print(list(tup01)) #将元祖转为列表  可以实现对元祖的修改

 

字典

  字典是一种映射类型,使用{ }表示,他是一个无序的键(key)值(value)对集合

  字典是另外一种可变容器类型,且可以存储任意类型对象。

  列表元素进行修改的话,通过索引进行修改,如果当前元素的顺序发生改变,此时还需要修改索引才能成功完成元素的修改.

  字典既能存储多个数据,又能很方便准确的定位元素呢

  字典创建语法:字典的创建使用{},每个键值(key=>value)对用冒号(:)分割,每对之间用逗号(,)分割。

      

  访问字典

  字典中根据键访问值,可以指定自点名和放在方括号内的键。以下字典想要获取学员姓名。

   字典:students={\'name\':\'tom\',\'age\':18,\'sex‘:’男\'}

      

  修改字典元素

  字典元素也是可以修改的,通过key找到具体元素之后,给一个新的元素值即可。

       如:以下字典将学员的年龄修改为20

  字典:students={\'name\':\'tom\',\'age\':18,\'sex‘:’男\'}

      

  添加元素

  动态的向字典中添加元素的时候,只要添加的键在字典中不存在,就会新增这个元素。

  在以下字典中添加一个住址信息

  字典:students={\'name\':\'tom\',\'age\':18,\'sex\':\'男\'}

     

  删除字典元素

  使用del语句删除元素:del既可以删除指定的字典元素(列表也可以指定),也可以删除整个字典,如果不指定key,代表删除整个字典。  

       语法如下:

  del 字典名[key]

  使用clear()方法清空整个字典:被清空的字典最后会剩下一个空的字典在,而用del删除的字典在程序当中就不存在了。语法如下:

  字典名.clear()

       注意:

  字典是一种映射类型,它的元素是键值对

  键(key)必须使用不可变类型(字符串、数值、元组),在同一个字典中,键必须是唯一的。

  创建空字典使用{ }

 

  字典函数:

     

  字典方法:

      

         

       

 

字典练习:

# -*- coding:utf-8 -*-

\'\'\'
    字典是用户自己创建索引 通过前面的下标操作
\'\'\'
# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# print(dict)
#访问
# print(dict[\'name\'])

#修改
# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# dict[\'name\'] = \'jack\'
# print(dict)

#添加元素
# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# dict[\'hobby\'] = \'足球\'
# print(dict)#多次运行发现输出的顺序不一样,不一定在最后

#删除
# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# del dict[\'address\'] #删除某一个
# del dict #整个字典彻底从内存删除 表名都不存在了
# print(dict)

# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# dict.clear()
# print(dict) #{}  清空所有元素

\'\'\'
    字典函数
\'\'\'
# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# print(len(dict)) #计算字典中元素的个数

# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# print((str(dict)) #输出字典,以可打印的字符串表示。转为str类型
# print(type(str(dict)))

#dict.fromkeys(seq[,]value)
#创建一个新的字典,以seq中的元素作为字典的前半部分的key值,value为字典所有键对应的默认初始化的值
# seq = (\'name\',\'age\',\'sex\')
# dict01 = dict.fromkeys(seq)
# print(\'新字典为:\',dict01)
# dict02 = dict.fromkeys(seq,\'jack\') #对vlue赋值
# print(\'新字典为:\',dict02)


#dict.get(key,default=None)
#返回指定键的值   如果不在字典里面返回default值
# dict = {\'name\':\'job\',\'age\':18,\'address\':\'上海\'}
# print(\'age键的值为:\',dict.get(\'age\'))
# print(\'sex键的值为:\',dict.get(\'sex\')) #没有返回默认none
# print(\'sex键的值为:\',dict.get(\'sex\',\'男\')) #字典里面没有可以手动指定
# print(\'ddress键的值为:\',dict.get(\'ddress\',\'北京\'))#如果建值字典里面有,但是自己手动指定则已手动指定的输出

#key in dict
#如果键在字典dict里面返回true,否则返回false
# dict = {\'name\':[\'job\',\'tom\'],\'age\':18,\'address\':\'上海\'}
# if \'age\' in dict:
#     print(\'键age在字典里面存在\')
# else:
#     print(\'键age不在字典里面存在\')

# dict.keys()
# 以列表形式返回字典里面所有的键 值
# dict = {\'name\':[\'job\',\'tom\'],\'age\':18,\'address\':\'上海\'}
# print(dict.keys()) #dict_keys([\'age\', \'address\', \'name\'])
# print(dict.values()) #dict_values([18, [\'job\', \'tom\'], \'上海\'])

# dict = {\'name\':[\'job\',\'tom\'],\'age\':18,\'address\':\'上海\'}
#以键值对形式保存在列表中
# print(dict.items()) #dict_items([(\'address\', \'上海\'), (\'age\', 18), (\'name\', [\'job\', \'tom\'])])

 

集合(无序)

 集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法。

浅拷贝与深拷贝

  可变(mutable)参数和不可变(immutable)参数

  Python中string、tuple和number是不可变对象,而dict、list等是可变对象;不可变对象在进行重新赋值的时候,实际上是将原始值丢弃,将变量指向一个新值;可变对象的可变性实质上是指更改可变对象中的子对象,比如list中的item元素的更改。

直接赋值:其实就是对象的引用(别名)。

代码:

 

#直接赋值
# a = [1,2,3]
# b = a
# print(a)
# print(b)
# print(id(a))#通过id查看变量在内存中的地址
# print(id(b))
# a[0] = 5
# print(a)
# print(b)

 

 

 

浅拷贝:不拷贝子对象(针对子对象中的item),当子对象进行更改的时候,原始对象也会改变

常见操作:列表的切片[:]操作、list()操作,字典的copy()函数、copy模块的copy()函数(两个一模一样的双胞胎)

 

# #浅拷贝 切片  只拷贝父类
# a = [1,2,3]
# b = [11,22,33]
# c = [111,222,333]
#
# list01 = [a,b,c]
# print(id(list01))
# list02 = list01[:]
# #查看list01和list02
# print(list01)
# print(list02)
# #检查List01和list02在内存中的地址
# print(\'_\'*20)
# print(id(list01))
# print(id(list02))
#
# #修改一下
# a[0] = 5
# print(a)
# print(\'_\'*20)
# print(list01)
# print(list02)#一起改变  因为都指向了同一个子元素

深拷贝:会拷贝子对象,当对原始对象子对象进行更改的时候,原始对象不会改变。

常见操作:copy模块的deepcopy()函数

练习:

 

#深拷贝 引入copy模块  从父到子 递归一起拷贝了
import copy
a = [1,2,3]
b = [11,22,33]
c = [111,222,333]

list01 = [a,b,c]
print(id(list01))
# list02 = list01[:]
list02 = copy.deepcopy(list01)
#查看list01和list02
print(list01)
print(list02)
#检查List01和list02在内存中的地址
print(\'_\'*20)
print(id(list01))
print(id(list02))

# 修改一下
a[0] = 5
print(a)
print(\'_\'*20)
print(list01)
print(list02)#没有影响 子元素一起复制 list01  list02  各自都有自己的子元素

 

四、运算符

  算术运算符

  赋值运算符

  比较运算符

  逻辑运算符

  位运算符

 

算术运算符

以下假设变量a=10,变量b=20

赋值运算符

 

 比较运算符

 以下假设变量a=10,变量b=20

逻辑运算符

位运算符

a = 60 b = 13

练习:

# -*- coding:utf-8 -*-

\'\'\'
    int
\'\'\'

# a = 1
# print(type(a)) #type是python里面用来查看数据类型的函数

\'\'\'
    boolean
    True 不为零 False 为零
\'\'\'
# a = True
# print(type(a))

\'\'\'
    字符串 string
    一般使用单引号 或者双引号
\'\'\'
# a = \'刘德华\'
# name= "黎明"
# num = \'1\'
# num2 = \'True\' #带上引号的都是字符串
# print(type(a))
# print(type(name))
# print(type(num))

# str1 = \'"ni hao"\' #双引号成了字符串本身
# print(str1)

# str2 = "\'你 好\'" #单引号成了字符串本身
# print(str2)

# str3 = \'aaa\\\'bbb\' #最外面的单引号是一对 里面的单引号通过\\转义
# print(str3)

#字符串截取
# str = \'abcdefg\'
# print(str)
# print(str[1:5]) #含头不含尾
# print(str[-1])  #输出g 从最后开始输出
# print(str[2:])  #默认输出到最后
# print(str[:2])
# print(str[1:5:2]) #截取1到5 2是步长 隔一个拿取第二个
# print(str[1:5:1]) #等价于print(str[1:5]) 一个一个拿取
# print(str[::-1])  #反向输出
# print(str[5:2:-1])


#运算符
#+
# num1 = 10
# num2 = 3
# print(num1 + num2)
# print(num1 - num2)
# print(num1 * num2)
# print(num1 / num2)
# print(num1 % num2)
# print(num1 // num2) #返回商的整数部分,
# print(num1 ** num2) #幂 num1的num2次幂

\'\'\'
    赋值运算
\'\'\'
# str = \'a\'

# num = 1
# num += 1 #num = num + 1 先加
# print(num)

# num = 10
# num -= 1 #num = num - 1 先减
# num *= 2 #num = num * 2
# num /= 2   #num = num / 2
# num %= 2 #num = num % 2
# num **= 2 #num = num ** 2
# num //= 2 #num = num // 2
# print(num)


\'\'\'
    比较运算
\'\'\'
# a = 10
# b = 5
# print(a == b)
# print(a != b)
# print(a > b)
# print(a < b)
# print(a >= b)
# print(a <= b)

\'\'\'
    逻辑运算
\'\'\'
#and
# a = 10
# b = 5
# print(a > b and a < b) #两个条件为真,则为真,否则为假
# print(a > b or a < b) #两个条件有一个为真,则为真
# print(not a > b) #非

# str = \'\' #空的字符串返回 bool False
# str = [] #空的列表返回 bool False
# str = () #空的元组返回 bool False
# str = {} #空的字典返回 bool False
# str = 0 #0 返回 bool False
# print(bool(str))

\'\'\'
    位运算
\'\'\'
a = 4
b = 2
\'\'\'
十进制:1,2,3,4,5,6,7,8,9,10,11
二进制:0000,0001,0010,0011,0100
    0000 0100 表示4
    0000 0010    2
 $  0000 0000    0 #对应位同时为1则为1 否则为0   
 |  0000 0110    6
\'\'\'
#按位与运算符 &
#参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
# print(a & b ) #0

#按位或运算符 |
#参与运算的两个值,只要对应的两个二进制有一个为1,则该位的结果为1
# print(a | b)  #6


#按位异或运算符 ~
#参与运算的两个值,当对应的两个二进制相异时,则该位的结果为1
# print(a ^ b)

#按位取反运算符~
#对数据的每个二进制取反,即把1变为0,把0变为1
# print( ~ a ) # -4-1  -5 (取负数 再减1)

#左移运算符 <<
#运算数的各二进位全部左移若干位,由"<<"右边的数字决定移动的位数
#高位丢弃,低位补0


#右移运算符 >>
#把“ >>”左边的运算数的各二进位全部右移若干位,由">>"右边的数字决定移动的位数

  

以上是关于Python之路-变量和基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Go之路二:基本语法(变量常量和数据类型)

python之路

Python之路第五篇:Python基本数据类型

Python之路,day1

Python之路番外:PYTHON基本数据类型和小知识点

Python学习之路--02变量与运算符