第三周学习:Python基本数据类型

1.数字类型及操作

1>整数类型
可正可负,无取值限制;pow(x,y):计算x的y次幂。
四种进制表示:二进制(0b/0B),八进制(0o/0O),十六进制(0x/0X),十进制。

2>浮点数类型
带有小数点及小数的数字;取值范围和精度都有限制,but常规操作可忽略限制=基本无限制。
浮点数之间运算存在不确定尾数,不是bug;
eg: (==是等于判断符号) (round(x,d):对x四舍五入,d是小数截取位数)
0.1+0.2 = = 0.3 FALSE
round(0.1+0.2,1) = = 0.3 TRUE
科学计数法:10为基数,e/E为幂的符号,格式:a e b等价于a倍的10的b次幂

3>复数类型
j=根号下-1
z=a+bj:z.real:取实部a;z.imag:取虚部b。

4>数值运算操作符
加+,减-,乘*,除/(浮点数表示结果),整数除//
x%y:模运算,取余运算; x**y:求x的y次幂运算。
二元操作符:x op=y 等价于x=x op y。
整数->浮点数->复数,可混合运算,生成结果为最宽类型。

5>数值运算函数
abs(x):求x的绝对值。
divmod(x,y):商余,(x//y,x%y)同时输出商和余数。
pow(x,y[,z]):幂余,(x**y)%z;[]可省略。
round(x[,d]):四舍五入,d是保留小数位数,默认取0.
max(x1,x2…xn): 求最大值,n不限。
min(x1,x2…xn):求最小值,n不限。
数值类型转换函数:
int(x):将x转换为整数,舍弃小数部分,并不四舍五入,直接舍弃。
float(x):将x转换为浮点数,增加小数部分。
complex(x):将x转变为复数,增加虚部部分。

2.实例:天天向上的力量

1>Q1

#DayDayUpQ1.py
dayup=pow(1.001,365)
daydown=pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

2>Q2

#DayDayUpQ2.py
dayfactor=0.005  #引入变量,方便修改
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

3>Q3

#DayDayUpQ3.py工作日的力量
dayup=1.0
dayfactor=0.01
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>Q4

#DayDayUpQ4.py 工作日的努力
def dayUp(df):
    dayup=1
    for i in range(365):
        if i%7 in [6,0]:
            dayup=dayup*(1-0.01)
        else:
            dayup=dayup*(1+df)
    return dayup
dayfactor=0.01
while dayUp(dayfactor)<37.78:
    dayfactor+=0.001
print("工作日的努力参数值:{:.3f}".format(dayfactor))

5>运行结果
在这里插入图片描述

3.字符串类型及操作

1>字符串类型的表示
0/多个字符表示,“”,‘’括住
两类四种表示方法:单引号,双引号表示:表示单行字符;三单引号,三双引号表示:表示多行字符。
切片高级用法:Str.[M:N:K] 根据步长K对字符串切片
eg:str=“零一二三四五六七八九十”
str.[1:8:2]为“一三五七”
str.[::-1]为“是九八七六五四三二一零” — 倒序输出的巧妙用法
转义符\:\b回退,\n换行,\r回车。

2>字符串操作符
x+y:连接x和y这两个字符串。
n*x:复制n次字符串x。
x in s:若x是s的子串,则返回TRUE,否则返回FALSE。

3>字符串处理函数
在这里插入图片描述

4>字符串处理方法
在这里插入图片描述
在这里插入图片描述

5>字符串类型的格式化

在这里插入图片描述

在这里插入图片描述

6>例子

#WeekNamePrintV1.py  获取星期字符串
weekStr="星期一星期二星期三星期四星期五星期六星期日"
weekId=eval(input("请输入星期数字(1-7):"))
pos=(weekId-1)*3
print(weekStr[pos:pos+3])
#WeekNamePrintV2.py  获取星期字符串
weekStr="一二三四五六日"
weekId=eval(input("请输入星期数字(1-7):"))
print("星期"+weekStr[weekId-1])
#一些好玩的Unicode编码
Str="1+1=2"+chr(10004)
print(Str)

for i in range(12):
    print(chr(9800+i) ,end="")

运行结果
在这里插入图片描述

4.time库的使用

1>time库基本介绍
2>时间获取
3>时间格式化
4>程序计时应用
在这里插入图片描述
在这里插入图片描述

5.实例:文本进度条

1>Q1

#TextProBarV1.py  文本进度条简单的开始
import time
scale=10  #文本进度条大概的宽度
print("------执行开始------")
for i in range(scale+1):
    a='*'*i    #*号复制i次
    b='.'*(scale-i)    #.复制scale-i次
    c=(i/scale)*100    #输出与当前进度条进度的百分比
    print("{:>3.0f}%[{}->{}]".format(c,a,b))
    time.sleep(0.1)
print("------执行结束------")

2>Q2

#TextProBarV2 文本进度条的单行动态刷新
import time
for i in range(101):
    print("\r{:3}%".format(i),end="")
    #窗口键+R调出命令提示符,把这个文件拖进去运行
    time.sleep(0.1)

3>Q3

#TextProBarV3 完整文本进度条的效果
import time
scale=50#文本进度条大概的宽度
print("执行开始".center(scale//2,"-"))
#字符串大概scale//2宽度,其他空间用#文本进度条大概的宽度用-填充
start=time.perf_counter()#用于计时
for i in range(scale+1):
    a='*'*i
    b='-'*(scale-i)
    c=(i/scale)*100
    dur=time.perf_counter()-start#用于时间输出
    print("\r{:>3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
    #窗口键+R调出命令提示符,把这个文件拖进去运行
    time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
#//是整除操作,scale//2即=25

4>运行结果
在这里插入图片描述
在这里插入图片描述

6.练习

1>平方根格式化

在这里插入图片描述

a=eval(input())
b=a**0.5
print("{:+>30.3f}".format(b))

2>字符串分段组合
在这里插入图片描述

Str=input()
ss=Str.split('-')
print(ss[0]+'+'+ss[-1])

3>三次方格式化
在这里插入图片描述

a=eval(input())
b=pow(a,3)
print("{:-^20}".format(b))

4>星号三角形
在这里插入图片描述

n=eval(input())
for i in range(1,int((n+1)/2+1)):
    temp='*'*(2*i-1)
    print("{:^{}}".format(temp,n))

5>凯撒密码

在这里插入图片描述

def encryption(str, n):
    cipher = []
    for i in range(len(str)):
        if str[i].islower():
            if ord(str[i]) < 123-n:
                c = chr(ord(str[i]) + n)
                cipher.append(c)
            else:
                c = chr(ord(str[i]) + n - 26)
                cipher.append(c)
        elif str[i].isupper():
            if ord(str[i]) < 91-n:
                c = chr(ord(str[i]) + n)
                cipher.append(c)
            else:
                c = chr(ord(str[i]) + n - 26)
                cipher.append(c)
        else:
            c = str[i]
            cipher.append(c)
    cipherstr = ('').join(cipher)
    return cipherstr
 #获得用户输入的明文
plaintext = input() 
ciphertext = encryption(plaintext, 3)
print(ciphertext)

7.总结

今天知识点太多了,还挺琐碎的,我又有点懒,直接把听课的时候随手记的草稿贴上去了(早知道记的时候好好写字了),今天就是有点懒,等我哪天再整理的时候,再把笔记整理成文字吧!

Guess you like

Origin blog.csdn.net/weixin_45800653/article/details/107516908