Python Day04

Python3 中有六个标准的数据类型:
Number(数字)、String(字符串)、List(列表)、
Tuple(元组)、Set(集合)、Dictionary(字典)
在这里插入图片描述
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

Number数据中,Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
注意:
Python中整数的大小是没有上限的。
列表有点类似于数组,但是数组只能包含相同类型的元素,而列表可以包含不同类型的元素。
元组与列表相似,但是区别在于,列表是可变的数据类型,元组是不可变的数据类型。元组是只读型列表,一旦存储了元素,这个元组就不能被修改了。
字典是一个键值对的集合。
集合中不会包含任何重复的元素。
集合支持并集 | 、交集 & 、差集 - 、对称差集 ^ 。
在这里插入图片描述
在这里插入图片描述
更多基本数据类型知识:
https://www.runoob.com/python3/python3-data-type.html

1、Python可以同时为多个变量赋值,如a, b = 1, 2。
2、一个变量可以通过赋值指向不同类型的对象。
3、除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。**表示乘方
4、在混合计算时,Python会把整型转换成为浮点数。
在这里插入图片描述
变量和内存

https://www.jianshu.com/p/521bdd67790e
一个变量不能孤立存在,创立之时就必须将其指向内存中的某个实际对象(即用‘=’操作),此时变量的类型、内存地址、值就是它指向对象的类型、内存地址、值。
python不会为一个变量分配内存,同一个变量可以指向不同类型的对象(例a=300,a=‘a’, a=[300,‘a’])。
例如,a = 300
该赋值语句做了三件事:
1)开辟了一块内存(可用id(a)查看地址);
2)将该内存的值设为300;
3)将变量a指向该内存。在重新将a指向其他对象之前,a就一直指向该内存,也就一直代表整数300。这里内存中的300是狭义“对象”,是个实实在在存在的东西。
赋值时,待赋值“对象”在内存中不存在,开辟内存,指定内存对应的值,将其与变量相联系。
赋值时,值相同的“对象”在内存中已经存在至少一个,分为以下五种情况。
(1)整数中,-5~256会共享内存
因为这些小的整数在编程时出现的频率非常高,如果不停地都生成销毁生成销毁,会使计算效率降低,为了减少这种操作,干脆就将所有重复创建小整数的情况都统统指向同一个已经存在的小整数上,只要还有一个变量连接到该小整数,他就不会被销毁。而且int数据是不可变对象,因此该小整数一旦在内存中被创建,就会一直存在,直到没有变量指向他才被销毁。
(2)字符串的情况跟int有点类似,对于 短字符串(没有空格) 和空字符串(’’)而言,共享内存;对于 长字符串(有空格) 而言,不共享内存。
(3)对于列表而言,比较简单,每次都开辟新的内存,生成新的对象,包括空列表[]
(4)对于元组而言,每次都开辟新的内存,生成新的对象;但是对于空元组(),则共享内存。
(5)对于字典而言,比较简单,每次都开辟新的内存,生成新的对象,包括空字典{}

对于变量A对变量B赋值的情况(变量A必然已经指向某个内存对象了),无论哪种数据类型,无论长短复杂简单,都只有一个结果,即两个变量都指向相同的内存单元。

  1. 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
    计算机只认识二进制数,所以所有的编程语言最终都会转换成简单的二进制序列给 CPU 按照一定的规则解析。
    由于二进制只有两个数:0 和 1,因此用 0 和 1 来表示 False 和 True 再适合不过了,因为不用浪费资源在转换的过程上。

  2. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
    把小数点后面的位数舍掉
    把小数点后面的位数都舍掉

  3. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
    x = int(x + 0.5)

  4. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?
    建议使用 isinstance(),因为它的返回结果比较直接
    isinstance 和 type 的区别在于:
    type()不会认为子类是一种父类类型。
    isinstance()会认为子类是一种父类类型。

  5. Python3 可以给变量命名中文名,知道为什么吗?
    Pyhton3 源码文件默认使用utf-8编码(支持中文)

在猜数游戏上增加判断用户输入的数据类型是否正确的功能:
在这里插入图片描述
在这里插入图片描述
所以采用另外的方法,下面介绍一些函数
s 为字符串
s.isalnum() 所有字符都是数字或者字母,为真返回 True,否则返回 False。
s.isalpha() 所有字符都是字母,为真返回 True,否则返回 False。
s.isdigit() 所有字符都是数字,为真返回 True,否则返回 False。
s.islower() 所有字符都是小写,为真返回 True,否则返回 False。
s.isupper() 所有字符都是大写,为真返回 True,否则返回 False。
s.istitle() 所有单词都是首字母大写,为真返回 True,否则返回 False。
s.isspace() 所有字符都是空白字符,为真返回 True,否则返回 False。
例如:
在这里插入图片描述
在这里插入图片描述
运行结果如下:
在这里插入图片描述
判断给定年份是否为闰年
在这里插入图片描述
可以用 if year/400 == int(year/400) 替代取余操作

运算符的优先级
在这里插入图片描述
在这里插入图片描述
1.Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?
Python 这里会义无反顾地执行 floor 除法原则,答案是:1.0
在这里插入图片描述

2.不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低
5的-2次方=0.04

3.如何简单判断一个数是奇数还是偶数?
if(num%2==1) print(“奇数”)
else print(“偶数”)

4.请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9

not or and 的优先级是不同的:not > and > or

我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
= = 0 or 0 or 4 or 6 or 9
= = 4
“短路逻辑“ 3 and 4 == 4,而 3 or 4 == 3。
所以答案是:4

1.请写一个程序打印出 0~100 所有的奇数。
在这里插入图片描述
2.爱因斯坦的难题
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。题目:请编程求解该阶梯至少有多少阶?
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值