Python基础:输入输出详解-输出字符串格式化

在这里插入图片描述

  Python中的输入和输出是编程中非常重要的方面。

1. 输入输出简单介绍

1.1 输入方式

  Python中的输入可以通过input()函数从键盘键入,也可以通过命令行参数或读取文件的方式获得数据来源。

1)input()示例

  基本的input()函数,会将用户在终端(键盘)输入的内容作为字符串返回。

user_input = input("请输入内容:")

  通过类型转换为其他数据类型,如:
  使用 int() float() 函数将用户输入的内容转换为整数或浮点数。

# 获取用户输入的整数
user_input = int(input("请输入整数:"))

# 获取用户输入的浮点数
user_input = float(input("请输入浮点数:"))

  使用eval() 函数(不推荐,慎用)
  eval() 函数用于执行以字符串形式给出的 Python 表达式,并返回表达式的结果。
  注意:使用 eval() 函数时要非常小心,特别是当从不受信任的来源获取输入时。不建议直接将用户输入传递给eval() 函数,因为它可能执行任意的 Python 代码,包括潜在的危险操作。最好是在确定输入是安全的情况下使用 eval()

"""
用户可以输入任何合法的数学表达式,比如 "2 + 3 * 4"。eval() 函数会将输入的字符串作为 Python 表达式来计算,并输出结果。使用 try-except 块来捕获可能的异常,以防止输入的表达式引发错误。
"""

# 获取用户输入的数学表达式并计算结果
expression = input("请输入一个数学表达式:")
try:
    result = eval(expression)
    print("计算结果:", result)
except Exception as e:
    print("发生错误:", e)

2) 命令行参数

  通过命令行参数输入是一种常见的方式,特别是当你想在运行脚本时提供输入而不交互地输入时。
  演示如何通过命令行参数输入:

# 文件名: script.py

import sys

# 获取命令行参数
# 注意:sys.argv[0] 是脚本的名称,而实际的参数从 sys.argv[1] 开始
if len(sys.argv) < 2:
    print("请提供一个参数(例如:python script.py 输入内容)")
else:
    # 第一个命令行参数是输入的内容
    user_input = sys.argv[1]
    print("您输入的内容是:", user_input)

  在命令行中运行这个脚本,例如:

python script.py Hello

  输出应该是:

您输入的内容是: Hello

  通过sys.argv 获取命令行参数,如果没有提供足够的参数,脚本会输出一个提示。第一个参数是脚本的名称,实际的输入参数从第二个开始。

3)通过文件读取方式

  使用 open() 函数来打开文件,并使用read() 方法来读取文件的内容。

# 打开文件
file_path = 'example.txt'
with open(file_path, 'r') as file:
    # 读取整个文件内容
    content = file.read()
    print("文件内容:")
    print(content)

  open(file_path, 'r') 打开一个名为 'example.txt'的文件进行读取。使用 with语句可以确保在文件使用完毕后正确关闭。read() 方法用于读取整个文件的内容,并将其存储在变量 content中,然后通过 print() 函数输出文件内容。

1.2 输出方式

  在 Python 中,主要使用 print() 函数进行输出。print() 函数可以打印字符串、数字和其他数据类型的内容到控制台。

2. 复杂的输出格式

  程序的输出有几种显示方式,数据既可以输出供人阅读,也可以写入文件备用。
  格式化输出包括以下几种方法:
  1)使用“格式化字符串字面量”
  2)使用str.format()方法
  3)手动格式化字符串
  4)旧式字符串格式化方法
  当你进行调试并想要快速显示变量的值时,可以使用 repr()str() 函数将变量转化为字符串。这两个函数的选择取决于你对输出字符串的期望:
  str()函数: 返回一个供人阅读的字符串。这意味着输出通常更为友好,适合直接展示给最终用户查看。
  repr() 函数: 生成适于解释器读取的字符串,即如果没有等效的语法,会强制执行 SyntaxError。这在调试过程中更有用,因为它提供更多的细节,有助于理解对象的内部结构。
在一般情况下,数字、列表、字典等结构的值,使用str()repr() 函数输出的表现形式是相似的。但对于自定义类,你可以通过实现 __str____repr__ 方法来定义它们的输出形式。下面是一个简单的例子:

class Example:
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return f"Example with value: {self.value}"
    def __repr__(self):
        return f"Example({self.value})"

# 创建一个示例对象
example_obj = Example(42)

# 使用 str() 输出
print(str(example_obj))  # 输出: Example with value: 42

# 使用 repr() 输出
print(repr(example_obj))  # 输出: Example(42)

  官网示例
在这里插入图片描述

2.1 格式化字符串字面量

  格式化字符串字面值 (简称为f-字符串)在字符串前加前缀fF,通过 {expression} 表达式,把 Python 表达式的值添加到字符串内。
基本语法:

variable1 = "value1"
variable2 = "value2"
formatted_string = f"Text {variable1}, more text {variable2}."

  格式说明符是可选的,写在表达式后面,可以更好地控制格式化值的方式。
  f-string 提供了一种直观、简洁且强大的字符串格式化方式,适用于许多场景:

2.1.1 插入变量值

"""
    输出: “姓名: Scott, 年龄: 30”
"""
name = "Scott"
age = 30
print(f"姓名: {name}, 年龄: {age}")

2.1.2 表达式计算

"""
    输出: “The sum of 5 and 10 is 15.”
"""
x = 5
y = 10
print(f"The sum of {x} and {y} is {x + y}.")

2.1.3 对齐和宽度控制

  使用 <,>,^控制文本的左对齐、右对齐和居中,以及指定字段的宽度。

"""
    输出: “姓名: Bob        年龄: 25”
"""
name = "Bob"
age = 25
print(f"姓名: {name:<10} 年龄: {age}")

2.1.4 格式规范

"""
    输出: 
    “The value of pi is approximately 3.1416 .”
    "小数点后保留3位:9.143"
"""
import math
print(f'The value of pi is approximately {math.pi:.4f} .')

number_f = 9.14298078
print(f'小数点后保留3位:{number_f:.3f}')

2.1.5 调用函数

"""
    输出:“Uppercase: HELLO WORLD!”
"""
print(f"Uppercase: {'hello world!'.upper()}")

2.1.6 使用字典和列表

"""
    输出:
    “姓名: Charlie, 年龄: 22”
    “我喜欢水果: apple, orange”
"""
# 使用字典
person = {'name': 'Charlie', 'age': 22}
print(f"姓名: {person['name']}, 年龄: {person['age']}")

# 使用列表
fruits = ['apple', 'banana', 'orange']
print(f"我喜欢水果: {fruits[0]}, {fruits[2]}")

2.1.7 内嵌if语句

"""
    输出:“你可以购买酒类商品。”
"""
is_adult = True
print(f"你{'可以' if is_adult else '不可以'}购买酒类商品。")

2.1.8 转义字符

  可以使用{{ }} 来插入花括号字符,而不是作为f-string 的开始和结束。

"""
    输出:“值为: 42%, 而不是 {value}”
"""
value = 42
print(f"值为: {value}%, 而不是 {{value}}")

2.2 字符串 format() 方法

  str.format() 方法是Python中用于格式化字符串的一种方式。它允许你创建带有占位符的字符串,然后使用传递给format() 方法的参数替换这些占位符。这种方法使得字符串的格式更加清晰和灵活。
  基本语法:
  {} 是一个占位符,它将在运行时由format() 方法中提供的值替换。可以使用多个占位符,并按照顺序提供相应数量的值。

formatted_string = "Hello, {}!".format(value)

2.2.1 按位置访问参数

print('{0}, {1}, {2}'.format('a', 'b', 'c')) # 输出 a, b, c
print('{}, {}, {}'.format('a', 'b', 'c') ) # 输出 a, b, c
print('{2}, {1}, {0}'.format('a', 'b', 'c')) # 输出 c, b, a
print('{2}, {1}, {0}'.format(*'abc') ) # 输出 c, b, a
print('{0}{1}{0}'.format('abra', 'cad') ) # 输出 abracadabra

2.2.2 按名称访问参数

  输出:‘Coordinates: 37.24N, -115.81W’

coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
'Coordinates: {latitude}, {longitude}'.format(**coord)
'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')

2.2.3 访问参数的属性

c = 3-5j
('The complex number {0} is formed from the real part {0.real} '
 'and the imaginary part {0.imag}.').format(c)

class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __str__(self):
        return 'Point({self.x}, {self.y})'.format(self=self)

str(Point(4, 2))

2.2.4 访问参数项

coord = (3, 5)
'X: {0[0]};  Y: {0[1]}'.format(coord) # 输出 'X: 3;  Y: 5'

2.2.5 对齐文本并指定宽度

"""
输出 :
    "left aligned                  "
    "                 right aligned"
    "           centered           "
    "***********centered***********"
"""
print('{:<30}'.format('left aligned')) 
print('{:>30}'.format('right aligned')) 
print('{:^30}'.format('centered'))
# use '*' as a fill char
print('{:*^30}'.format('centered') )

2.2.6 Replacing , , and and specifying a sign:%+f%-f% f

"""
输出
    "+3.140000; -3.140000"
    " 3.140000; -3.140000"
    "3.140000; -3.140000"
"""
# show it always
print('{:+f}; {:+f}'.format(3.14, -3.14))
# show a space for positive numbers
print('{: f}; {: f}'.format(3.14, -3.14))  
# show only the minus -- same as '{:f}; {:f}'
print('{:-f}; {:-f}'.format(3.14, -3.14))

2.2.7 进制转换

"""
输出
   "int: 42;  hex: 2a;  oct: 52;  bin: 101010"
   "int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010" 
"""
# format also supports binary numbers
print("int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42))

# with 0x, 0o, or 0b as prefix:
print("int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42))

2.2.8 使用逗号作为千位分隔符

print('{:,}'.format(1234567890)) # 输出 “1,234,567,890”

2.2.9 表示百分比

points = 19
total = 22

# 输出带2位小数的百分数:Correct answers: 86.36%
print('Correct answers: {:.2%}'.format(points/total)) 

2.2.10 使用特性类型的格式(如时间格式)

import datetime
d = datetime.datetime(2010, 7, 4, 12, 15, 58)
'{:%Y-%m-%d %H:%M:%S}'.format(d) # 输出 '2010-07-04 12:15:58'

2.2.11 嵌套参数

for align, text in zip('<^>', ['left', 'center', 'right']):
    print('{0:{fill}{align}16}'.format(text, fill=align, align=align))

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

octets = [192, 168, 0, 1]
formatted_string = '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
print(formatted_string)  # 转换为8进制:C0A80001
int(formatted_string,16) # 转换为10进制 3232235521
# 将5-11的十进制、八进制、十六进制、二进制列出来
width = 5
for num in range(5,12): 
    for base in 'dXob':
        print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
    print()

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

2.3 手动格式化字符串

2.3.1 手动格式化实现同一个平方和立方的列表

  字符串对象的 str.rjust() 方法通过在左侧填充空格,对给定宽度字段中的字符串进行右对齐。同类方法还有str.ljust() str.center() 。这些方法不写入任何内容,只返回一个新字符串,如果输入的字符串太长,它们不会截断字符串,而是原样返回;虽然这种方式会弄乱列布局,但也比另一种方法好,后者在显示值时可能不准确(如果真的想截断字符串,可以使用 x.ljust(n)[:n] 这样的切片操作 。)

for x in range(1, 11):
    print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
    # Note use of 'end' on previous line
    print(repr(x*x*x).rjust(4))

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

2.3.2 str.zfill()

  该方法在数字字符串左边填充零,且能识别正负号:

print('12'.zfill(5)) # 输出 00012
print('-3.14'.zfill(7)) # 输出 -003.14
print('3.14159265359'.zfill(5)) # 输出 3.14159265359

2.4 旧式字符串格式化方法

  %运算符(求余符)也可用于字符串格式化。给定'string' % values,则string 中的% 实例会以零个或多个values元素替换。此操作被称为字符串插值。例如:

# 输出 The value of pi is approximately 3.142.
import math
print('The value of pi is approximately %5.3f.' % math.pi)

3. 读写文件

  见下一个博客内容。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/158279.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity中Shader纹理的环绕方式

文章目录 前言一、修改环绕方式前的设置准备二、在纹理的设置面板可以修改环绕方式三、在Shader中&#xff0c;实现纹理的环绕方式切换1、在属性面板定义一个和纹理面板一样的纹理环绕方式下拉框2、在Pass中&#xff0c;定义枚举对应的变体3、在片元着色器中&#xff0c;纹理采…

腾讯云服务器收费标准是多少?腾讯云服务器收费标准表

你是否曾被繁琐复杂的服务器租赁费用搞得头昏脑胀&#xff1f;看着一堆参数和计费方式却毫无头绪&#xff1f;别担心&#xff0c;这篇文章就来帮你解决这个问题&#xff01;我们今天就来揭秘一下腾讯云服务器的收费标准&#xff0c;让大家轻松明白地知道如何租用腾讯云服务器。…

2023.11.17-hive调优的常见方式

目录 0.设置hive参数 1.数据压缩 2.hive数据存储格式 3.fetch抓取策略 4.本地模式 5.join优化操作 6.SQL优化(列裁剪,分区裁剪,map端聚合,count(distinct),笛卡尔积) 6.1 列裁剪: 6.2 分区裁剪: 6.3 map端聚合(group by): 6.4 count(distinct): 6.5 笛卡尔积: 7…

Go 语言变量类型和声明详解

在Go中&#xff0c;有不同的变量类型&#xff0c;例如&#xff1a; int 存储整数&#xff08;整数&#xff09;&#xff0c;例如123或-123float32 存储浮点数字&#xff0c;带小数&#xff0c;例如19.99或-19.99string - 存储文本&#xff0c;例如“ Hello World”。字符串值用…

2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-C

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-C 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略设置 A-3 流量完整性保护 A-4 …

技术分享 | 如何写好测试用例?

对于软件测试工程师来说&#xff0c;设计测试用例和提交缺陷报告是最基本的职业技能。是非常重要的部分。一个好的测试用例能够指示测试人员如何对软件进行测试。在这篇文章中&#xff0c;我们将介绍测试用例设计常用的几种方法&#xff0c;以及如何编写高效的测试用例。 ## 一…

337. 打家劫舍 III

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连…

学习指南:如何快速上手媒体生态一致体验开发

过去开发者们在使用多媒体能力时&#xff0c;往往会遇到这样的问题&#xff0c;比如&#xff1a;为什么我开发的相机不如系统相机的效果好&#xff1f;为什么我的应用和其他的音乐一起发声了&#xff0c;我要怎么处理&#xff1f;以及我应该怎么做才能在系统的播控中心里可以看…

talbay---贝叶斯网络分析工具产品介绍

一 简介 talbay是拥有独立知识产权的国产软件&#xff0c;主要功能是贝叶斯网络建模、决策网络建模、概率计算、决策支持、敏感性分析、网络模型验证、机器学习等。talbay以用户为中心&#xff0c;简单易用, 计算准确高效&#xff0c;分析全面多样&#xff0c;在应用成熟理论及…

2023年“华为杯”第二十届中国研究生数学建模成绩数据分析(末尾有吃席群)

目录 0引言1、数据大盘1.1 官方数据1.2 分赛题统计数据1.2.1 A-F 获奖数1.2.2 A-F 获奖率 2、分学校统计获奖情况&#xff08;数模之星没有统计&#xff09;3、 数模之星4、吃席群5、写在最后的话 0引言 2023年华为杯成绩于2023年9月22-26日顺利举行&#xff0c;来自国际和全国…

23111706[含文档+PPT+源码等]计算机毕业设计SSM框架网上书城全套微信支付电商购物

文章目录 **软件开发环境及开发工具&#xff1a;****项目功能介绍&#xff1a;****论文截图&#xff1a;****实现&#xff1a;****代码片段&#xff1a;** 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 软件开发环境及开发工具&#xff…

MyBatis解析全局配置文件

MyBatis解析全局配置文件 MyBaits基础应用&#xff1a; 文档&#xff1a;MyBatis 链接&#xff1a;http://note.youdao.com/noteshare?id5d41fd41d970f1af9185ea2ec0647b64 传统JDBC和Mybatis相比的弊病 传统JDBC ​ Connection conn null; PreparedStatement pstmt …

面向面试学习,全网最齐全的软件测试面试题(含答案)

做测试的&#xff0c;我整理的真的很用心了&#xff0c;能找的新鲜面经都找了。 一面 1. 自我介绍 2. 面向对象的三种特性 集成用到了哪些特性 多态的具体使用场景 设计模式中的多态体现&#xff08;手撕&#xff09; 封装&#xff1a;将属性私有化&#xff1b;封装的意义&a…

Vue路由 replace属性 控制浏览记录不能前进或后退

默认是push模式 表示页面一直增加&#xff0c;用户可以操作返回上一个页面 replace 模式 <router-link replace :to"{path:/user,query:{ id:123,age:666 }} ">跳转用户</router-link><!--replace true表示浏览器不能后退浏览记录-->

视觉BEV基本原理和方案解析

BEV(Bird’s-Eye-View)是一种鸟瞰视图的传感器数据表示方法&#xff0c;它的相关技术在自动驾驶领域已经成了“标配”&#xff0c;纷纷在新能源汽车、芯片设计等行业相继量产落地。BEV同样在高德多个业务场景使用&#xff0c;例如&#xff1a;高精地图地面要素识别、车道线拓扑…

Attention Transformer

来源老师课件&#xff0c;方便以后复习。 课参考链接&#xff1a; http://jalammar.github.io/illustrated-transformer/ 之前的知识链接&#xff1a; 【知识链接】WGAN Transformer Vit Swin-Transformer Swin-Unet Res-Vit TransUNet MAE Bra ADDA 打分函数&#xff1a; 多头…

【413.等差数列划分】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int numberOfArithmeticSlices(vector<int>& nums) {int nnums.size();if(n<3) return 0;vector<int> dp(n);dp[2]dp[1]dp[0]0;if(nums[2]-nu…

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内) 路虽远,行则将至;事虽难,做…

Nacos在Windows本地安装并启动教程

Nacos在Windows本地安装并启动教程 Nacos注册中心和Eureka是两种常见的服务注册与发现组件&#xff0c;它们在以下方面存在一些区别&#xff1a; 开源项目&#xff1a;Nacos是阿里巴巴开源的项目&#xff0c;而Eureka是Netflix开源的项目。 功能特性&#xff1a;Nacos在服务注册…

实验二 Python运算符和内置函数的使用《Python程序设计》实验指导书

实验二 Python运算符和内置函数的使用 一、实验目的和要求 &#xff08;一&#xff09;熟练掌握运算符的使用。 &#xff08;二&#xff09;熟练掌握内置函数的使用。 二、实验内容 &#xff08;一&#xff09;输入三角形的3个边长a、b、c&#xff0c;求三角形的面积area…