python 数据类型和变量初识

数据类型
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:
1、数字,包含整数和浮点数.
int (整数)
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
float (浮点数)
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
2、布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来:
>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False
布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True:
>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> 5 > 3 and 3 > 1
True
or运算是或运算,只要其中有一个为True,or运算结果就是True:
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> 5 > 3 or 1 > 3
True
not运算是非运算,它是一个单目运算符,把True变成False,False变成True:
>>> not True
False
>>> not False
True
>>> not 1 > 2
True
3、空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
4、字符串(str)
字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!'
万恶的字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
字符串格式化输出
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
如下实例:
#!/usr/bin/python

print("My name is %s and weight is %d kg!" % ('Zara', 21))

以上实例输出结果:
My name is Zara and weight is 21 kg!

PS:  %s是格式化字符串; %d是格式化整数; %f是格式化 浮点数.

字符串常用功能:
  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片

5.列表(list)

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];
与字符串的索引一样,列表索引从0开始.

基本操作:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含

每个列表都具备如下功能:

List操作包含以下函数:

cmp(list1, list2):        比较两个列表的元素,两个元素相同返回0,前大后小返回1,前小后大返回-1
len(list):                    列表元素个数 
max(list):                  返回列表元素最大值 
min(list):                   返回列表元素最小值 
list('var'):                   将元素转换为列表 
del L[1]                       删除指定下标的元素
del L[1:3]                    删除指定下标范围的元素

List操作包含以下方法:

L.append('var')                append方法用于在列表的尾部追加元素,参数'var'是插入元素的值
L.insert(index,'var')          用于将对象插入到列表中,俩个参数,第一个是索引位置,第二个插入的元素对象.
L.pop()                   返回列表最后一个元素,并从List中删除.
L.pop(index)               返回列表索引的元素,并删除.
L.count(var)              该元素在列表中出现的个数
L.index('var')             取出元素的位置(下标),无则抛出异常.
L.remove('var')             remove方法用于从列表中移除第一次的值(值如果有重复则删除第一个)
L.sort()                  排序
L.reverse()                倒序
L.extend(list1)              extend方法用于将两个列表合并,将list1列表的值添加到L列表的后面。
L.copy() 浅拷贝,只独立copy第一层,如果列表中嵌套列表修改后也会修改.

Python列表脚本操作符:

List 中 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

Python列表截取:

L = ['spam', 'Spam', 'SPAM!','xusandu']

操作实例:

#增加元素

>>> ShoppingList = ['car','clothers','iphone','apple']      #定义列表
>>> ShoppingList.append('xiaomi')                                        #向列表中插入'xiaomi'字符串
>>> print(ShoppingList)                                                   #查看列表
['car', 'clothers', 'iphone', 'apple', 'xiaomi']
>>> ShoppingList.insert(0,'smoke')                                        #在列表下标为零处(即列表第一个元素),插入'smoke'元素
>>> print(ShoppingList)
['smoke', 'car', 'clothers', 'iphone', 'apple', 'xiaomi']

#删除
>>> ShoppingList.remove('iphone')                                        #从列表中移除'iphone'元素
>>> print(ShoppingList)
['smoke', 'car', 'clothers', 'apple', 'xiaomi']
>>> ShoppingList.pop()                                         #如果不指定下标默认从List中删除掉最后一个元素.ShoppingList.pop(1)表示删除下标为1的元素.
'xiaomi'
>>> print(ShoppingList)
['smoke', 'car', 'clothers', 'apple']
>>>
>>> del ShoppingList[0]                                        #使用del 函数删除List中下标为0的元素(此处下标为0表示的是smoke)
>>> print(ShoppingList)
['car', 'clothers', 'apple']

#

>>> ShoppingList[0] = 'bus'                                   #将下标为0的元素(即‘car’字符)替换为‘bus’
>>> print(ShoppingList)
['bus', 'clothers', 'apple']

#查询
>>> ShoppingList[0]                                         #查看下标为零的元素,即第一个元素
'bus'
>>> ShoppingList[-1]                                        #查看下标为-1的元素,即倒数第一个元素
'apple'
>>> ShoppingList[1:]                                        #查看下标为1以后所有的元素
['clothers', 'apple']
>>> ShoppingList[:-1]                                       #查看下标为-1之前的所有元素
['bus', 'clothers']
>>>
>>> 'car' in ShoppingList                                   #List列表中查找'car'元素,如果存在则返回Ture
True
>>>
>>> ShoppingList.index('rain')                              #使用index方法查找rain的下标值
>>>

#统计
>>> print(ShoppingList)
['bus', 'clothers', 'apple', 'rain', 'car']                
>>> ShoppingList.count('car')                             #统计列表中元素'car'的个数
>>>

#排序

>>> ShoppingList.sort()                                   #对元素按第一个字母顺序排序
>>> print(ShoppingList)
['apple', 'bus', 'car', 'clothers', 'rain']
>>>
>>> ShoppingList.reverse()                                #倒序
>>> print(ShoppingList)
['rain', 'clothers', 'car', 'bus', 'apple']
>>>

#合并列表
>>> li = [1,2,3,4]
>>> ShoppingList.extend(li)                             #将li列表中的元素添加到ShoppingList列表中
>>> print(ShoppingList)
['rain', 'clothers', 'car', 'bus', 'apple', 1, 2, 3, 4]
>>>

#copy 浅copy,只独立拷贝第一层.

ShoppingList = ['car','clothers','iphone','bus']
li = ShoppingList.copy()
print(ShoppingList)
print(li)
ShoppingList[1] = "apple"
print(ShoppingList)
print(li)
#在列表中嵌套一个列表
ShoppingList = ['car','clothers',['a','b','c'],'iphone','bus']
lis = ShoppingList.copy()
ShoppingList[1] = "milk"
ShoppingList[2][0] = "A"
print(ShoppingList)
print(lis)

----执行结果-----------------------

['car', 'clothers', 'iphone', 'bus']
['car', 'clothers', 'iphone', 'bus']
['car', 'apple', 'iphone', 'bus']
['car', 'clothers', 'iphone', 'bus']
['car', 'milk', ['A', 'b', 'c'], 'iphone', 'bus']
['car', 'clothers', ['A', 'b', 'c'], 'iphone', 'bus']
使用列表实现购物车功能
#!/usr/bin/env python
#coding:utf-8

'''
脚本思路:
    1.判断用户输入类型,
    2.循环出商品和下标的对应值
    3.判断用户商品编号输入值
    4.商品价格和用户输入金额比较,如果商品价格低于用户余额,将商品加入购物车并减去商品价格.
'''

product_list = [
    ('Iphone',5800),
    ('Mac Pro',9800),
    ('Bike',800),
    ('Watch',10600),
    ('Coffee',31),
    ('Python',120),
]

shoping_list = []
salary = input("请输入你的工资:")
#如果输入的是数字返回True,如果不全是数字则返回flase.
if salary.isdigit():
    salary = int(salary)
    while True:
        for index,item in enumerate(product_list,start=0):
            print(index,item)
        user_choice = input("请输入你要买商品的编号>>>:")
        if user_choice.isdigit():
            user_choice = int(user_choice)
            if user_choice < len(product_list) and user_choice >= 0:
                p_item = product_list[user_choice] #通过商品下标取出商品对应元组
                #print(p_item[1])
                #通过商品价格和输入金额对比,如果买得起则进行后续操作
                if p_item[1] <= salary:
                    shoping_list.append(p_item)
                    #购买商品后的用户余额
                    salary -= p_item[1]
                    print("你买的商品是 %s 你的剩余金额为 %s" %(shoping_list,salary))
                else:
                    print("你的余额剩余 %s ,买不起该商品." %(salary))

            else:
                print("你输入的商品编号%s不存在." %(user_choice))

        elif user_choice == 'q' or user_choice == 'exit':
            print('''购买的商品列表如下: ''')
            for i in shoping_list:
                print(i)
            print("你目前的余额为 %s" % (salary))
            exit()
        else:
            print("编号必须为数字")
else:
    print("输入工资必须为数字")
购物车代码
6.元组 (不可变列表)
不可变序列-----元组 tuple 
元组通过圆括号中用逗号分隔的项目定义,不可以添加和删除元组.
创建元组:
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
每个元组都具备如下功能:connt,index
>>> name_tuple = ('a','b','c','a','b')
>>> type(name_tuple)
<type 'tuple'>
>>> name_tuple.count('a')              //统计a出现次数
2
>>> name_tuple.index('b')             //获取b元素下标位置.
1

7.dict(字典)

字典是Python语言中唯一的映射类型。
映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。
字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。

字典的特性:

dict是无序的
key必须是唯一的
字典没有下标.通过key检索

创建字典:
person = {"name": "saneri", 'age': 20}
或
person = dict({"name": "saneri", 'age': 20})

技巧:

字典中包含列表或字典

var1= {"ZhangSan" : ['23','IT'],"Lisi" : ['22','dota']}
var2 = {"Wangwu" : {"age" : 23,"job":"IT"},"Song" : {"age":22,"job":"dota"}}

常用操作:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

python字典实例操作

#增加
>>> info = { "zhangsan" : 20,"Lisi" : 30,"Wangwu" : 40}
>>> info['Zhaoliu'] = 60
>>> print(info)
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 60}

#修改
# 如果key存在则修改值,不存在则添加

>>> info['Zhaoliu'] = 80
>>> print(info)
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80}


#删除
第一种方法,标准删除
>>> print(info)
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80}
>>> info.pop("Zhaoliu")
80
>>> print(info)
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40}

第二种方法:
>>> del info["Zhaoliu"]
>>> print(info)
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40}

第三种,随机删除
>>> info.popitem()
('Zhaoliu', 80)
>>> print(info)
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40}

#查找

>>> print(info)
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80}
>>> info['zhangsan']                         #如果key存在就返回结果
20
>>> info['saneri']                           #如果key不存在,dict就会报错:
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 'saneri'

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:

>>> 'zhangsan' in info
True

二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

>>> info.get('saneri')
>>> info.get('saneri',-1)
-1

注意:返回None的时候Python的交互式命令行不显示结果。

#info.keys()方法
>>> info
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80}

>>> info.keys()
dict_keys(['zhangsan', 'Lisi', 'Wangwu', 'Zhaoliu'])

#info.values()方法
>>> info.values()
dict_values([20, 30, 40, 80])

#info.items()方法
>>> info.items()
dict_items([('zhangsan', 20), ('Lisi', 30), ('Wangwu', 40), ('Zhaoliu', 80)])

#info.setdefault()方法

setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值
>>> info.setdefault('saneri','100')
'100'
>>> info
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80, 'saneri': '100'}

>>> info.setdefault('adny')      
>>> info
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80, 'saneri': '100', 'adny': None}

#info.update()方法

>>> info
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80, 'saneri': '100', 'adny': None}
>>> dict = {1:2,3:4,'tom':'IT'}
>>> info.update(dict)
>>> info
{'zhangsan': 20, 'Lisi': 30, 'Wangwu': 40, 'Zhaoliu': 80, 'saneri': '100', 'adny': None, 1: 2, 3: 4, 'tom': 'IT'}

循环dict的方法

#!/usr/bin/env python
#coding:utf-8

info = {
    "zhangsan" : 20,
    "Lisi" : 30,
    "Wangwu" : 40
    }

#1.建议使用
for i in info:
    print(i,info[i])

print('---------------------------')
#2.会先把dict转成list,数据里大时莫用
for k,v in info.items():
    print(k,v)

-----------执行结果------------
zhangsan 20
Lisi 30
Wangwu 40
---------------------------
zhangsan 20
Lisi 30
Wangwu 40

三级菜单

#!/usr/bin/env python
#coding:utf-8

city_list = {
    "北京": {
        "海淀区" : {
            "上地" : ["百度大厦"],
            "海淀黄庄" : ["互联网金融大厦"],
            "中关村" : ["海龙大厦"],
        },
        "朝阳区" : {
            "朝阳门" : ["丰联大厦"],
            "东直门" : ["银泰大厦"],
            "望京" : ["望京soho"],
        },
        "昌平区" : {
            "回龙观" : ["华联超市"],
            "龙泽" : ["美廉美超市"],
            "霍营" : ["霍营超市"],
        },
    },
    "陕西省" : {
        "西安市" : {
            "长安区" : [1],
            "碑林区" : [2],
            "雁塔区" : [3],
            "莲湖区" : [4],
        },
        "咸阳市" : {
            "秦都区" : [0],
            "渭城区" : [0],
            "西咸新区" : [0],
        },
    },

}

while True:
    for i in city_list:  #打印第一层
        print(i)
        #北京、陕西省
    choice = input("请输入城市名>>>>>:").strip()
    if choice in city_list:   # 如果输入城市在字典中,则执行如下操作
        while True:
            for m in city_list[choice]:     #打印第二层
                print(m)
            choice2 = input("请选择市区>>>>:").strip()
            if choice2 in city_list[choice]:
                while True:
                    for k in city_list[choice][choice2]: #打印第三层
                        print(k)
                    choice3 = input("请选择区县>>>>>>>:").strip()
                    if choice3 in city_list[choice][choice2]:
                        for v in city_list[choice][choice2][choice3]: #打印第四层
                            print(v)
                        choice4 = input("已经是最后一级,按b键返回>>>>:")
                        if choice4 == "b":
                            pass
                    if choice3 == "b":
                        break
            if choice2 == "b":
                break
    if choice == "b":
        exit()
三级菜单练习
#!/usr/bin/env python
#coding:utf-8

city_list = {
    "北京": {
        "海淀区" : {
            "上地" : ["百度大厦"],
            "海淀黄庄" : ["互联网金融大厦"],
            "中关村" : ["海龙大厦"],
        },
        "朝阳区" : {
            "朝阳门" : ["丰联大厦"],
            "东直门" : ["银泰大厦"],
            "望京" : ["望京soho"],
        },
        "昌平区" : {
            "回龙观" : ["华联超市"],
            "龙泽" : ["美廉美超市"],
            "霍营" : ["霍营超市"],
        },
    },
    "陕西省" : {
        "西安市" : {
            "长安区" : [1],
            "碑林区" : [2],
            "雁塔区" : [3],
            "莲湖区" : [4],
        },
        "咸阳市" : {
            "秦都区" : [0],
            "渭城区" : [0],
            "西咸新区" : [0],
        },
    },

}

exit_flag = False

while not exit_flag:
    for i in city_list:
        print(i)
    choice = input("请输入省市>>>>>>:").strip()
    if choice in city_list:
        while not exit_flag:
            for m in city_list[choice]:
                print(m)
            choice2 = input("请输入市区>>>>:").strip()
            if choice2 in city_list[choice]:
                while not exit_flag:
                    for k in city_list[choice][choice2]:
                        print(k)
                    choice3 = input("请输入区县>>>>:").strip()
                    if choice3 in city_list[choice][choice2]:
                        while not exit_flag:
                            for v in city_list[choice][choice2][choice3]:
                                print(v)
                            choice4 = input("最后一层,返回请按b键,退出请按q>>>:")
                            if choice4 == "b":
                                break
                            elif choice4 == "q":
                                exit_flag = True
                    if choice3 == "b":
                        break
                    elif choice3 == "q":
                        exit_flag = True
            if choice2 == "b":
                break
            elif choice2 == "q":
                exit_flag = True

    if choice == "b":
        break
    elif choice == "q":
        exit_flag = True
标志位三级菜单

8.set集合

集合(set)是一个无序不重复元素的序列。
它的主要作用如下:
  去重,把一个列表变成集合,就自动去重了
  关系测试,测试两组数据之前的交集、差集、并集等关系
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

1.可以使用大括号 { }

s = {value1,value2,...}

2.或提供一个list作为输入集合
s = set([value1,value2,...])

3.或者 set() 函数创建集合
set(value)

1. set成员测试

>>>student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}

>>> print(student)                 # 输出集合,重复的元素被自动去掉
{'Mary', 'Tom', 'Jack', 'Rose', 'Jim'}

# 成员测试

>>> if('Rose' in student) :
...     print('Rose 在集合中')
... else:
...     print('Rose 不在集合中')
...     
Rose 在集合中

>>>

2.set进行集合运算

>>> s = set([3,5,9,10]) 
>>> t = set(['a','b','c',1,2,3]) 
>>> s - t                                  # 求差集(项在s中,但不在t中) 
{9, 10, 5}
>>> s | t                                                # s 和 t的并集 
{1, 2, 3, 'b', 5, 'c', 9, 10, 'a'}
>>> s & t                                                # 求s 和 t的交集  
{3}
>>> s ^ t                       #对称差集(项在s或t中,但不会同时出现在二者中)                       
{1, 2, 'b', 'c', 'a', 5, 9, 10}

3.通过set方法函数对集合进行操作

>>> s = set([3,5,9,10]) 
>>> t = set(['a','b','c',1,2,3]) 

# add(增加元素)
>>> t.add('x')
>>> t
{1, 2, 3, 'b', 'c', 'x', 'a'}

#remove()可以删除一项:
>>> t.remove('a')
>>> t
{1, 2, 3, 'b', 'c', 'x'}
>>> len(t)
6
#测试 x 是否是 t 的成员  
>>> 'x' in t
True

#测试 x 是否不是 t 的成员  
>>> 'x' not in t
False

# issubset(判断子集)
>>> s.issubset(t)
False

# issuperset(判断父集)
>>> s.issuperset(t)
False

#返回一个新的 set 包含 s 和 t 中的每一个元素 

>>> s.union(t)
{1, 2, 3, 'b', 5, 'c', 9, 10, 'x'}

#返回一个新的 set 包含 s 和 t 中的公共元素 
>>> s.intersection(t)
{3}

#返回一个新的 set 包含 s 中有但是 t 中没有的元素  
>>> s.difference(t)  
{9, 10, 5}

#返回一个新的 set 包含 s 和 t 中不重复的元素  
>>> s.symmetric_difference(t) 
{'x', 1, 2, 'b', 'c', 5, 9, 10}

# 在s中添加多项
>>> s.update([10,37,42])
>>> s
{3, 37, 5, 9, 10, 42}

>>>
变量
变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:
a = 123        # a是整数
print(a)
a = 'ABC'      # a变为字符串
print(a)
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):
int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量
和静态语言相比,动态语言更灵活,就是这个原因。
请不要把赋值语句的等号等同于数学的等号。比如下面的代码:
x = 10
x = x + 2
如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值变成12。
理解变量在计算机内存中的表示也非常重要。当我们写:
a = 'ABC'
时,Python解释器干了两件事情:
  1. 在内存中创建了一个'ABC'的字符串;
  2. 在内存中创建了一个名为a的变量,并把它指向'ABC'。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:
a = 'ABC'
b = a
a = 'XYZ'
print(b)
最后一行打印出变量b的内容到底是'ABC'呢还是'XYZ'?如果从数学意义上理解,就会错误地得出b和a相同,也应该是'XYZ',但实际上b的值是'ABC',让我们一行一行地执行代码,就可以看到到底发生了什么事:
执行a = 'ABC',解释器创建了字符串'ABC'和变量a,并把a指向'ABC':
执行b = a,解释器创建了变量b,并把b指向a指向的字符串'ABC':
执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:
所以,最后打印变量b的结果自然是'ABC'了。
在Python中,有两种除法,一种除法是/,/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:
除法是//,称为地板除,两个整数的除法仍然是整数:
Python还提供一个余数运算,可以得到两个整数相除的余数:
>>> 9 / 3
3.0
>>> 9 // 3
3
>>> 9 % 3
0
>>> 10 % 3
1
字符串和编码
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
 
 
 
posted @ 2018-11-27 18:49  梦徒  阅读(243)  评论(0)    收藏  举报