task1 python入门1
一些书写规范
- #后变可以写注释内容
print('Hello') #输出hello
- 如果是多行注释,可以用三个引号(单引号双引号均可):
'''
这里可以写多行注释
以下代码为输出“hello”
'''
print('Hello')
- 想要适用变量前需要先赋值变量
a = 'Hello' #先赋值给变量a,此处a为‘Hello’字符串
print(a) #Hello
数据类型
- int——整数
查看整数长度:
a = 3
b = a.bit_length()
print(b) #2
- float——浮点数
如果设置float小数点位数,可以用decimal包里的Decimal对象和getcontext()方法来实现:
import decimal #import package 引入包
from decimal import Decimal
decimal.getcontext().prec=4
c = Decimal(1) / Decimal(3)
print(c)
# 0.3333
import package —— 引入package
dir(package) —— 查看package里的方法
- string——字符串
字符串可以相加
a = "Hello"
b = " World"
print(a+b) #Hello World
- bool——布尔类型(True False)
0, 0.0都代表False,其他数代表True
但注意:
确定bool(x)的值是True还是False,就看x是不是空,空的话就是False,不空的话是True - 对于数值变量,0,0.0都可以认为是空
- 对于容器变量,里面没有元素就是空
a = bool(0)
b = bool(0.0)
c = bool(1)
d = bool(2)
e = bool([0])
f = bool([1])
g = bool([])
print(a,b,c,d,e,f) #False False True True True True False
数据类型查看和转换
查看数据类型:
a = 3
print(type(a)) #<class 'int'>
print(isinstance(a,int)) #True
数据类型转换:
int(x,base=10)
str(object=’ ')
float(x)
如果字符串是数字,可以转为int或float,如果字符串有字母或其他,则不可以转。
运算符
- 算数运算符
- 比较运算符
3.逻辑运算符
4.位运算符
5.其他运算符
【例子】比较的两个变量均指向不可变类型。
a = "hello"
b = "hello"
print(a is b, a == b) # True True
print(a is not b, a != b) # False False
【例子】比较的两个变量均指向可变类型。
a = ["hello"]
b = ["hello"]
print(a is b, a == b) # False True
print(a is not b, a != b) # True False
注意:
- is, is not 对比的是两个变量的内存地址
- ==, != 对比的是两个变量的值
- 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
- 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
运算符的优先级
位运算
原码、反码和补码
二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。
原码:二进制表示
反码:整数的反码是原码,负数的反码是符号位不变,其余取反
补码:正数的补码就是原码,负数的补码就是反码+1。
(最高位为符号位,0是整数,1是负数)
原码:
00 00 00 00 11 —— 3
10 00 00 00 11 —— -3
反码:
00 00 00 00 11 ——3
11 11 11 11 00 —— -3
补码:
00 00 00 00 11 —— 3
11 11 11 11 01 —— -3
位运算:
位非 ~ 0和1取反,有符号也取反
位与 & 两个对应位都为1才取1
位或 | 两个对应位有1就取1
位异 ^ 两个对应为不同时取1
位左<< num<<i 代表num二进制向左i位
位右 >> num>>i 代表num二进制向右i位
利用位运算实现快速计算
n<<1——n2
n>>1——n/2,负奇数运算不可用
n<<m——n(2^m)
n>>m——n/(2^m)
1<<n —— 2^n
a & (-a) 快速获取a的最后为1的位置的整数
利用位运算实现整数集合
a | (1<<i) -> 把 i 插入到集合中
a & ~(1<<i) -> 把 i 从集合中删除
a & (1<<i) -> 判断 i 是否属于该集合(零不属于,非零属于)
集合之间的操作:
a 补 -> ~a
a 交 b -> a & b
a 并 b -> a | b
a 差 b -> a & (~b)
注意:整数在内存中是以补码的形式存在的,输出自然也是按照补码输出。
- Python中bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负。
- Python中的整型是补码形式存储的。
- Python中整型是不限制长度的不会超范围溢出。
条件语句
- if
- if-else
- if-elif-……-elif-else
- assert
assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。
循环语句
- while
- while-else
- for
- for-else
- range(start,end,step)
- enumerate()函数
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
lst = list(enumerate(seasons, start=1)) # 下标从 1 开始
print(lst)
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
-
break 语句
break语句可以跳出当前所在层的循环。 -
continue 语句
continue终止本轮循环并开始下一轮循环。 -
pass 语句
不做任何事 -
推导式
[ expr for value in collection [if condition] ]
( expr for value in collection [if condition] )
{ key_expr: value_expr for value in collection [if condition] }
异常处理
- try-except
except后要接错误类型,不然不执行 - try-except-finally
finally:不管结果如何都执行的语句 - try-except-else
else:如果没有异常执行的代码 - raise
Python 使用raise语句抛出一个指定的异常。
try:
raise NameError('HiThere')
except NameError:
print('An exception flew by!')
# An exception flew by!