DataWhale python基础 Task1

DataWhale python基础 Task1

变量、运算符与数据类型

注释

  1. 行注释,作用于整行:#
# 注释
print('Hello world')

# Hello world
  1. 区间注释,作用于注释号区间内:''' '''或 """ """
'''
多行注释,作用于单引号区间内
'''

"""
多行注释,作用于双引号区间内
"""
print('Hello world')
#Hello world

运算符

运算符

逻辑运算符

and(与):只要有一个为假则为假
or(或):只要有一个为真则为真
not(非):not(True)–> False ; not(False)–>True

位运算
位运算符
  • ~(按位非/按位取反):参加运算的一个数据,按二进制位进行“取反”运算。
    ~0 = 1
    ~1 = 0
    对二进制数进行取反0变1 1变0
  • &(按位与):参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
    1 & 1 = 1
    1 & 0 = 0
    0 & 1 = 0
    0 & 0 = 0
  • | (按位或):参与运算的两个值,如果有一个位1,则为1
    1 | 0 = 1
    0 | 0 = 0
    1 | 1 = 1
  • ^ (按位异或):当参与运算的两个值如果相异时,则为1
    1 ^ 1 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    异或操作满足交换律和结合律
A : 00 00 11 00
B : 00 00 01 11

A^B : 00 00 10 11
B^A : 00 00 10 11

A^A : 00 00 00 00 
A^0 : 00 00 11 00

A^B^A = A^A^B = B = 00 00 01 11 
  • << (左移动运算符):运算符各二进制位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
    num << i 将num的二进制表示向左移动位

      11 << 3 ----------> 10 11 -> 10 11 00 0
      11 << 3 = 88
    
  • >> (右移动运算符):运算符各二进制位全部右移若干位

     11 << 3 ----------> 10 11 -> 1
     11 << 3 = 1
    
原码、反码和补码

二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示

  • 原码:二进制表示,第一位为符号位(0表示正数,1表示负数)
  • 反码:正数的反码为其原码,负数的反码为原码的基础上符号位不变,其余各位取反。
  • 补码:证书的补码为原码,富庶的补码为反码+1
    [ + 1 ] = [ 0000    0001 ] 原 = [ 0000    0001 ] 反 = [ 0000    0001 ] 补 [+1] = [0000 \; 0001]_原 = [0000 \; 0001]_反 = [0000 \; 0001]_补 [+1]=[00000001]=[00000001]=[00000001]
    [ − 1 ] = [ 1000    0001 ] 原 = [ 1111    1110 ] 反 = [ 1111    1111 ] 补 [-1] = [1000 \; 0001]_原 = [1111 \; 1110]_反 = [1111 \; 1111]_补 [1]=[10000001]=[11111110]=[11111111]
三元运算符
  • 语法: 语句1 if 条件表达式 else 语句2
x, y = 4, 5
small = x if x < y else y
print(small) # 4
其他运算符
  • is(是)
'hello' is 'hello'  # True
  • is not (不是)
'hello' is not 'hello'  # False
3 is not 5 # True
  • in (存在)
5 in [1,2,3,4,5] # True
  • not in (不存在)
5 not in [1,2,3,4,5] # False
Notice
  • is, is not 和 ==, != 对比
    1. is, is not 对比的为两变量的内存地址
    2. ==, != 对比的是两变量的值
    3. 对于内存地址不可变类型 两类操作符等价(str等)
    4. 对于内存地址可变类型(list, dict, tuple等),则是有区别的
  • 运算符的优先级
    1. 一元运算符优先于二元运算符
    2. 先算数,后移位,最后位运算
    3. 逻辑运算最后结合
#1. 一元运算符优先于二元运算符
print(-3 ** 2) # -9
print(-3 * 2 + 5 / -2 - 4) # (-6+ (-2.5) - 4) = -12.5
#2. 先算数,后移位,最后位运算
1 << 3 + 2 & 7    
""" 3 + 2 = 5 
	1 << 5 --> 1->100000
	1 << 5 = 32
	32 & 7 = 0
"""
#3. 逻辑运算最后结合
3 < 4 and 4 < 5
"""
3 < 4 True
4 < 5 True
True and True ---> True
"""

变量和赋值

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

数据类型转换

在这里插入图片描述

基本类型
  • 整型:通常被称为是整型或整数,是正或负整数,不带小数点。
  • 浮点型:Python的浮点数类似数学中的小数和C语言中的double类型。
  • 布尔型:设置了true和false代表真假。任何对象都可以转成布尔类型,也可以直接用于条件判断。对象为空则False, 非空则True。
    1、bool作用在基本类型变量,对数值型变量0, 0.0为空。
    2、bool作用在容器类型变量:对容器变量,里面没有元素为空。
print(type(0), bool(0), bool(1))
# <class 'int'> False True
print(type(10.31), bool(0.00), bool(10.31)) 
# <class 'float'> False True
print(type(True), bool(False), bool(True)) 
# <class 'bool'> False True

print(type(''), bool(''), bool('python'))
# <class 'str'> False True
print(type(()), bool(()), bool((10,))) 
# <class 'tuple'> False True
print(type([]), bool([]), bool([1, 2])) 
# <class 'list'> False True
print(type({}), bool({}), bool({'a': 1, 'b': 2})) 
# <class 'dict'> False True
print(type(set()), bool(set()), bool({1, 2})) 
# <class 'set'> False True

python中的整型以补码形式存储,不限制长度时不会超范围溢出

变量类型获取
  • type(object)
print(type(666))
# <class 'int'>
print(type(666.66))
# <class 'float'>
print(type(True))
# <class 'bool'>
  • isinsrtance(object, classing)
print(isinstance(1, int))
# True
print(isinstance(True, bool))
# True
类型转换
  • 转换为整型 int(x, base=10)
  • 转换为字符串 str(object=’’)
  • 转换为浮点型 float(x)
# str ---> int 
print(int('520')) # 520
# float ---> int
print(int('520.52') # 520
# float ---> str
print(str(10.1 + 5.2), type(str(10.1 + 5.2))) # 15.3 <class 'str'>

print()函数

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
  1. 将对象以字符串表示的方式格式化输出到流文件对象file。其中非关键字参数都按照str()方式进行转换为字符串输出
  2. sep:分隔符,以什么作为分隔
  3. end: 输出结束时的字符,默认换行符\n
  4. file: 定义流输出的文件,默认为标准的系统输出sys.stdout, 也可重定义为比的文件
  5. flush: 内容输出到流文件,不做缓存
    在这里插入图片描述

位运算

利用位运算实现快速计算
  • 通过<<, >> 快速计算2 的倍数问题
    在这里插入图片描述
    在这里插入图片描述

  • 通过^快速交换两个整数
    a ^= b
    b ^= a

  • 通过a & (-a)快速获取a的最后为1位置的整数
    在这里插入图片描述

利用位运算实现整数集合

一个数的二进制表示可以看作一个集合(0表示不在集合中,1表示在集合中)
比如集合{1, 3, 4, 8} 可以表示成 01 00 01 10 10
在这里插入图片描述
对应的位运算也可以看作是对集合进行的操作

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值