数据类型总结

按照存一个值 OR 多个值来分

  • 字符串、整型、浮点型存一个值
  • 列表、元组、字典、集合存多个值

按照有序 OR 无序来分

  • 字符串、列表、元组是有序数据
  • 字典、集合是无序数据

按照可变 OR 不可变来分

  • 列表、字典、集合是可变数据类型
  • 整型、浮点型、字符串是不可变数据类型

拷贝 && 浅拷贝 && 深拷贝&& .copy()

如果 l2 是 l1的拷贝对象,l1发生改变改变,则l2也会发生改变: 因为l1与l2指向同一个内存地址id,l1是可变数据类型,值变化时id不改变,因此l2跟着改变

l1 = ['a','b','c',['d','e','f']]
l2 = l1
l1.append('g')
print(f"l1内存地址为{id(l1)},打印值为{l1}")
print(f"l2内存地址为{id(l2)},打印值为{l2}")
l1内存地址为2068776007112,打印值为['a', 'b', 'c', ['d', 'e', 'f'], 'g']
l1内存地址为2068776007112,打印值为['a', 'b', 'c', ['d', 'e', 'f'], 'g']

浅拷贝:如果l2是l1的浅拷贝对象,l1内部的不可变数据发生改变,则l2不变,如果l1内部的可变对象发生改变,l2也会跟着改变

import copy
l1 = ['a','b','c',['d','e','f']]
l2 = l1.copy()
l1.append('g') # 改变l1中的不可变数据类型,l2不会改变
print(f"l1内存地址为{id(l1)},打印值为{l1}")
print(f"l2内存地址为{id(l2)},打印值为{l2}") print('*'*80)
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = l1.copy()
l1[3].append('g') # 改变l1中的可变数据类型,l2也会跟着改变
print(f"l1内存地址为{id(l1)},打印值为{l1}")
print(f"l2内存地址为{id(l2)},打印值为{l2}")
l1内存地址为2068778801352,打印值为['a', 'b', 'c', ['d', 'e', 'f'], 'g']
l2内存地址为2068778814984,打印值为['a', 'b', 'c', ['d', 'e', 'f']]
********************************************************************************
l1内存地址为2068778811720,打印值为['a', 'b', 'c', ['d', 'e', 'f', 'g']]
l2内存地址为2068778802376,打印值为['a', 'b', 'c', ['d', 'e', 'f', 'g']]

深拷贝:如果l2是l1的深拷贝对象,l1内部的不可变对象发生改变,则l2不变,如果l1内部的可变对象发生改变,l2也不会改变。即:l1的改变不会影响l2

import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.deepcopy(l1)
l1.append('g') # 改变l1中的不可变数据类型,l2不会改变
print(f"l1内存地址为{id(l1)},打印值为{l1}")
print(f"l2内存地址为{id(l2)},打印值为{l2}") print('*'*80)
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.deepcopy(l1)
l1[3].append('g') # 改变l1中的可变数据类型,l2不会改变
print(f"l1内存地址为{id(l1)},打印值为{l1}")
print(f"l2内存地址为{id(l2)},打印值为{l2}")
l1内存地址为2068778801992,打印值为['a', 'b', 'c', ['d', 'e', 'f'], 'g']
l2内存地址为2068778811464,打印值为['a', 'b', 'c', ['d', 'e', 'f']]
********************************************************************************
l1内存地址为2068778067016,打印值为['a', 'b', 'c', ['d', 'e', 'f', 'g']]
l2内存地址为2068776735112,打印值为['a', 'b', 'c', ['d', 'e', 'f']]

copy() 从结果上来看就是浅拷贝

l1 = ['a','b','c',['d','e','f']]
l2 = l1.copy()
l1.append('g') # 改变l1中的不可变数据类型,l2不会改变
print(f"l1内存地址为{id(l1)},打印值为{l1}")
print(f"l2内存地址为{id(l2)},打印值为{l2}") print('*'*80)
l1 = ['a','b','c',['d','e','f']]
l2 = l1.copy()
l1[3].append('g') # 改变l1中的可变数据类型,l2也会跟着改变
print(f"l1内存地址为{id(l1)},打印值为{l1}")
print(f"l2内存地址为{id(l2)},打印值为{l2}")



猜年龄游戏

附加一个猜年龄的小游戏,再接再厉....

"""
功能:登录用户猜年龄
作者:前辈眼中的小白
日期: 2019/5/25
""" real_age = 23 # 给定正确的年龄
login_count = 0 # 控制登录次数
count = 0 # 控制猜游戏的次数
get_prize = [] # 接收奖品 # 奖品列表
prize = {'0': 'buwawa',
'1': 'bianxingjingang',
'2': 'aoteman',
'3': 'Python从入门到放弃'
} # 定义用户字典
login_info = {'nick': '123',
'jishuxiaobai': '123'
} # 判断登录的次数,最多三次机会
while login_count < 3: # 与用户交互输入登录名和密码
user = input("请输入登录名:").strip()
pwd = input("请输入密码:").strip() if login_info.get(user) != pwd: login_count += 1
print(f"用户名或密码错误,还有{3-login_count}次机会")
continue login_count = 4
print("登录成功,请开始你的冒险之旅") # 核心代码,开始猜游戏
while count < 3: age_str = input("Please enter age:").strip() # 与用户交互输入猜的年龄 # 判断是否是数字
if not age_str.isdigit():
print("请输入数字!!!")
continue age_int = int(age_str) # 核心思想,年龄判断是否猜对
if age_int == real_age: print(f"恭喜,猜对了!!!您可以在以下奖品中选择两件奖品\n{prize}\n")
Y_or_n_prize = input('是否领奖(领奖输入"Y"或者"y"),否则按任意键放弃领奖退出游戏:').strip() # 放弃领奖
if not (Y_or_n_prize == 'Y' or Y_or_n_prize == 'y'):
print("您已放弃领奖,退出游戏")
break # 领两件奖品
for i in range(2): print(f"请选择第{i+1}件奖品,输入对应的数字序号:", end='')
choice = input().strip() # 判断输入奖品
if choice not in ['0', '1', '2', '3']: print('看不懂提示吗?输错了')
continue get_prize.append(prize[choice]) print(f"请领取奖品{get_prize}")
break elif age_int > real_age: print("猜大了") else:
print("猜小了") count += 1 # 猜错三次后,判断是否继续游戏
if count == 3:
game_again = input('是否继续玩游戏,继续请输入"Y"或者"y",退出游戏请输入"N"或者"n":').strip() if game_again == 'Y' or game_again == 'y': count = 0 elif game_again == 'N' or game_again == 'n': print("你已退出游戏")
break else:
print("非法输入,请按照要求输入")

day07补充-数据类型总结及拷贝的更多相关文章

  1. Python 标准类库-数据类型之copy-深拷贝浅拷贝操作

    标准类库-数据类型之copy-深拷贝浅拷贝操作   by:授客 QQ:1033553122 Python中赋值并不会拷贝对象,只是创建目标和对象的绑定关系. copy.copy(x) 返回x的浅拷贝 ...

  2. 基本数据类型补充 set集合 深浅拷贝

    一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_&q ...

  3. 基础数据类型补充 set集合 深浅拷贝

    一.基础数据类型补充 1. "拼接字符串".join(可迭代对象) 可迭代对象为列表时,输出列表元素与拼接字符串的拼接 li = ['张三', '李四', '王五', '赵四'] ...

  4. 基本数据类型补充,set集合,深浅拷贝等

    1.join:将字符串,列表,用指定的字符连接,也可以用空去连接,这样就可以把列表变成str ll = ["wang","jian","wei&quo ...

  5. 第八天- 基础数据操作补充 集合set 深浅拷贝

    字符串的操作补充: .join() 方法用于将序列(字符串/列表/元组/字典)中的 元素 以指定的字符连接生成一个新的字符串 str = "人生苦短我用python!" # 用于字 ...

  6. 记录我的 python 学习历程-Day07 基础数据类型进阶 / 数据类型之间的转换 / 基础数据类型总结 / 编码的进阶

    基础数据类型 str(字符串) str:补充方法练习一遍就行 s.capitalize() 首字母大写,其余变小写 s = 'dyLAn' print(s.capitalize()) # Dylan ...

  7. day07 python列表 集合 深浅拷贝

    day07 python   一.知识点补充     1."".join() s = "".join(('1','2','3','4','5'))  #将字符串 ...

  8. day07(数据类型的相互转换 ,字符编码)

    一,复习: ''' 1,深浅拷贝 ls = [1,'a',[10]] 值拷贝:直接赋值 ls1 = ls,ls中的任何值发生改变,ls1也随之发生改变 浅拷贝:通过copy()方法 ls2 = ls. ...

  9. python之基本数据类型及深浅拷贝

    一.数据基本类型之set集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key set集合,是一个无序且不重复的元素集合 1.创建 ...

随机推荐

  1. 基于Linux下的UDP编程

    一. Linux下UDP编程框架 使用UDP进行程序设计可以分为客户端和服务器端两部分. 1.服务器端程序包括: Ø  建立套接字 Ø  将套接字地址结构进行绑定 Ø  读写数据 Ø  关闭套接字 2 ...

  2. 行香子&#183;过尽千山

    <行香子·过尽千山> 文/天地尘埃2020 过尽千山.水瘦山寒. 思来路.地咽天玄. 千金散尽,欲补穹天. 但孟春暖,仲春炫.暮春喧. 三皇五帝,魏武挥鞭. 朴无欲.衡玉玑璿. 金生丽水, ...

  3. jQuery的立即调用表达式

    立即调用表达式 任何库与框架设计的第一要要点就是解决命名空间与变量污染的问题.jquery就是用javascript函数作用域的特性,采用立即调用表达式包裹了自身的方法来解决这个问题的. jQuery ...

  4. JMeter—丰富报表功能PerfMon插件

    可能有童鞋不知道PerfMon插件是干啥的.这里简要说一下: 在做负载測试时,我们要时刻关注server的CPU.MEM--的使用情况,可是JMeter本身对这些信息是不做收集的,这个时候PerfMo ...

  5. 辛星浅谈mysql中的数据碎片以及引擎为MyISAM下的操作

    对于mysql中的数据碎片,事实上和我们删除数据是息息相关的,删除数据的时候必定会在数据文件里造成不连续的空白空间,对于少量的数据的删除,并不会产生多少的空白空间.假设在一段时间内的大量的删除操作,会 ...

  6. 关于SVG图片不显示

    SVG图片在本地调试时.可以正常显示.可是上传到server或者虚拟主机以后不显示. 这个问题该怎么解决呢? 两种解决的方法: 第一种:在server上 IIS 或者其它Webserver上 加入 S ...

  7. 【POJ 2777】 Count Color(线段树区间更新与查询)

    [POJ 2777] Count Color(线段树区间更新与查询) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4094 ...

  8. cojs 1175. [顾研NOIP] 旅游电车

    1175. [顾研NOIP] 旅游电车 ★★☆   输入文件:buss.in   输出文件:buss.out   简单对比时间限制:1 s   内存限制:256 MB [问题描述] Henryy国正致 ...

  9. java.lang.NoClassDefFoundError: org/apache/commons/lang/xwork/StringUtils

    java.lang.NoClassDefFoundError: org/apache/commons/lang/xwork/StringUtils Struts2框架下使用JSON插件时.程序保存找不 ...

  10. Java代码规范_插件_阿里java开发手册

    给大家分享一个阿里巴巴的java开发规范,在日常自动化工作中我们可以参考一下,特别是用java进行coding的同学. 而且还可以利用相应的插件进行代码扫描检测,感兴趣的们可以马上应用到自动化中来. ...