当前位置: 首页 > news >正文

建筑兔零基础python自学记录88|time库文本进度条(下)11

练习1:采用字符串方式打印可以动态变化的文本进度条‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬,进度条需要能在一行中逐渐变化

要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

(1) 采用sleep()模拟一个持续的进度,获得文本进度条的变化时间;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

(2) 通过print()函数实现单行动态刷新,在print()函数中更换参数end的默认值为'',每次使用print()函数输出时不能换行;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

(3) 要能回退:打印后光标到之前的位置 \r。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬ ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭

答案:

建筑兔零基础python自学记录87|time库文本进度条(上)10-CSDN博客代码3 文本进度条完整实例

练习2:三次方格式化

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

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

如果结果超过20个字符,则以结果宽度为准。

建筑兔零基础python自学记录86|字符串9-CSDN博客  回顾之前的内容,可以看到集中的表达

我们可以看到主要有4处错误:

1、input()和eval(input())字符串转为对象计算

  • input() 返回的是纯字符串,原样保留用户输入的内容
  • eval(input()) 会将输入的字符串作为代码执行,解析并执行输入的字符串,将其转换为对应的 Python 对象。
  • 字符串本身不能直接进行数学运算(如加减乘除),但可以通过类型转换实现与运算相关的操作。

2、要给pow赋值才能表现出计算值。Python 里如果一个表达式的结果没有被赋值给变量,那么这个结果就不会被保存或者显示出来。也就是说,pow(a, 3) 计算得到的结果会被丢弃

3、填充号没换,:之后的是填充符

4、format(a)和format('a')

format(a)填充格式化字符串的值

format('a')填充到格式化字符串占位符中的值

例如:

代码 1:print('我叫 {},今年 {} 岁。'.format('张三', '20'))

'张三''20'这两个参数都是字符串类型,'张三' 表示一个具体的人名,'20' 虽然看起来是数字,但它被引号包裹,所以是字符串类型。

运行结果:

我叫 张三,今年 20 岁。

 代码 2:print('我叫 {},今年 {} 岁。'.format(张三, 20))

20 是整数类型,而 张三 这里没有引号,在 Python 中,没有引号包裹的内容会被当作变量名处理。如果在代码运行之前没有定义 张三 这个变量,Python 解释器会在查找该变量时找不到,从而抛出 NameError 异常。

NameError: name '张三' is not defined 

正确用法如下,汉字用''(表示为字符串),数字直接输入。特例处理一些需要以文本形式存储或传输的数据时,像电话号码、身份证号码等,虽然它们看起来是数字,但本质上是一种标识符,通常会用字符串来表示。数字也要加''

print('我叫 {},今年 {} 岁。'.format('张三', 20))

正确代码:

#代码1
a=eval(input())
b=pow(a,3)
print('{:-^20}'.format(b))#代码2
a = eval(input())
print("{:-^20}".format(pow(a, 3)))

练习3:星号三角形

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

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

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

 

错误记录:

1、如何获取奇数?---用步长解决!

range(1, N + 1, 2) 会生成一个从 1 开始,到 N(包含 N)结束,步长为 2 的整数序列。

2、如何获取每行*号---个数乘以符号(符号带‘’)

 '*' * i 会生成一个由 i 个星号组成的字符串。例如,当 i 为 3 时,'*' * i 就是 '***'

3、如何将每一行用同样规则进行居中对齐"{0:^{1}}"

"{0:^{1}}"解读:{0} 表示 第一个参数,{1} 表示第二个参数。将 format() 方法的第一个参数(对应 {0})按照第二个参数(对应 {1})指定的宽度进行居中对齐。

4、如何理解print("{0:^{1}}".format('*' * i, N))

运行代码结果:

练习4:恺撒密码

  思路是用循环+.replace()替换进行加密,但是.replace() 方法适用于简单的一对一替换,例如将字符串中的所有 'a' 替换为 'b'。如果使用 .replace() 方法进行多次替换,会出现重复替换的问题。例如,先将 'a' 替换为 'd',后续可能又会把之前替换得到的 'd' 再次替换,导致结果错误。

先看答案:

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)

解读代码:

先看t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 ) 

回顾建筑兔零基础python自学记录86|字符串9-CSDN博客

之前我们学过chr()和ord(),chr()是变字符,ord()是变编码(记忆方式是ch像汉语拼音所以能看懂是字符,反之ord读不懂是编码)

 1、ord('a') 与 ord(a)的区别

  • ord('a') 中的 'a' 是一个字符串字面量,代表单个字符 aord('a') 会返回字符 a 对应的 ASCII 码值,也就是 97。
  • ord(a) 里的 a 是一个变量。Python 会尝试把这个变量所代表的值当作字符传入 ord() 函数。若 a 没有被定义,代码就会抛出 NameError 异常

接着看if 'a' <= c <= 'z':

完整代码解读: 

s = input()
#定义空字符串,用于存储加密后字母表
t = ""
#循环遍历
for c in s:#判断编码值是否在97-122(a-z之间)if 'a' <= c <= 'z':#获得加密后的编码值对应字母,把移位后的字母添加到结果字符串tt += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 )#判断编码值是否在65-90(A-Z之间)elif 'A' <= c <= 'Z':t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )else:# 若字符 c 既不是小写字母也不是大写字母,就直接把它添加到结果字符串 t 中(数字、标点不变)t += c
print(t)
http://www.xdnf.cn/news/231535.html

相关文章:

  • x-cmd install | Tewi - 终端里的 Transmission 掌控者,功能全面的 BT 下载管理工具!
  • 适配 AGP8.5,maven 私服发布报错(七)
  • Rust 学习笔记:枚举与模式匹配
  • HTTP 快速解析
  • php+mysql活动报名学生选课产品预定旅游报名系统网站源码
  • Spyglass:官方Hands-on Training(一)
  • 【容器化】Linux环境Docker在线与离线安装手册
  • vscode中设置eslint保存时自动格式化未生效
  • 网易爆米花 1.8.8 | 免费无广告,支持多网盘聚合和智能刮削技术,提供顶级画质和逼真音效的影视管理应用
  • 【大模型系列篇】Qwen3开源全新一代大语言模型来了,深入思考,更快行动
  • Python 用一等函数重新审视“命令”设计模式
  • CMake解析参数用法示例
  • 【模型量化】量化基础
  • 大连理工大学选修课——机器学习笔记(7):集成学习及随机森林
  • 三生原理与中华文明标识体系的关系?
  • vs2019编译occ7.9.0时,出现fatal error C1060: compiler is out of heap space
  • C++(初阶)(十六)——set
  • YOLO视觉模型可视化训练与推理测试工具
  • 嵌入式中常用的算法介绍
  • (Go Gin)Gin学习笔记(五)会话控制与参数验证:Cookie使用、Sessions使用、结构体验证参数、自定义验证参数
  • 自动驾驶-一位从业两年的独特视角
  • 2025年-redis(p1-p10)
  • Kotlin与Jetpack Compose的详细使用指南
  • 高级java每日一道面试题-2025年4月30日-基础篇[反射篇]-如何防止你的类被通过反射非法实例化?
  • PCI总线数据采集卡 32路多功能异步模拟量信号采集卡
  • 如何在 Go 中实现各种类型的链表?
  • 硬盘分区丢失≠末日!3步逻辑恢复法+物理修复全流程图解
  • 大数据应用开发和项目实战-Seaborn
  • 使用通义千问大模型做结构化输出报错的分析
  • ubantu部署yolov5(第四集:模型加速)