查看: 177|回复: 0

Python整型浮点型字符串类型判断与格式化输出教程

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
在Python脚本开发中,变量不需要提前声明类型,但变量关联的数据有类型。常见三类数据是 int、float、str。理解 type() 返回值、整型大数限制和字符串格式化,是写基础脚本、做数据转换时常用的技能。

一、用 type() 判断数据属于哪类

type() 返回数据的具体类型。字符串类型显示为 <class 'str'>,这是 string 的简写,不是 <class 'string'>。Python 中变量无类型,数据有类型。例如 a = 10,a 本身没有类型,但 a 关联的数据 10 是整型。把变量交给 type(),返回的是变量所对应数据的类型。
  1. result1 = type('张三')
  2. result2 = type(18)
  3. result3 = type(72.5)
  4. print(result1)  # <class 'str'>
  5. print(result2)  # <class 'int'>
  6. print(result3)  # <class 'float'>
  7. name = '张三'
  8. age = 18
  9. weight = 72.5
  10. print(type(name))    # <class 'str'>
  11. print(type(age))     # <class 'int'>
  12. print(type(weight))  # <class 'float'>
复制代码

二、整型 int:无小数点,大数书写与 print 限制

整型就是没有小数点的数字,可以是正数、负数或 0。Python 整数可以任意大,上限取决于执行代码的计算机内存和处理能力。书写很大的数时,可用下划线分组,Python 会自动忽略,这种写法同样适用于浮点数,但需要 Python 3.6 及以上版本。
  1. num1 = 10_000_000
  2. print(num1)
  3. a = 3 ** 2  # 3的平方
  4. b = 2 ** 3  # 2的3次方
  5. print(a)  # 9
  6. print(b)  # 8
复制代码

通过幂运算构造大整数再打印:
  1. a = 9 ** 9999
  2. print(a)
复制代码

这时会报错,提示中包含 Exceeds the limit (4300 digits)。但这并不代表 Python 最大只能表示 4300 位的数。去掉 print 后,a 可以正常参与数学运算:
  1. a = 9 ** 9999
  2. b = a + 100
复制代码

原因是调用 print(a) 时,Python 底层会把 a 转换成字符串类型再输出;从 Python 3.11 起,Python 对超大整数转换为字符串的长度进行了限制,默认位数是 4300 位。需要解除限制时,可以设置 sys.set_int_max_str_digits(0),其中 0 表示不作任何限制:
  1. import sys
  2. sys.set_int_max_str_digits(0)
  3. x = 9 ** 9999
  4. print(x)
复制代码

整型基础案例:
  1. age = 18
  2. temp = -15
  3. score = 0
  4. salary = 300_000
  5. house_price = 3_200_000
  6. graduates = 12_000_000
  7. print(salary, house_price, graduates)
  8. a = 9 ** 9999
复制代码

三、浮点型 float:小数点与科学计数法

浮点型就是带小数点的数字,3.14、-0.5、2.0 都属于浮点数。表示方式分为直接书写和科学计数法。
  1. weight = 65.2
  2. balance = 1425.58
  3. out_temp = -25.2
  4. price = 120.0
  5. speed_of_sound = 3.4e+2       # 3.4乘以10的2次方
  6. world_population = 7.8e9      # 7.8乘以10的9次方
  7. distance_sun_earth = 1.496E8  # 1.496乘以10的8次方
  8. speed_of_light = 2.998E+8     # 2.998乘以10的8次方
  9. one_ml = 1e-3                 # 1乘以10的-3次方
  10. one_mg = 1E-3                 # 1乘以10的-3次方
  11. print(one_ml, one_mg)
复制代码

四、字符串 str:四种定义、格式化输出与转义

字符串需要用引号包起来。单引号和双引号写法等价,适合单行字符串;三个单引号和三个双引号可以直接换行,常用于多行字符串,也可作为多行注释或文档字符串。单引号、双引号不能直接换行,需要换行时可用圆括号。
  1. message1 = '兮动人!'
  2. message2 = "xdr!"
  3. message3 = '''xdr630!'''
  4. message4 = """云兮动人!"""
复制代码

格式化输出有三种常见写法。第一种是用加号拼接,写起来麻烦,而且只能用于字符串之间拼接:
  1. name = '张三'
  2. gender = '男'
  3. weight = 65.2
  4. age = 12
  5. info1 = '我叫' + name + ',我是' + gender + '生'
复制代码

第二种是使用占位符:%s 占位字符串,%f 占位浮点数,%i 占位整数,%d 占位十进制整数;%s 是万能的,如果提供的数据不是字符串,Python 会把它转成字符串。
  1. info2 = '我叫%s,我是%s生,我体重是%f,年龄是%d' % (name, gender, weight, age)
复制代码

第三种是 f-string,这是目前 Python 最推荐的方式:
  1. info3 = f'我叫{name},我是{gender}生,我体重是{weight},年龄是{age}'
复制代码

占位符前方可用 m.n 的形式指定精度,例如:
  1. info = '我叫%-4.1s,性别是%3.2s,体重是%-9.3f,年龄是%-6.4d' % (name, gender, weight, age)
复制代码

字符串中有些字符不能直接写,例如换行、制表符、引号等,这时要用转义字符。常见测试代码:
  1. print('在Python中,可以使用\'包裹一个字符串')
  2. print("在Python中,可以使用"包裹一个字符串")
  3. print('注册会员需要以下信息:\n姓名\n年龄\n手机号')
  4. print('D:\\nice')
  5. print('helloo\b')
  6. print('67%\r68%')
  7. print('1234123412341234')
  8. print('ab\tcd'.expandtabs(4))
  9. print('abc\td'.expandtabs(4))
  10. print('abcd\ta'.expandtabs(4))
  11. print('我是\t中文'.expandtabs(4))
  12. print('姓名\t性别\t年龄')
  13. print('张三\t男\t\t18')
  14. print('李四\t女\t\t25')
  15. print('王五\t男\t\t32')
复制代码

其中 \t 表示水平制表符,一个制表位具体是几位并不确定,可以通过字符串后面的 .expandtabs() 指定;\r 让光标回到本行开头并覆盖输出;\b 删除前一个字符;\\ 用于输出反斜杠。掌握整型、浮点型、字符串的类型判断、格式化输出和转义规则后,脚本中的字符串拼接、格式化和类型转换会更清晰,也能减少隐式转换带来的排查成本。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-9-10 11:38 , Processed in 0.023194 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部