三、Python基本数据类型

  • 本文是网课:Python语言程序设计国家精品——(北京理工大学 嵩天 、 黄天羽 、 礼欣)的学习笔记。

目录

3.1 数字类型及操作

3.2 实例3: 天天向上的力量

3.3 字符串类型及操作

3.4 模块2: time库的使用

3.5 实例4: 文本进度条


3.1 数字类型及操作

  • 整数类型:可正可负,没有取值范围限制;pow(x,y)函数计算x^y,想算多大算多大

三、Python基本数据类型_第1张图片

  •  浮点数

浮点数间运算存在不确定尾数,这不是BUG。

 三、Python基本数据类型_第2张图片

三、Python基本数据类型_第3张图片

三、Python基本数据类型_第4张图片

  • 复数类型

z=1.23e-4+5.6e+89j;z.real获得实部,z.imag获得虚部

  • 数字运算操作符
  1. x/y产生浮点数结果
  2. x//y产生的是整数结果
  3. x**y <==> pow(x,y)
  4. x op= y <==> x=x op

三、Python基本数据类型_第5张图片

  • 数值运算函数

三、Python基本数据类型_第6张图片

三、Python基本数据类型_第7张图片

三、Python基本数据类型_第8张图片

3.2 实例3: 天天向上的力量

  • 第三问

每天上升1%,周末下降1%

#DayDayUpQ3
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))
  • 第四问

三、Python基本数据类型_第9张图片

三、Python基本数据类型_第10张图片

写一个“给出x,求工作日努力x%能得到最终结果”的函数

#根据df参数计算工作日力量的函数
def dayUp(df):
    dayup = 1.0
    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("工作日的努力参数是:{:.10f},结果是{:.10f}".format(dayfactor,dayUp(dayfactor)))

3.3 字符串类型及操作

  • 字符串类型的表示

三、Python基本数据类型_第11张图片

没有真正的多行注释,三单引号本身是个字符串。

4种表示方法使得引号在字符文本中出现时的处理变的简单。

三、Python基本数据类型_第12张图片

  • 字符串切片高级用法

字符串逆序:newStr=Str[::-1]

三、Python基本数据类型_第13张图片

 

字符串中转义符后面的字符当做字符本意来理解(也就是不会当做Python的语法元素)

三、Python基本数据类型_第14张图片

  • 字符串操作符

三、Python基本数据类型_第15张图片

  • 字符串处理函数

eval函数将字符串去引号执行返回结果。

str函数执行语句将结果变为字符串。

三、Python基本数据类型_第16张图片

三、Python基本数据类型_第17张图片

三、Python基本数据类型_第18张图片

>>> "1 + 1 = 2 " + chr(10004)
'1 + 1 = 2 ✔'

>>> "这个字符♉的Unicode值是:" + str(ord("♉"))
'这个字符♉的Unicode值是:9801'

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

♈♉♊♋♌♍♎♏♐♑♒♓
  • 字符串处理方法

方法:面向对象相关。必须要用 . 的形式来执行。

三、Python基本数据类型_第19张图片

三、Python基本数据类型_第20张图片

三、Python基本数据类型_第21张图片

三、Python基本数据类型_第22张图片

str.strip(chars)是将字符串str中两侧连续出现在chars中的字符去掉。

str = ','.join(str) ; 再str.split(',')可以对字符串进行分割。

  • 字符串类型的格式化

三、Python基本数据类型_第23张图片

三、Python基本数据类型_第24张图片

三、Python基本数据类型_第25张图片

三、Python基本数据类型_第26张图片

其中<填充><对其><宽度>一块用。

三、Python基本数据类型_第27张图片

直接给宽度的话,默认左对齐、空格填充。

三、Python基本数据类型_第28张图片

<类型中>的c:字符形式(Unicode编码形式);

3.4 模块2: time库的使用

  • 时间获取

三、Python基本数据类型_第29张图片

三、Python基本数据类型_第30张图片

  • 时间格式化

三、Python基本数据类型_第31张图片

三、Python基本数据类型_第32张图片

三、Python基本数据类型_第33张图片

也可以将定义的字符串解析为时间变量。

三、Python基本数据类型_第34张图片

  • 程序计时应用

三、Python基本数据类型_第35张图片

per_counter()获取的是CPU的时间

三、Python基本数据类型_第36张图片

三、Python基本数据类型_第37张图片

3.5 实例4: 文本进度条

  • “文本进度条”多行显示
import time
scale = 10
print("------执行开始------")
for i in range(scale+1):
    a = '*' * i
    b = '.' * (scale-i)
    c = i * 10
    print("{:^3.0f}%[{}->{}]".format(c,a,b))
    time.sleep(0.1)
print("------执行结束------")
  • “文本进度条”单行动态刷新

三、Python基本数据类型_第38张图片

"\r"将光标退回到行首;默认end="\n";

import time
for i in range(101):
    print("\r{:3}%".format(i),end="")
    time.sleep(0.1)

用命令行来执行(IDLE屏蔽了\r功能):

三、Python基本数据类型_第39张图片

  • “文本进度条”实例完整效果
import time
scale = 50
print("执行开始".center(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="")
    time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))

  • 练习题

三次方格式化

描述

获得用户输入的一个数字,可能是整数或浮点数,a,计算a的三次方值,并打印输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

输出结果采用宽度20个字符、居中输出、多余字符采用减号(-)填充。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

如果结果超过20个字符,则以结果宽度为准。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

输入输出示例

  输入 输出
示例 1
10
--------1000--------

 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬代码:

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

 

星号三角形

描述

读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

输入输出示例

  输入 输出
示例 1
3
 * 
***‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

 

我的代码:
a=eval(input())
for i in range(a//2 + 1):
    str1=' '*round((a-(2*i+1))/2)
    str2='*'*(2*i+1)
    print("{0}{1}{0}".format(str1,str2))

题解的代码:
a=eval(input())
for i in range(1,n+1,2):
    print("{0:^{1}}".format('*'*i,n))

 

恺撒密码

 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

描述

恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

假设用户可能使用的输入包含大小写字母a~zA~Z、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬


输入

示例1: python is good‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬


输出

示例1: sbwkrq lv jrrg

s=input()
t=""
for c in s:
    if 'a'<=c<='z':
        t+=chr(ord('a')+((ord(c)-ord('a'))+3)%26)
    elif 'A'<=c<='Z':
        t+=chr(ord('A')+((ord(c)-ord('A'))+3)%26)
    else:
        t+=c
print(t)
        

 

你可能感兴趣的:(Python)