编程语言
首页 > 编程语言> > Python-练习题,is和==的区别,深(浅)拷贝

Python-练习题,is和==的区别,深(浅)拷贝

作者:互联网

练习题(轮盘游戏)

 模拟轮盘抽奖游戏
  轮盘分为三部分: 一等奖, 二等奖和三等奖;
 轮盘转的时候是随机的,
    如果范围在[0,0.08)之间,代表一等奖,
    如果范围在[0.08,0.3)之间,代表2等奖,
    如果范围在[0.3, 1.0)之间,代表3等奖,
 模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数.
 
import random 
#print(random.random())##打印出随机的小数 
rewardDict = {
     '一等奖':(0,0.08),
     '二等奖':(0.08,0.3),
     '三等奖':(0.3, 1)
 } 
  ##用户的得奖等级 
def rewardFun():  
    num = random.random() # 生成0~1之间的随机数 
    for k,v in rewardDict.items():  # 判断随机转盘是几等奖
        if v[0] <= num < v[1]:
           return k    ##返回值为奖品等级
# print(rewardFun()) 
resultDict = {}   ##定义结果字典 
for i in range(1000):  
    res = rewardFun()   ##res为奖品等级
        if res not in resultDict:   
            resultDict[res] = 1    ##若此奖品等级不在结果字典中,则给其value值1
        else:
            resultDict[res] += 1   ##若此奖品等级在结果字典中,则在value值基础上自增1 
for k,v in resultDict.items():
print(k,'---->',v)

在这里插入图片描述
在这里插入图片描述
is和==的区别

is:为对象标示符(object identity),作用是用来检查对象的标示符是否一致,也就是两个对象在内存中的位置是否一样
==:表示的是相等,是用来检查两个对象是否相等。 
id():在内存中存储的位置,只有id相同,is结果输出True
type():变量的类型
value:值
==:type value
is:type value id
 

>>> a = '1'
>>> b = 1
>>> a == b
False
>>> a = '1'
>>> b = a
>>> a is b
True

在这里插入图片描述

>>> li = [1,2,3]
>>> li1 = li
>>> li1
[1, 2, 3]
>>> id(li) 
140244461998472
>>> id(li1)
140244461998472
>>> li2 = li.copy()
>>> li2
[1, 2, 3]
>>> id(li) 
140244461998472
>>> id(li2)
140244462000136
>>> li == li1
True
>>> li1 == li2
True
>>> li == li2
True
>>> li2 is li
False
>>> 

在这里插入图片描述
深拷贝和浅拷贝的区别

 当一个变量a=x的时候 约定为:指向一个地址的过程
 浅拷贝:copy.copy()
 深拷贝:copy.deepcopy()

如果 copy.copy()拷贝的是元组 那么它不会进行浅拷贝 仅仅是指向
因为元组是不可变数据类型,意味着数据一定不能修改
因此它会自动判断为指向

导入拷贝模块
在这里插入图片描述
浅拷贝

 copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

在这里插入图片描述
深拷贝

 深拷贝,包含对象里面的子对象的拷贝, 原始对象的改变不会造成深拷贝里任何子元素的改变

在这里插入图片描述
在这里插入图片描述

标签:练习题,Python,random,li,li2,拷贝,copy,id
来源: https://blog.csdn.net/weixin_44783160/article/details/100739444