【Python】从基础到进阶(二):了解Python语言基础以及数据类型转换、基础输入输出

在这里插入图片描述

🔥 个人主页:空白诗

在这里插入图片描述

文章目录

    • 一、引言
    • 二、基本数据类型转换
      • 1. 隐式转换
      • 2. 显式转换
    • 三、基本输入输出
      • 1. 输入(input)
      • 2. 输出(print)
      • 3. 案例:输入姓名、年龄、身高以及体重,计算BMI指数。
      • 4. 使用 `pprint()` 函数输出
    • 四、总结
      • 1. 数据类型转换
      • 2. 基本输入输出操作

在这里插入图片描述

一、引言

在上一篇文章 【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识 中,我们介绍了Python编程的基本概念、语法以及如何定义和使用变量。这为我们理解和编写Python代码奠定了坚实的基础。

在本篇文章中,我们将继续探讨Python语言的核心基础,重点关注数据类型转换和基础输入输出操作。这些知识对于编写功能丰富、交互性强的Python程序至关重要。数据类型转换使我们能够在不同类型的数据之间进行转换,从而实现更多的计算和操作。而输入输出操作则是我们与用户进行信息交互的基本手段。

通过阅读本篇文章,您将学会:

  • 理解并应用数据类型转换方法
  • 实现用户输入和程序输出的基本操作
  • 使用Python编写简单的交互式程序

让我们从Python语言的基础知识开始,逐步深入到数据类型转换和基础输入输出的具体内容,继续我们的Python学习之旅。


二、基本数据类型转换

在这里插入图片描述

在编写Python程序时,数据类型转换是一个常见且重要的操作。数据类型转换分为隐式转换显式转换。了解如何在不同数据类型之间进行转换可以提高代码的灵活性和可维护性。

1. 隐式转换

隐式转换是指Python在需要时自动进行的数据类型转换。通常发生在混合类型的运算中。例如,将整数和浮点数相加时,Python会自动将整数转换为浮点数:

x = 10  # 整数
y = 3.5  # 浮点数
result = x + y
print(result)  # 输出 13.5,x 被隐式转换为浮点数

2. 显式转换

显式转换是通过使用内置函数手动进行的数据类型转换。以下是一些常用的显式转换方法及其使用详情:

函数作用示例
int(x)x 转换成整数类型int('123') 将字符串 '123' 转换为整数 123
float(x)x 转换成浮点数类型float('123.45') 将字符串 '123.45' 转换为浮点数 123.45
str(x)x 转换为字符串str(123) 将整数 123 转换为字符串 '123'
bool(x)x 转换为布尔值bool(0) 将整数 0 转换为布尔值 False
list(x)x 转换为列表list((1, 2, 3)) 将元组 (1, 2, 3) 转换为列表 [1, 2, 3]
tuple(x)x 转换为元组tuple([1, 2, 3]) 将列表 [1, 2, 3] 转换为元组 (1, 2, 3)
set(x)x 转换为集合set([1, 2, 2, 3]) 将列表 [1, 2, 2, 3] 转换为集合 {1, 2, 3}
dict(x)x 转换为字典dict([('a', 1), ('b', 2)]) 将列表 [('a', 1), ('b', 2)] 转换为字典 {'a': 1, 'b': 2}
frozenset(x)x 转换为冻结集合(不可变集合)frozenset([1, 2, 2, 3]) 将列表 [1, 2, 2, 3] 转换为冻结集合 frozenset({1, 2, 3})
complex(real [,imag])创建一个复数complex(1, 2) 创建一个复数 1+2j
repr(x)x 转换为表达式字符串repr(123) 将整数 123 转换为表达式字符串 '123'
eval(str)计算在字符串中的有效 Python 表达式,并返回一个对象eval('3 + 4') 计算字符串 '3 + 4' 中的表达式并返回 7
chr(x)将整数 x 转换为一个字符chr(97) 将整数 97 转换为字符 'a'
ord(x)将一个字符 x 转换为它对应的整数值ord('a') 将字符 'a' 转换为整数 97
hex(x)将一个整数 x 转换为一个十六进制的字符串hex(255) 将整数 255 转换为十六进制字符串 '0xff'
oct(x)将一个整数 x 转换为一个八进制的字符串oct(8) 将整数 8 转换为八进制字符串 '0o10'
bin(x)将一个整数 x 转换为一个二进制的字符串bin(10) 将整数 10 转换为二进制字符串 '0b1010'

使用 int()

将其他数据类型转换为整数。浮点数将被截断,小数部分会被移除;字符串必须包含有效的整数表示:

a = 3.7
b = int(a)
print(b)  # 输出 3

c = "10"
d = int(c)
print(d)  # 输出 10

e = "a123"
f = int(e)
print(f)  # 报错

使用 float()

将其他数据类型转换为浮点数。整数将被转换为对应的浮点数,字符串必须包含有效的浮点数表示:

a = 3
b = float(a)
print(b)  # 输出 3.0

c = "3.14"
d = float(c)
print(d)  # 输出 3.14

使用 str()

将其他数据类型转换为字符串。可以用于任何数据类型:

a = 10
b = str(a)
print(b)  # 输出 "10"

c = 3.14
d = str(c)
print(d)  # 输出 "3.14"

使用 bool()

将其他数据类型转换为布尔值。非零数值、非空字符串和非空数据结构(如列表、元组、字典等)都将被转换为 True,零数值、空字符串和空数据结构将被转换为 False

a = 0
print(bool(a))  # 输出 False

b = 1
print(bool(b))  # 输出 True

c = ""
print(bool(c))  # 输出 False

d = "Hello"
print(bool(d))  # 输出 True

使用 list()

将其他可迭代对象(如字符串、元组等)转换为列表:

a = "hello"
b = list(a)
print(b)  # 输出 ['h', 'e', 'l', 'l', 'o']

c = (1, 2, 3)
d = list(c)
print(d)  # 输出 [1, 2, 3]

使用 tuple()

将其他可迭代对象(如字符串、列表等)转换为元组:

a = "hello"
b = tuple(a)
print(b)  # 输出 ('h', 'e', 'l', 'l', 'o')

c = [1, 2, 3]
d = tuple(c)
print(d)  # 输出 (1, 2, 3)

使用 set()

将其他可迭代对象(如字符串、列表等)转换为集合,集合中的元素是唯一的:

a = "hello"
b = set(a)
print(b)  # 输出 {'h', 'e', 'l', 'o'}

c = [1, 2, 2, 3]
d = set(c)
print(d)  # 输出 {1, 2, 3}

使用 dict()

将其他可迭代对象(如键值对的列表)转换为字典:

a = [('a', 1), ('b', 2)]
b = dict(a)
print(b)  # 输出 {'a': 1, 'b': 2}

c = (('x', 3), ('y', 4))
d = dict(c)
print(d)  # 输出 {'x': 3, 'y': 4}

使用 frozenset()

将其他可迭代对象(如字符串、列表等)转换为冻结集合,冻结集合是不可变的:

a = "hello"
b = frozenset(a)
print(b)  # 输出 frozenset({'h', 'e', 'l', 'o'})

c = [1, 2, 2, 3]
d = frozenset(c)
print(d)  # 输出 frozenset({1, 2, 3})

使用 complex()

创建一个复数,实部和虚部都可以是整数或浮点数:

a = 1
b = 2
c = complex(a, b)
print(c)  # 输出 (1+2j)

d = complex(1.5, 2.5)
print(d)  # 输出 (1.5+2.5j)

使用 repr()

将对象转换为表达式字符串,通常用于调试和开发:

a = 123
b = repr(a)
print(b)  # 输出 '123'

c = [1, 2, 3]
d = repr(c)
print(d)  # 输出 '[1, 2, 3]'

使用 eval()

计算字符串中的有效 Python 表达式,并返回一个对象:

a = '3 + 4'
b = eval(a)
print(b)  # 输出 7

c = '["a", "b", "c"]'
d = eval(c)
print(d)  # 输出 ['a', 'b', 'c']

使用 chr()

将整数转换为对应的字符:

a = 97
b = chr(a)
print(b)  # 输出 'a'

c = 65
d = chr(c)
print(d)  # 输出 'A'

使用 ord()

将字符转换为对应的整数值:

a = 'a'
b = ord(a)
print(b)  # 输出 97

c = 'A'
d = ord(c)
print(d)  # 输出 65

使用 hex()

将整数转换为十六进制字符串:

a = 255
b = hex(a)
print(b)  # 输出 '0xff'

c = 16
d = hex(c)
print(d)  # 输出 '0x10'

使用 oct()

将整数转换为八进制字符串:

a = 8
b = oct(a)
print(b)  # 输出 '0o10'

c = 64
d = oct(c)
print(d)  # 输出 '0o100'

使用 bin()

将整数转换为二进制字符串:

a = 10
b = bin(a)
print(b)  # 输出 '0b1010'

c = 255
d = bin(c)
print(d)  # 输出 '0b11111111'

通过掌握这些数据类型转换方法,您可以灵活地处理不同类型的数据,确保程序能够正确地执行各种操作。在接下来的章节中,我们将探讨如何进行基础输入和输出操作,以进一步增强程序的交互性。


三、基本输入输出

在 Python 中,输入和输出是基本的操作。以下是一些常用的输入输出方法:

1. 输入(input)

input() 函数用于获取用户的输入,输入的数据类型为字符串。可以通过在括号中添加提示信息来提示用户输入:

name = input("请输入你的名字: ")
print("你好, " + name)

在这里插入图片描述

在这个示例中,程序会等待用户输入名字,并输出一条包含该名字的问候语。

2. 输出(print)

print() 函数用于将数据输出到控制台。可以输出多个值,并且可以使用不同的方式格式化输出内容:

# 输出单个值
print("Hello, World!")

# 输出多个值
print("你好", "世界")

# 使用 f-string 格式化输出
name = "Alice"
age = 30
print(f"名字: {name}, 年龄: {age}")

# 使用 format() 方法格式化输出
print("名字: {}, 年龄: {}".format(name, age))

# 使用百分号格式化输出
print("名字: %s, 年龄: %d" % (name, age))

3. 案例:输入姓名、年龄、身高以及体重,计算BMI指数。

variable = input("请输入你的名字:")
print("你好", variable)

age = input("请输入你的年龄:")
print("你今年", age, "岁了")

height = float(input("请输入你的身高(单位:米):"))
weight = float(input("请输入你的体重(单位:公斤):"))

bmi = weight / height ** 2
print("你的BMI指数为:", bmi)

if bmi < 18.5:
    print("您的体重过轻 ~@_@~")
elif 18.5 <= bmi < 25:
    print("您的体重在正常范围 ~@_@~")
elif 25 <= bmi < 28:
    print("您的体重过重 ~@_@~")
elif 28 <= bmi < 32:
    print("肥胖啦你! ~@_@~")
else:
    print("严重肥胖啦~~~ ~@_@~")

在这里插入图片描述

4. 使用 pprint() 函数输出

pprint 模块的 pprint() 函数用于“漂亮打印”数据结构,使其输出格式更易于阅读,尤其是对于嵌套和复杂的数据结构(如字典和列表)。在处理复杂数据时,pprintprint 更适合用于调试和展示数据。

使用 pprint() 需要先导入 pprint 模块:

from pprint import pprint

# 示例数据结构
data = {
    'name': 'Alice',
    'age': 30,
    'children': [
        {'name': 'Bob', 'age': 5},
        {'name': 'Charlie', 'age': 3}
    ],
    'pets': {'dog': 'Fido', 'cat': 'Whiskers'}
}

# 使用 print 输出
print(data)

# 使用 pprint 输出
pprint(data)

输出结果比较:

# 使用 print 输出
{'name': 'Alice', 'age': 30, 'children': [{'name': 'Bob', 'age': 5}, {'name': 'Charlie', 'age': 3}], 'pets': {'dog': 'Fido', 'cat': 'Whiskers'}}

# 使用 pprint 输出
{'age': 30,
 'children': [{'age': 5, 'name': 'Bob'}, {'age': 3, 'name': 'Charlie'}],
 'name': 'Alice',
 'pets': {'cat': 'Whiskers', 'dog': 'Fido'}}

从输出结果可以看出,pprint() 会自动调整输出格式,使其更清晰易读,特别是当数据结构比较复杂时。

pprint() 还可以自定义输出格式。以下是一些常用的参数:

  • indent: 指定每一级嵌套的缩进空格数,默认值为 1。
  • width: 指定输出行的最大宽度,默认值为 80。
  • depth: 指定最大嵌套层级,超出层级的数据将以省略号表示。
  • compact: 如果为 True,则尽可能紧凑地打印数据结构。

示例:

pprint(data, indent=2, width=40, depth=2, compact=True)

打印结果:

{ 'age': 30,
  'children': [{...}, {...}],
  'name': 'Alice',
  'pets': { 'cat': 'Whiskers',
            'dog': 'Fido'}}

这将以更紧凑的方式打印数据结构,并且只显示到第二层嵌套。


四、总结

在本文中,我们深入探讨了 Python 的数据类型转换和基本输入输出操作。通过这些知识,您可以灵活地在不同数据类型之间进行转换,并实现用户输入和程序输出的基本交互。

1. 数据类型转换

了解数据类型转换是编写健壮 Python 程序的关键。通过隐式转换和显式转换,您可以在不同数据类型之间进行转换,确保数据在不同的操作和计算中保持一致性。我们介绍了常用的转换方法,包括 int()float()str()bool() 等,以及如何将数据转换为列表、元组、集合和字典等复杂数据结构。

2. 基本输入输出操作

输入和输出是程序与用户交互的基础。我们讨论了如何使用 input() 函数获取用户输入,以及如何使用 print() 函数输出信息。通过不同的格式化方法,如 f-string、format() 方法和百分号格式化,您可以灵活地输出各种格式的字符串。此外,使用 pprint() 函数可以更清晰地打印复杂数据结构,有助于调试和展示数据。

通过这些基本知识,您可以编写功能丰富、交互性强的 Python 程序。继续练习这些操作,并在实际项目中应用它们,将有助于您进一步掌握 Python 编程技能。

在这里插入图片描述


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

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

相关文章

ICMAN触摸芯片之隔空感应

ICMAN触摸芯片之隔空感应 ICMAN触摸芯片满足工业级设计标准&#xff0c; 可过CS10V&#xff0c;ESD8kV&#xff0c;EFT4kV测试&#xff0c; 有超强稳定性和抗干扰能力 &#xff0c; 多用在普通触摸按键开关、大金属触摸及高灵敏度应用场合。 可根据实际应用&#xff0c;有低…

MWCSH 2024丨美格智能亮相上海世界移动通信大会,加速5G+AIoT应用进程

6月26日—28日全球通信领域最具规模和影响力的通信盛事—2024MWC上海世界移动通信大会在上海新国际博览中心隆重举行。MWC上海是亚洲连接生态系统的风向标&#xff0c;本届大会以“未来先行&#xff08;Future First&#xff09;”为主题&#xff0c;聚焦“超越5G”“人工智能经…

牛客小白月赛97 (个人题解)(待补完)

前言&#xff1a; 前天晚上写的一场牛客上比赛&#xff0c;虽然只写出了三道&#xff0c;但比起之前的成绩感觉自己明显有了一点进步了&#xff0c;继续努力吧&#xff0c; 正文&#xff1a; 链接&#xff1a;牛客小白月赛97_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞…

短信接口API的选择因素?有哪些使用方法?

短信接口API的集成难点是什么&#xff1f;如何保障API安全性&#xff1f; 短信接口API已经成为许多企业和开发者的关键工具&#xff0c;市场上有许多不同的短信接口API可供选择&#xff0c;这使得选择适合的API变得尤为重要。AoKSend将探讨在选择短信接口API时需要考虑的主要因…

vscode的一些使用问题

vscode使用技巧 1、快捷键&#xff08;1&#xff09;打开命令面板&#xff08;2&#xff09;注释&#xff08;3&#xff09;删除行&#xff08;4&#xff09;上下移动光标&#xff08;5&#xff09;光标回退&#xff08;6&#xff09;复制行&#xff08;7&#xff09;插入空白行…

联邦的基础配置

一、联邦的定义 联邦&#xff1a;在AS内部部署全互联的IBGP对等体可以很好解决IBGP路由传递的问题&#xff0c;但是扩展性低&#xff0c;大型网络中会带来沉重负担&#xff0c;针对此问题可以用路由反射器解决&#xff0c;也可以利用联邦解决&#xff0c;联邦也被称为联盟。大…

干货分享:Spring中经常使用的工具类(提示开发效率)

环境&#xff1a;Spring5.3…30 1、资源工具类 ResourceUtils将资源位置解析为文件系统中的文件的实用方法。 读取classpath下文件 File file ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX "logback.xml") ; // ...读取文件系统文件 file Resou…

ABAP 新语法-ITAB[ idx ]、ITAB[ key ]

这段ABAP代码主要演示了使用新的ABAP语法内表表达式的用法&#xff0c;其中核心点如下&#xff1a; 索引和关键字读取&#xff1a; 使用gt_student[1]进行索引读取&#xff0c;获取内表的第一个元素。使用gt_student[id 0000000005 age 15]进行关键字读取&#xff0c;根据指…

电子战学习笔记01:电子战概论

0、写在文前 本人在学习电子战相关理论知识时&#xff0c;一直感觉无从下手&#xff0c;之后在老师的推荐下购买了《EW101&#xff1a;电子战基础》纸质书籍学习&#xff0c;所以将自己的学习笔记在CSDN上记录一下&#xff0c;也供有需要的同学参考。 1、电子战定义 电子战&…

惠海100V 15A HC070N10L TO-252封装 N沟道MOS管 打火机/BMS电源板应用

MOS管的工作原理是基于在P型半导体与N型半导体之间形成的PN结&#xff0c;通过改变栅极电压来调整沟道内载流子的数量&#xff0c;从而改变沟道电阻和源极与漏极之间的电流大小。由于MOS管具有输入电阻高、噪声小、功耗低等优点&#xff0c;它们在大规模和超大规模集成电路中得…

ESP32-C3(基本信息)

ESP32-C3 是一款低功耗、高集成度的 MCU 系统级芯片 (SoC)&#xff0c;它集成了 2.4 GHz Wi-Fi 和低功耗蓝牙 (Bluetooth LE) 无线通信功能&#xff0c;并拥有丰富的外设接口和先进的电源管理机制。 主要特性&#xff1a; 无线通信&#xff1a; 支持 2.4 GHz Wi-Fi (802.11b/…

AI音乐革命:创新的门槛降低与产业未来的挑战

文章目录 每日一句正能量前言整体介绍人机合作AI在音乐创作中的辅助作用人机共同创作的模式实现人机共同创作的可能性伦理和法律考量 伦理道德AI与人类创造力的关系技术发展与人类创造力的平衡社会和文化影响结论 后记AI与音乐的未来交响创新的双刃剑版权与伦理的探讨人机合作的…

GaussDB关键技术原理:高性能(三)

GaussDB关键技术原理&#xff1a;高性能&#xff08;二&#xff09;从查询处理综述对GaussDB的高性能技术进行了解读&#xff0c;本篇将从查询重写RBO、物理优化CBO、分布式优化器、布式执行框架、轻量全局事务管理GTM-lite等五方面对高性能关键技术进行分享。 目录 3 高性能…

深入理解Java核心技术模块化局部变量类型推断

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

【C语言】23.文件操作

由于要对数据进行持久化保存&#xff0c;我们就有了文件。 一、程序文件与数据文件 磁盘&#xff08;硬盘&#xff09;上的文件是文件。 但是在程序设计中&#xff0c;我们⼀般谈的文件有两种&#xff1a;程序文件、数据文件&#xff08;从文件功能的角度来分类的&#xff09…

pdf压缩,pdf压缩在线网页版,在线压缩pdf网站

在数字化时代&#xff0c;pdf文件已经成为我们工作、学习和生活中不可或缺的一部分。然而&#xff0c;pdf文件往往体积庞大&#xff0c;传输效率低下&#xff0c;还占用大量存储空间。如何在不影响文件质量的前提下&#xff0c;减小pdf文件的大小呢&#xff1f;今天&#xff0c…

线程安全问题(二)——死锁

死锁 前言可重入锁逻辑 两个线程两把锁&#xff08;死锁&#xff09;死锁的特点多个线程多把锁&#xff08;哲学家就餐问题&#xff09;总结 前言 在前面的文章中&#xff0c;介绍了锁的基本使用方式——锁 在上一篇文章中&#xff0c;通过synchronized关键字进行加锁操作&am…

在Stimulsoft 报告中连接来自 MySQL 的数据

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…

数据结构(Java):迭代器遍历【底层源码解析】

1、引言 我们知道&#xff0c;对于List系列集合&#xff0c;添加的元素是有序、可重复、有索引的&#xff1b;而对于Set系列集合&#xff0c;添加的元素是无序、不重复、无索引的。 那么使用for循环通过下标来对Set系列集合进行遍历&#xff0c;那显然是不行的。 迭代器就可…

docker k8s

1、docker是什么&#xff1f; 将环境和程序一起打包给到 服务器运行的工具软件。 2、基础镜像base image是什么&#xff1f; 操作系统&#xff1a;用户空间、内核空间 阉割操作系统&#xff0c;利用其的用户空间&#xff08;因为应用程序运行在用户空间&#xff09;&#xf…