D1 TASK1

D1 TASK1,第1张

D1 TASK1

·学习知识点概要

变量运算符、数据类型:

注释,运算符,变量和赋值、数据类型与转换、print()函数

位运算

·学习内容

1、注释

在 Python 中,# 表示注释,作用于整行。

''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释

e.g

print("hello,world")
```
#输出hello,world
```

2、运算符  

算术运算符

+加、-减、*乘、/除、//整除(地板除)、%取余、**幂

比较运算符

>大于、>=大于等于、<小于、<=小于等于、==等于、!=不等于

逻辑运算符

and与、or或、not非

位运算符

~按位取反、&按位与、|按位或、^按位异或、<<左移、>>右移

其他运算符

in存在、not in不存在、is是、is not不是

注意

is, is not 对比的是两个变量的内存地址

==, != 对比的是两个变量的值比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。

对比的两个变量,指向的是地址可变的类型(list,dict等),则两者是有区别的。

3、变量和赋值

在使用变量之前,需要对其先赋值。变量名可以包括字母、数字、下划线、但变量名不能以数字开头。Python 变量名是大小写敏感的,foo != Foo。

4、数据类型与转换

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

5、print() 函数

Print()括号里输入英文和数字无需“”,而输入文字则需要。

sep是分隔符, sep=' ',
end='n', 换行符

end='&'没有换行

练习题:

Q1:怎样对python中的代码进行注释?

# 表示注释,作用于整行。

''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释

# 表示注释,作用于整行。

''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释

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

运算符的优先级一元运算符优于二元运算符。先算术运算,后移位运算,最后位运算。逻辑运算最后结合。

Q3:python 中 is, is not 与 ==, != 的区别是什么?

is, is not 对比的是两个变量的内存地址

==, != 对比的是两个变量的值比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。

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

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

转换为整型 int(x, base=10)

转换为字符串 str(object='')

转换为浮点型 float(x)

位运算

1、原码、反码和补码

原码:就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.

反码:数值存储的一种,正数的反码是其本身

           负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

补码:正数的补码就是其本身

           负数的补码是在其原码的基础上, 符号位不变, 其余各位取反 最后+1. (即在反码的基础上+1)

2、按位非 *** 作 ~

对一个表达式执行按位“非”(取反)。

~1=0

~0=1

按位与 *** 作 &

1 & 1 = 1

1 & 0 = 0

按位或 *** 作 |

1 | 1 = 1

1 | 0 = 1

按位异或 *** 作 ^

1 ^ 1 = 0

1 ^ 0 = 1

按位左移 *** 作 <<

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

00 00 10 11 -> 11

11 << 3---

01 01 10 00 -> 88

按位右移 *** 作 >>

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

00 00 10 11 -> 11

11 >> 2

---

00 00 00 10 -> 2

利用位运算实现快速计算

通过 <<,>> 快速计算2的倍数问题

n<< 1 -> 计算 n*2

n >> 1 -> 计算 n/2,负奇数的运算不可用

n << m -> 计算 n*(2^m),即乘以 2 的 m 次方

n >> m ->

计算 n/(2^m),即除以 2 的 m 次方1 << n -> 2^n

利用位运算实现整数集合

一个数的二进制表示可以看作是一个集合(0 表示不在集合中,1 表示在集合中)

结论:

Python中bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负号,巨坑。

Python中的整型是补码形式存储的。

Python中整型是不限制长度的不会超范围溢出。

练习题:

leetcode 习题 136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。尝试使用位运算解决此题。

题目说明:

class Solution:
 def singleNumber(self, nums: list[int]) -> int:
        if not nums:
            return 0
        for index in nums:
            if nums.count(index)== 1:
                return index

学习问题与解答

=不是等于号,==是交互式,用来判断对错的吗?

位运算的理解还有待深入思考

学习思考与总结

学习位运算还是比较吃力,并且同一种模式有多种代码的表达方式,所以还需多学习、多练习。

初次学习,多多担待

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5579366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存