Task01 Python基础入门:从变量到异常处理(第1天)

学习内容概括:

1、变量、运算符与数据类型

2、位运算


具体学习内容:

一、 变量、运算符与数据类型

注释

"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print('hello china')
# hello china

'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print('hello china')
# hello china

运算符

1、算术运算符

print(2 + 3)
print(2 - 3)
print(2 * 3)
print(2 / 3)
print(2 // 3)
print(3 % 2)

2、比较运算符

print(3 > 2)
print(3 < 4)
print(3 == 3)
print(3 != 4)
print(3 <= 4)
print(3 >= 2)

3、逻辑运算符

print((3>2) and (4>3))
print((4>5) or (6 < 7))
print(not (4>5))

4、位运算符

print(bin(~2))
print(bin(4&5))
print(bin(4 | 5))
print(bin(4 ^ 5))
print(bin(4 >> 1))
print(bin(4 << 1))

5、三元运算符

x,y = input(),input()
max = x if x > y else y
print(max)

6、其它运算符

letters = ['a','b','c']
if 'a' in letters:
    print('a' + 'exists')
if 'A' not in letters:
    print('A' + ' not exists')
a = ['hello']
b = ['hello']
print(a is b,a == b)
c = 'hello'
d = 'hello'
print(c is d, c == d)

注意:

  • is 和 is not 对比的是两个变量的内存地址
  • == 和 != 对比的是两个变量的值

即二者比较与内存地址有关

  • 如不可变地址(str),二者无差异
  • 如是可变类型(list,tupple,set,dict)等,二者不同

7、运算符的优先级

运算符

变量和赋值

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

数据类型与转换

在这里插入图片描述
可以使用decimal包中的Decimal控制精确度

decimal.getcontext().prec = 5
c = Decimal(1) / Decimal(3)
print(c)

获取类型信息,比较类型是否相同,有两种方法

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。(推荐)

print函数

主要学习sep参数和end参数

shoplist = ['apple','mango','carrot','banana']
print("This is printed with 'end='&''.")
for item in shoplist:
    print(item,end = "&")
shoplist = ['apple','mango','carrot','banana']
print("This is printed with 'sep='&''.")
for item in shoplist:
    print(item,"another string",sep = '&')

二、位运算

前面的学习对于我来说,尚算简单,之前学python基础时,有学过,当然本身也不难。

但位运算,就我而言是比较难的,主要是教程比较简单,看得一头雾水,没有方向,抓不住重点,然后百度了一些见解后,才算入门这块知识。

在学习位运算之前,如果了解以下几点,应该就比较容易入门了。

  1. 按位运算,顾名思义,是按位置计算
  2. 计算机进制的了解以及相互转换(主要是二进制)
  3. 进制有三种不同的表达形式:原码、反码、补码
    在这里插入图片描述
  4. 位运算都是基于补码操作的
  5. Python中bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负号
print(bin(3))  # 0b11
print(bin(-3))  # -0b11

所以,在进行位运算时,先得到的是反码。

1、按位非操作

~num的补码中的 0 和 1 全部取反(0 变为 1,1 变为 0)有符号整数的符号位在 ~ 运算中同样会取反。

print(~3)  # -4

3的二进制是00000011(以8位为例,不足用0补齐),因为计算机操作的是反码,所以先要转换,不过正数的反码、补码都是原码,所以我们直接取反即可,得到11111100,此时注意,得到的仍然是补码,而且符号位是1,是负数了,先转换为反码,即补码-1,得到11111011,再转为原码,即取反,符号位不变,得到10000100,即-4.

2、按位与操作

即相同位置都是1为1,否则为0

3 & 4  # 0

3的补码是00000011,4的补码是00000100,按位置看,无同为1的,所以是00000000

3、按位或操作

相同位置有1个1就为1,否则为0

3 | 4  # 7

3的补码是00000011,4的补码是00000100,即00000111,转为10进制则为7.

4、按位异或操作

相同位置不同则为1,否则为0
异或满足交换律和结合律
m ^ 0 = m
m ^ m = 0

3 ^ 4  # 7

3的补码是00000011,4的补码是00000100,即00000111,转为10进制则为7

5、按位左移

num << inum按位左移i位,右边补0

7 << 2  # 28

7的补码是00000111,左移两位,即00011100,转为十进制,即2**4+2**3+2**2=28
6、按位右移
num >> inum按位右移i位,左边补0

7 >> 2  # 1

7的补码是00000111,右移两位,即00000001

6、利用位运算实现整数集合

学会此部分重点是需要理解交集、并集、合集、差集的概念。
在这里插入图片描述
实际上插入,可以看成是求并集,删除是求差集。

学习过程遇到的问题和解决方法

主要就是位运算不太理解。

位运算

  • Q:不知道二进制与十进制的转换
  • A:二进制转十进制,模仿十进制即可;十进制转二进制,利用除2取1
  • Q:不知道计算机是对补码进行操作
  • A:学会原码、反码与转码即可。

总而言之,遇到问题百度以下,你就知道,多看几个人写的内容,总会遇到解释符合自己理解能力的。

总结

1、三元运算符,可以简化代码
2、isis not是判断内存地址;==!=是判断数值
3、运算符级别较多,习惯用小括号
4、变量名对大小写敏感,命名只支持字母、数字、下划线且不能以数字开头
5、decimal包中的Decimal对象和getcontext()方法可以控制精确度
6、bool
- 对于数值变量, 0 , 0.0 都可认为是空的。
- 对于容器变量,里面没元素就是空的。
7、判断数据类型是否相同,建议用isinstance() > type()
8、计算机内部是用补码表示的,正数和0,原码、反码、补码都是本身。
负数的原码,是其绝对值的原码在其符号位上变为1,反码是符号位不变,其余位取反,补码是反码+1
9、位运算都是基于补码运算,按位非操作,会操作符号位。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值