[PY] Python API

1. 字典 Dict

1.0 初始化

1.0.1 初始化赋值

map = {}
# 【特别注意】 不能使用双引号,否则会出现无法取到key的问题,只能使用单引号
map = {"a": 1, "b": 2, "c": 3, "d": 4}
# 正解
map = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

1.0.2 new方式

map = dict()

1.1 字典 遍历

1.1.1 遍历key

for key in map:
    log.info(key + ":" + str(map[key])) 

for key in map.keys():
  log.info(key+':'+ str(map[key]))

1.1.2 遍历value

for value in map.values():
    log.info(value)

1.1.3 遍历字典项items

for kv in map.items():
  log.info(kv)

1.1.4 遍历字典key-value

for key, value in map.items():
    log.info(key + ':' + str(value))

for (key, value) in map.items():
    log.info(key + ':' + str(value))

1.2 取值与赋值

取值

# ['key'], key不存在时,抛异常
log.info(map['a'])

# get['key'], key 不存在时,返回None
log.info(map.get('a'))

#['key'], key不存在时,抛异常
log.info(map.__getitem__('a'))

# get为null时 默认初始值
map.get('a', 10086)
# 【特别注意】当key值不存在时,取出来的是None,且无法使用变量去引用这个None 会抛异常
excp = map['aaaa']

# 赋值
map['a'] = 1024
# 添加新值
map['z'] = 1024

# 删除
del map['a']

判断key是否存在

if(a in map):

if(a not in map):

map.__contains__('a')

2. 列表 list

2.1 创建list

lst = list()
lst = []

2.2 遍历list

list = ['html', 'js', 'css', 'python']
# 方法1
for val in list:
    print("index:%s   val:%s" % (list.index(val), val))

# 方法2
for val in range(len(list)):
    print("index:%s   val:%s" % (val, list[val]))

# 方法3
for idx, val in enumerate(list):
    print("index:%s   val:%s" % (idx, val))

print('-----')
# 方法3 第二个参数只是改变了idx的值,但val仍旧是从索引为0开始
for idx, val in enumerate(list, 2):
    print("index:%s   val:%s" % (idx, val))

3. 数组

3.定义已知长度的数组

9. 类型判断与转换

9.0 类型判断


x = ''

# 判断一个变量类型是否是int
isinstance(x, int)

# 判断一个字符串是否是数值
x.isdigit()

9.1 int str之间转化

# int -> unicode: 
unicode(int_value)

# unicode -> int: 
int(unicode_value)

# str -> unicode: 
unicode(str_value)

# unicode -> str: 
str(unicode_value)

# int -> str: 
str(int_value)

# str -> int: 
int(str_value)

10 系统

获取当前系统

platform.system()
win:Windows
黑苹果:Darwin

print("----------Operation System--------------------------")
# Windows will be : (32bit, WindowsPE)
# Linux will be : (32bit, ELF)
print(platform.architecture())

# Windows will be : Windows-XP-5.1.2600-SP3 or Windows-post2008Server-6.1.7600\
# Linux will be : Linux-2.6.18-128.el5-i686-with-redhat-5.3-Final\
print(platform.platform())

# Windows will be : Windows
# Linux will be : Linux
print(platform.system())

print("--------------Python Version-------------------------")
# Windows and Linux will be : 3.1.1 or 3.1.3
print(platform.python_version())

11. 科学计算

11. 分式


# Fraction的输出为字符串表示的分式

# 1. 表达式,Fraction(分子, 分母) , f = '分子/分母'
f = Fraction(1, 3)  # 1/3
log.info(f)

# 1.1 字符串写法
f = Fraction('1/3')  # 1/3
log.info(f)

f = Fraction('1/3')  # 1/3
log.info(f)

# 1.2 直接输入小数,Fraction方法直接把小数变成分数。
f = Fraction(1.5)  # 3/2
log.info(f)

f = Fraction(Decimal('1.5'))  # 3/2
log.info(f)

# 2. 分式四则运算
# 2.1 分式相加,会自动约减成最简分式 1/6 + 1/6 = 2/6 = 1/3
f = Fraction(1, 6) + Fraction(1, 6)
log.info(f)
# 1/6 + 3 = 1/6 + 18/6 = 19/6
f = Fraction(1, 6) + 3
log.info(f)

# 1/3 + 1.5 = 1/3 + 3/2 = 11/6 =
f = Fraction(1, 3) + 1.5
log.info(f)

# 除法 / true除法 除尽16位小数
log.info(11 / 6)  # 1.8333333
# 除法 // floor除法 向下取整 地板除 1.833 -> 1
log.info(11 // 6)
# 除法 math.ceil() 向上取整 1.833 -> 2
log.info(math.ceil(11 / 6))
# 除法 math.ceil(float(a) / b) 向上取整 1.833 -> 2
log.info(math.ceil(11 / 6))
# 除法 math.ceil(float(a) / b) 向上取整 1.833 -> 2
log.info(math.ceil(float(11.0) / 6))
# 除法 round(result) 四舍五入 1.5 -> 2 , 1.4 -> 1
log.info(round(1.5))
log.info(round(1.4))

# 1/3 + 1.5 = 0.33333 + 1.5 = 1.8333333333333333
f = Fraction(1, 3) + Fraction(1, 3) + Fraction(1, 3) + 1.5
log.info(f)

# 2.2 分式相乘, 1/6 * 3 = 1/2
f = Fraction(1, 6) * 3
log.info(f)
# 1/6 * 1/6 = 1/36
f = Fraction(1, 6) * Fraction(1, 6)
log.info(f)

# 2.3 分式相除
f = Fraction(1, 6) / 3  # 1/18
log.info(f)

f = 3 / Fraction(2, 3)  # 9/2
log.info(f)

# 倒数
f = 1 / Fraction(3, 32)
log.info(f)  # 32/3
f = 1 / f
log.info(f)  # 3/32

# 保留一位小数
a = 3.36
# 会四舍五入
b = format(a, '.1f')
log.info(b)
# 不进行四舍五入
b = int(a * 10) / 10
log.info(b)

# 不进行四舍五入
def split_float_number(val, pos=1):
    rs = str(val).split('.')[0] + '.' + str(val).split('.')[1][:pos]
    return float(rs)

log.info(split_float_number(a))

12 Lambda

map中的错误用法

lineEditMap = {
            self.lineEdit_fenLi: lambda num: 0 < num and num < 15,
            self.lineEdit_chaYi: lambda num: 0 < num and num < 20,
            self.lineEdit_sheJi_baoHu: lambda num: 0 < num and num < 15,
            self.lineEdit_sheJi_baoHu_2: lambda num: 0 < num and num < 5,
            self.lineEdit_pingJia: lambda num: 0 < num and num < 5,
            self.lineEdit_nengLi: lambda num: 0 < num and num < 5,
            self.lineEdit_env_EMC: lambda num: 0 < num and num < 25,
            self.lineEdit_env_other: lambda num: 0 < num and num < 10
        }

# 诡异无法使用以下的方式
for key, val in lineEditMap.items():
  key.textEdited.connect(lambda : self.sumCCF_Slot(key, val))

结果,最终只是按map最后一项进行输出

计算公式

f = lambda x, n: round(x, n - len(str(int(x))));
f(123.456789, 8)
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!