Python学习笔记1:变量、运算符与数据类型,位运算

一、注释

  • 单行注释:#
  • 多行注释(区间注释):’’’+’’’“”"+"""

#单行注释
‘’’
多行注释
行注释
多行注释
‘’’
“”"
多行注释
多行注释
多行注释
“”"

二、运算符

1.算术运算符

操作符名称
+
-
*
/
//整除
%取余
**

补充:与C、C++等不同的是,Python中的除/总是返回一个浮点型。

示例:
在这里插入图片描述

2.比较运算符

操作符名称
>大于
<小于
==等于
!=不等于
>=大于等于
<=小于等于

示例:
在这里插入图片描述

3.逻辑运算符

名称操作符
and
or
not

示例:
在这里插入图片描述

4.位运算符

(1).操作符

名称操作符
按位取反~
按位与 &
按位或 |
按位异或 ^
左移<<
右移>>

示例:
在这里插入图片描述
负数的补码:手动将其和十六进制数0xffffffff进行按位与操作,再交给bin()进行输出

(2).位运算

二进制数有三种表示形式:原码、反码、补码。
二进制数在计算机中是以补码的形式储存的。
所有位运算都是针对补码进行操作的。

原码:即二进制表示。

5 -> 0000 0101

负数的反码:符号位(即最高位)不变,其余各位取反。
正数:原码=反码=补码
负数:补码=反码+1

补码:

5原码: 0000 0101
补码、反码:0000 0101
-2原码:1000 0010
反码:1111 1101
补码:1111 1110

按位取反:对补码进行取反,包括符号位,各位取反。

正数按位取反后为负数,因此要对该补码-1得到反码,再取其原码。
负数按位取反后为正数,因此该补码即其按位取反后的原码。

按位取反可总结为: ~x= -(x+1)

例: 5 原码: 0000 0101
反码、补码: 0000 0101
按位取反:1111 1010
求其原码:
对上一步-1:1111 1001
取其反码 : 1000 0110
所以得到5按位取反后的原码为:1000 0110 -> -6

-2 原码 : 1000 0010
取其反码:1111 1101
取其补码:1111 1110
按位取反:0000 0001
求其原码:0000 0001(正数补码=反码)
所以得到-2按位取反后的原码为:0000 0001 -> 1

按位与:各位进行and操作,同为1则为1,其余均为0.
1&1=1
1&0=0
0&1=0
0&0=0

5 -> 0000 0101
6-> 0000 0110
5&6 -> 0000 0100

按位或:各位进行or操作,只要有一个1则为1,否则为0.
1 | 1=1
1 | 0=1
0 | 1=1
0 | 0=0

按位异或:各位相同则为0,不同则为1
1^1=0
0^0=0
1^0=1
0^1=1

4 -> 0000 0100
5 -> 0000 0101
4^5 -> 0000 0001

通过^可快速交换两个整数a,b:
a=a^b
b=b^a
a=a^b

左移:将二进制左移x位,低位补0。
右移:将二进制右移x位。

2n可用左移快速计算:n << 1
n/2可用右移快速计算:n >> 1 (负奇数不可用)
推广:
n乘以2的m次方: n << m
n除以2的m次方:n >> m
2的k次方:1 << k (令n=1,m=k)

示例:LeetCode 136.只出现一次的数字
在这里插入图片描述
运用位运算中的异或操作^
任意非零的数与0进行异或操作均为其自身,而任意相同的两个数的异或运算均为0。因此可根据异或^的两个特性,得到只出现一次的数。

class Solution:
    def singleNumber(self,nums:List[int]) -> int:
    t=0
    for i in nums:
        t ^= i
    return t

5.成员运算符、身份运算符

操作符名称
in存在
not in不存在
is
is not不是

示例:

word=[‘a’,‘b’,‘c’]
if ‘a’ in word:print(‘a’+’ exists’)
if ‘d’ not in word:print(‘d’+’ not exists’)
#a exists
#d not exists

a,b=2,2
print(a is b,a== b)
#True True
print(a is not b,a!=b)
#False False
a,b=‘word’,‘word’
print(a is b,a== b)
#True True
a,b=[‘word’],[‘word’]
print(a is b,a==b)
#False True

补充:is,not is 比较的是内存地址,==,!=比较的是值

6.运算符优先级

总体遵循以下规则:
一元运算符 > 二元运算符
算术运算符 > 移位运算符 > 位运算符
比较运算符 > 逻辑运算符

具体:
指数**有最高优先级。
二元运算符中乘、除、整除、取余高于加、减。
比较运算符:not> and>or
逻辑运算符:&>^>|

2**3+1 = 8+1 = 9
9>>1+2&5 = 9>>3&5 = 1&5 = 1
2>1 and 2==3 等价于 True and False 等价于 False
print(1 or 0 and 0)
#True
print(bin(4|5&6^7))
#0b111

三、数据类型与转换

类型名称
int整型
float浮点型
bool布尔型
complex复数型

补充:
python3以上整型没有大小限制。
复数表示为 a+ib=complex(a,b),其中实部和虚部都是浮点型。
布尔型bool()只有当数值变量为0、0.0或容器变量为空时返回False,其余返回True

int(x):将x转换为整型
float(x):将x转换为浮点型
bool(x):将x转换为布尔型
complex(x):将x转换为一个实部为x,虚部为0的复数
complex(x,y):将x,y转换为一个实部为x,虚部为y的复数
str(x):将x转换为字符串

四、输出print()

print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

print()可将对象以字符串的形式输出到流文件对象file里。
‘sep’ :分隔符,将多个输出参数进行分隔。
‘end’ :结束字符,默认是换行符’\n’。
‘file’ :定义输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件。
‘flush’:是否立即把内容输出到流文件,不作缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值