Python:总结编程的一些小技巧(一)


1. 分割字符串,并且输出倒数第2个字符串。

a = '123|456|789|0'
s = a.split('|')[-2]
print(s)

运行结果

2. 遍历2个列表,同步输出列表内容

a = '123456'
b = 'abcdef'
for a1, b1 in zip(a, b):
    print(a1, b1)

运行结果

a = '123456'
b = 'abcde'  # 列表a,b长度不对齐时
for a1, b1 in zip(a, b):
    print(a1, b1)

运行结果
注:当列表长度不一时,以长度小的字符串为输出依据

3. 在字符串中插入变量

a = '12'
b = 3
c = 4
d = "56"

# 方法1
s = ''
s = a + str(b) + str(c) + d
print('方法1:' + s)

# 方法2
s = ''
s = '12%d%d56' % (b, c)
print('方法2:' + s)

# 方法3
s = ''
s = '12{}{}56'.format(b, c)
print('方法3:' + s)

# 方法4
s = ''
s = f'12{b}{c}56'
print('方法4:' + s)

运行结果

4. 为每个字符串创建进度条

import time
from tqdm import trange  # 进度条

a = ['a1', 'a2', 'a3']
for s in a:
    with trange(10) as bar:  # 进度条
        for i in bar:
            time.sleep(1)
            bar.set_description(s)

运行结果

5. 无需添加库,手动输出进度条

import time

length = 20  # '▉'的总长度
num = 1000  # 精度,每次增加1/num
step = num / length
for i in range(0, num + 1):
    # 可在以下位置添加代码

    time.sleep(0.01)
    n = int(i / step)
    f = '\r进度条:|{:<' + str(2*length - n) + '}|{:>7.1%}'  # 调整进度条长度
    print(f.format('▉' * n, i / num), end='')
print('\n')

进度条1

进度条2

6. 修改打印输出的结尾字符,避免直接换行

print('a')  # 自动换行
print('b')

print('a', end='')  # 自动换行
print('b')

print('a', end='-')  # 以'-'结尾
print('b')

运行结果

7. 居中对齐(左对齐、右对齐)打印数字,汉字和英文混合的表格

# 虽然len(排名)=len('12')=2,但实际显示字符所占空间,1个汉字占2个英文
s = [
    {'排名': '1', '学校': '清华大学', '总分': '100', '网址': 'http://www.tsinghua.edu.cn'},
    {'排名': '2', '学校': '北京大学', '总分': '80.5', '网址': 'http://www.pku.edu.cn'},
    {'排名': '3', '学校': '香港中文大学', '总分': '70.1', '网址': 'http://www.cuhk.edu.hk'},
    {'排名': '6', '学校': '中国科学技术大学', '总分': '61.4', '网址': 'http://www.ustc.edu.cn'},
    {'排名': '15', '学校': '华中科技大学', '总分': '44.3', '网址': 'http://www.hust.edu.cn'},
    {'排名': '33', '学校': '北京航空航天大学', '总分': '3.1', '网址': 'http://www.buaa.edu.cn'}
]
h = '-------------------------------------------------------------------------------------------------------------------'

n = 26  # 每n一列宽度,尽量为2的倍数
# 0:1: 2: 代表变量序号,与 % (n, n, n)对应
# - 表示空白部分用-填充
# ^ < >分别表示居中对齐,左对齐,右对齐
f = '{0:-^%d}|{1:-^%d}|{2:-^%d}|{3:-^%d}' % (n, n, n, n)
print(f.format('排名', '学校', '总分', '网址'))
for s1 in s:
    n1 = n + len('排名')  # 对于数字或英文,第1列实际宽度
    n2 = n + len('学校') - len(s1['学校'])  # 第2列实际宽度
    n3 = n + len('总分')  # 对于数字或英文,第3列实际宽度
    n4 = n + len('网址')  # 对于数字或英文,第4列实际宽度
    f = '{0:-^%d}|{1:-^%d}|{2:-^%d}|{3:-^%d}' % (n1, n2, n3, n4)
    print(f.format(s1['排名'], s1['学校'], s1['总分'], s1['网址']))

print()  # 换行
n = 26  # 每n一列宽度,尽量为2的倍数
f = '{0:^%d}{1:^%d}{2:^%d}{3:^%d}' % (n, n, n, n)
print(f.format('排名', '学校', '总分', '网址'))
print(h)
for s1 in s:
    n1 = n + len('排名')  # 对于数字或英文,第1列实际宽度
    n2 = n + len('学校') - len(s1['学校'])  # 第2列实际宽度
    n3 = n + len('总分')  # 对于数字或英文,第3列实际宽度
    n4 = n + len('网址')  # 对于数字或英文,第4列实际宽度
    f = '{0:^%d}{1:^%d}{2:^%d}{3:^%d}' % (n1, n2, n3, n4)
    print(f.format(s1['排名'], s1['学校'], s1['总分'], s1['网址']))

运行结果

注: ^ < >分别表示居中对齐,左对齐,右对齐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值