大数协python训练营打卡笔记Task01

一、学习知识点概要

注释

运算符(算术运算符、比较运算符、逻辑运算符、位运算符、三元运算符、其他运算符及运算符的优先级)

变量和赋值

数据类型(整型、浮点型、布尔型)与转换(转换成整型、字符串、浮点型)

位运算

二、学习内容

(一)变量、运算符、数据类型

1.注释

【整行注释】

#……

【多行注释】三个单引号/双引号

'''xxx

xxxx'''

"""xxx

xxxx"""

2.运算符

【算术】

地板除://(向下取整)

幂:**(eg,3**3=27)

【比较】

大于等于:>=

小于等于:<=

等于:==

不等于:!=

【逻辑】

and,or,not

【位运算符】

~:按位取反

&:按位与

\|:按位或

^:按位异或

<<:左移

>>:右移

【三元运算符】

x , y = 3 , 5
if x < y :
    small = x
else:
    small = y
    
print(small)

也即

x , y = 3 , 5
small = x if x < y else y
print(small)

【其他运算符】

in:存在

not in:不存在

is:是

is not:不是

注意

①is, is not 对比的是两个变量的内存地址;==,!= 对比的是两个变量的值

②比较的两个变量是地址不可变的类型还是地址可变的类型

【运算符的优先级】

①先一元运算符后二元运算符

②先算术运算再移位运算后位运算

③逻辑运算最后

3.变量和赋值

①需要赋值给变量

②变量名可以是数字、下划线、字母等,但不能以数字开头

③python中变量名大小写敏感

4.数据类型

int:整型

float:浮点型

用getcontext().prec来调整精度

例子:使1/7保留5位

import decimal
from decimal import Decimal
decimal.getcontext().prec = 5
a = Decimal(1) / Decimal(7)
print(a)

bool:布尔型

只有True和False(给变量赋值),数字中用1和0表示。

还可以创建变量:bool(X)

在基本类型变量中:bool(0),bool(0.00),bool(False)输出结果为False,其余为True

在容器类型变量中:X若为空的变量,则输出为False(例如:bool(''),bool(())……)

注意:可记为变量为空则输出False

数值变量中,0,0.0,0.00等都视为空,输出False

容器变量中,里面没有元素则视为空,输出False

5.获取数据类型及转换

①获取数据类型:type(object)

print(type(666))

②数据类型转换:

转换为整型:int(x)

转换为字符串:str(x)

转换为浮点型:float(x)

(二)位运算

1.二进制中的原码、反码、补码

①最高位上0表正,1表负

②正数的原码、反码、补码都一样

③负数的反码=它的原码符号位不变,其他位取反(0变1,1变0)

④负数的补码=它的反码+1

⑤0的反码、补码都是0

⑥计算机都是以补码方式进行运算的

2.按位非操作~

~:把数字的补码全部取反(包括符号位)

例子:2取反得-3

~2
-3

00 00 00 10 -> 2

~

11 11 11 01

11 11 11 00

00 00 00 11即-3

3.按位与操作&

只有两个对应位都为 1 时才为 1

4.按位或操作|

只要两个对应位中有一个 1 时就为 1

5.按位异或操作 ^(满足交换律和结合律)

只有两个对应位不同时才为 1

6.按位左移操作 <<

num << inum的二进制表示向左移动i位所得的值

7.按位右移操作 >>

num >> inum的二进制表示向右移动i位所得的值

8.利用位运算实现快速运算和整数集合

三、学习问题与解答(自己遇到的问题+课后题)

【自己遇到的问题及解答】 

1.为什么3对4取余是3?(即被除数比除数小时怎么取余数?)

自己算了一下感觉余数是2,有点奇怪就上百度查了一下。

原理的话就是:

3=0*4+3

自认为可以借助divmod来理解

divmod(3,4)

输出(0, 3)

也即3=0*4+3

2.不理解位运算符的含义及运用

文件里提到“有关二进制的运算,参见“位运算”部分的讲解 。”

因为从来没有接触过,感觉这部分有点难理解,决定找视频来理解入手。

参考视频:位移运算的原理,真正搞懂位移运算符的使用_哔哩哔哩_bilibili

视频对我理解位运算很有帮助,但注意文件中没有提到无符号数,只要考虑有符号数即可。

3.一元运算符、二元运算符、三元运算符的区别

看到文件中提到了这三个定义,但是并不清楚,所以从百度搜索得知:

一元运算符是只对一个表达式执行操作,该表达式可以是数值数据类型类别中的任何一种数据类型。对于++、--这样的,只需要一个操作数就能进行运算。

二元运算符是将两个表达式合成一个稍复杂的表达式,对于+-*/%=等,都需要两个操作数才能进行运算。二元的+-*/%=比一元运算符++/--优先级低。

由此推出,个人理解认为三元运算符则是需要三个操作数。

4.待解决的问题:

 例子中的格式括号内为(xx)或('xx')

与文本所给的括号(x,base=10);(object=' ');(x)不同

尚未理解,下次遇到的时候再进行思考。

【课后练习题】

1.怎样对python中的代码进行注释?

【整行注释】

#……

【多行注释】三个单引号/双引号

''' '''或""" """

2.python有哪些运算符,这些运算符的优先级是怎样的?

算术运算符、逻辑运算符、位运算符、三元运算符、其他运算符

①先一元运算符后二元运算符

②先算术运算再移位运算后位运算

③逻辑运算最后

3.python 中 is, is not==, != 的区别是什么?

①is, is not 对比的是两个变量的内存地址;==,!= 对比的是两个变量的值

②比较的两个变量是地址不可变的类型还是地址可变的类型

4.python 中包含哪些数据类型?这些数据类型之间如何转换?

int整型;float浮点型;bool布尔型

数据类型转换:

转换为整型:int(x);转换为字符串:str(x);转换为浮点型:float(x)

5.位运算练习题:

leetcode 习题 136. 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

尝试使用位运算解决此题。

自己的理解:找出不同的数字,应该是运用位运算中的异或(^)进行考虑。

四、学习思考与总结

1.之前看视频的时候有记过关于运算符的优先级,如图:(来源:up主小甲鱼)

 2.二进制转换:(图片来源:位移运算的原理,真正搞懂位移运算符的使用_哔哩哔哩_bilibili

四则运算

加法:0+0=0,0+1=1,1+0=1,1+1=10

减法:0-0=0,1-0=1,1-1=0,0-1=1

乘法:0×0=0,0×1=0,1×0=0,1×1=1

除法:0÷1=0,1÷1=1, 1÷0无意义,0÷0无意义

逻辑运算

逻辑加(也称“或”运算,用符号“OR”、“∨”或“+”表示):0∨0=0 0∨1=1 1∨0=1 1∨1=1

逻辑乘(也称“与”运算,用符号“AND”、“∧”或“·”表示):0∧0=0 0∧1=0 1∧0=0 1∧1=1

逻辑非(也称“非”运算,用符号“NOT”或“—”表示):“0”取反后是“1”,“1”取反后是“0”

3.总结

①虽然是很基础的内容,但要完全理解来打好基础对于零基础的人还是有点困难。

②涉及到更基础的内容例如二进制的运算,边接触边补这些知识挺有趣的。

③不太敢也不太习惯提出自己的疑问去问别人,更多地是靠视频、搜索来解决问题,或者留在以后接触再来重新解决,自认为自己这点还有待改进。

④知识整理得太长了,几乎跟复制过来一样,下次有时间的话争取用思维导图来整理所学知识点。

⑤遇到完整的题目不会解决,不知道从哪里下手,可能需要通过多看一些题目多练手来提升。

⑥本次学习加笔记用时大概五个小时左右,要尽可能减少时间的浪费,提高效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值