基本数据类型
1.数值型数据:
实例之天天向上1.0:
每天进步的力量:
每天进步1%o,一年下来进步多少呢
每天退步1%o,一年下来退步多少呢
给出代码:
dayfactor = 0.001
up = pow(1+dayfactor,356)
down = pow(1-dayfactor,365)
print('天天向上最终成为原来的{:.2f}倍,天天向下最终成为原来的{:.2f}倍'.format(up,down))
结果:天天向上最终成为原来的1.43倍,天天向下最终成为原来的0.69倍
这样我们可以通过修改dayfactor而轻松计算不同进步幅度的最终进步/退步结果
例如0.1倍时
天天向上最终成为原来的34.55倍,天天向下最终成为原来的0.03倍
实例之天天向上2.0:
工作日的力量:
入过我们加入一个新的条件,即,只有工作日时进步,周六日会退步
dayup = 1.0
for i in range(365):
if i%7 in [6,0]:
dayup = dayup*(1-dayfactor)
else:
dayup = dayup * (1 + dayfactor)
print('最终变为原来的{:.2f}倍'.format(dayup))
结果为:最终变为原来的4.63倍
实例之天天向上3.0:
如果我们采取工作日向上的进步方式,且周末退步1%,那么我们工作日要进步多少才能和天天向上进步1%相当呢?
代码实现:
def dayUp(dayfactor):
dayup = 1.0
for i in range(365):
if i%7 in [6,0]:
dayup = dayup*(1-0.01)
else:
dayup = dayup * (1 + dayfactor)
return dayup
dayfactor = 0.01
while dayUp(dayfactor) < 37.38:
dayfactor += 0.01
print('每天进步{},工作日进步力量才能追上天天向上进步0.01力量'.format(dayfactor))
代码解析:
我们首先应该将2.0中的工作日进步力量封装成一个函数,以工作日进步的幅度为参数,这样时为了方便这段代码,对于不同进步幅度的复用。封装完成后,我们可以用最传统的蛮力法对不同的进步幅度进行试错,每次进步幅度上涨0.01,这样蛮力计算,直到追赶上天天向上进步0.1的结果。
2.字符串型数据:
字符串的4种表示方法:
‘’,"",’’’’’’,
字符串的8个处理方法:
# 1.字符全部大/小写
print('ABCDEFG'.lower())
print('abcdefG'.upper())
# 2.字符串根据参数分割
print('a,b,c,d,e,f,g'.split(','))
# 3.字符串根据参数计数
print('an apple a day'.count('a'))
# 4.字符替换内容
print('python'.replace('n','123.io'))
# 5.字符串根据width居中,fillchar可选,str.center(width,[fillchar])
print('python'.center(20,'$'))
# 6.去掉字符串中的某些字符 str.strip('chars')
print('= python='.strip('= pn'))
# 7.为字符串添加分隔符, 'tip'.jion(str)
print('^'.join('123456'))
# 8.字符串格式化.format()
print('{}:计算机{}的CPU占用率为:{}%'.format('2020-2-13','C',45))
{:10} 表示默认宽度为10,默认情况左对齐
{:=^20} 表示宽度20,居中对齐,其余用=填充
{:*>20} 表示宽度20,右对齐,其余用*填充
{:<20} 表示宽度20,左对齐
转义符
作用方便’字符的输出
字符串操作符
+代表拼接
*代表重复输出
eval() 字符串转化成数值
str = '一二三四五六日'
num = eval(input())
print("星期"+weekstr[num-1])
字符串的切片:
python采用9801编码
我们若想得到某个特殊字符的编码,可以用ord(‘♉’)函数
例如我们想知道 金牛座符号的 9801 编码
print(ord('♉'))
得到输出:9801
例如我们想得到12星座的字符
for i in range(12):
print(chr(9801+i),end=' ')
得到输出:♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ ♔
3.Time库的使用
# Time库的使用
import time
# 1.获取计算机内部的时间值,一个浮点数(1970-1-1 00:00 到现在的时间)
print(time.time())
# 2.返回当前时间,以易读方式表示
print(time.ctime())
# 3.返回一个time结构体,方便提取年/月/日/时间
print(time.gmtime())
# 4.让time结构体,按指定格式生成字符串
t = time.gmtime()
print(time.strftime('%Y-%m-%d %H:%M:%S',t))
# 6.计时器perfcounter()和休眠函数sleep()
start = time.perf_counter()
time.sleep(3)
end = time.perf_counter()
print('开始时间:',start)
print('结束时间:',end)
print(end-start)
实例:模拟输出一个进度条1.0
------执行开始------
0 %[-> ]%
10 %[*-> ]%
20 %[**-> ]%
30 %[***-> ]%
40 %[****-> ]%
50 %[*****-> ]%
60 %[******-> ]%
70 %[*******-> ]%
80 %[********-> ]%
90 %[*********->]%
100%[**********->]%
------执行结束------
代码实现:
import time
scale = 10
print('------执行开始------')
for i in range(scale+1):
a = '*'*i
b = ' '*(scale-i-1)
print('{:^3.0f}%[{}->{}]%'.format(10*i,a,b))
print('------执行结束------')
实例:模拟输出一个进度条2.0
效果:(单行动态刷新)
100%[**********->]%
代码实现
import time
scale = 10
for i in range(scale+1):
a = '*'*i
b = ' '*(scale-i)
print('
{:^3.0f}%[{}->{}]%'.format(10*i,a,b),end='')
time.sleep(0.5)
区别:在输出的字符串中包含的’ ’ 的含义为,每次将光标移动至行首,配合end=’'不换行,达到刷新单行的效果
实例:模拟输出一个进度条3.0
改进:加上一个时间
-----------------------执行开始-----------------------
100%[**************************************************->]5.03S
-----------------------执行结束-----------------------
import time
scale = 50
start = time.perf_counter()
print('
','执行开始'.center(scale,'-'))
for i in range(scale+1):
a = '*'*i
b = ' '*(scale-i)
c = (i/scale)*100
per = time.perf_counter() - start
print('
{:^3.0f}%[{}->{}]{:.2f}S'.format(c,a,b,per),end='')
time.sleep(0.1)
print('
','执行结束'.center(scale,'-'))
4.测试实例
1.平方根格式化
描述
获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。
输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充。
如果结果超过30个字符,则以结果宽度为准。
输入 | 输出 | |
---|---|---|
示例 1 | 10 |
+++++++++++++++++++++++++3.162 |
代码:
x = eval(input())
sqrt = pow(x,1/2)
print('{:+>30.3f}'.format(sqrt))
代码解析:首先要注意到input函数接收的输入,是字符串型的,我们使用eval函数将输入转化为数值型数据,然后用pow函数计算其平方根,最后在输出中用.format函数进行字符串的格式化。
2.字符串分段组合
描述
获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出。
输入 | 输出 | |
---|---|---|
示例 1 | Alice-Bob-Charis-David-Eric-Flurry |
Alice+Flurry |
代码:
x = input()
list = x.split('-')
print('{}+{}'.format(list[0],list[-1]))
代码解析:首先用input函数接收输入:然后用split函数进行分割,得到分割好的字符串列表,只需要将第一个元素和最后一个元素使用.format函数按照规定格式进行输出就可以了。