一. 逻辑运算
- bool类型的True与False
1 == True #打印True
2 == True #打印false
if (2):
print(True) #会打印True
else:
print(False)
#此处[]、()、{}、None、''、""等都与False不相同,只有0与0.0相同
if ([] == False):
print(True)
else:
print(False) #打印false
#True = 1 //invalid
经以上判断,True的值应该是1,False的值应该为0/0.0。
重改True与False的值是非法的
- True、False类型的转换
#''、""、()、{}、[]、None、0、0.0
if (''):
print(True)
else:
print(False) #打印False
True/False本身值为多少与什么值可以转换为True/False是完全不同的概念。
上述’’、""、()、{}、[]、None、0在判断中默认会转换为False。
剩余的基本就是True。比如非0数值、非空字符串(字符串有一个空格也是非空字符串)等默认会转换为True。
- 逻辑非与或
(1 == 1) and (2 == 0) #结果为False
(1 == 1) or (1 == 0) #结果为True
not (1 == 1) #结果为False
这是逻辑非与或,为啥不写成与或非,因为三者优先级是非与或,嘻嘻。
python只能使用and、or、not,不支持&&、||、!。
- 位运算
2 & 1 #0
2 | 1 #3
2 ^ 1 #3
2(‘b0000_0010): 即2进制10
1('b0000_0001): 即二进制01
按位或:0000_0011=3
按位与:0000_0000=0
按位异或:0000_0011=3
位运算还是verilog牛逼,嘻嘻。
二. 语句块
- python每条语句后一般不需要分号结尾(一行写多条语句使用分号结尾,我个人不这样做),语句块是采取缩进的办法。
(其他语言平时看到不对齐的代码痛不欲生,我觉得python挺好) - python中是elif(systemverilog中是else if,`elsif用于宏)。
- python for循环比较牛逼:
for i in "sanshi":
print(i)
for i in [1, 2, {1:1, 2:2}, [3, 4, 5]]
print(i)
for循环可以遍历许多东西,list、tuple、文件、字符串等等,我觉得贼强大。
- while循环啥啥啥的没什么好写的,循环中可以使用continue与break。
- python没有case语句,只能使用一个一个if。
三. python整数
#打印5,4,3,2,1
a = 5
while (a > 0):
print(a)
a -= 1
python默认是有符号数,不然此循环应是一个死循环。
python没有++、–操作符,只能使用+=、-=(这个确实很难受,不过小问题)。
四. range函数
for i in range(5) #0, 1, 2, 3, 4,不包括5
for i in range(2, 5) #2, 3, 4
for i in range(0, 10, 2) #0, 2, 4, 6, 8
for i in range(10, -1, -1) #每次减1.从10到0
很简单,指定范围,指定步长就好了。
五. 导入random与sys
1.导入模块方式
import random #使用randint:random.randint
from random import * #使用randint:randint直接用
import random as rand #使用randint:rand.randint
import直接导入:使用函数都要加包的前缀。
from import方式导入:导入的函数不用加包的前缀。
import as:包的名字更改,使用函数加更改后包的名字前缀。
- import random模块
import random
random.randint(5, 100) #[5, 100]闭区间
list_tmp = [1, 2, 3, 4, 5]
random.shuffle(list_tmp) #打乱list_tmp内部元素
random内部还有许多函数,看自己的需求。
- import sys模块
import sys
for i in sys.argv:
if (i == "abc"):
sys.exit()
print(i)
执行python给的参数会存在sys.argv中,是个列表。
可以执行sys.exit()结束程序。
sys模块还有许多函数,看自己需求。