Python程序与用户交互时,输入和输出是最基础的操作。input()函数获取用户输入,print()函数输出结果,而格式化输出则让数据显示更规范。本文将系统总结Python的输入输出核心用法,包括input()的字符串返回特性、f-string与%占位符两种主流格式化方式,以及print()函数中end和sep参数对换行与分隔符的控制。
## input()获取用户输入
input()会等待键盘输入,并将输入内容作为字符串返回。基本用法:
- name = input("请输入你的名字:")
- print(f"你好,{name}!")
复制代码
如果需要数字,必须手动转换类型:
- age = int(input("请输入你的年龄:"))
- print(f"明年你就{age + 1}岁了")
- height = float(input("请输入身高(米):"))
复制代码
注意:input()在用户输入回车前会阻塞程序;所有输入均视为字符串;数字运算前务必用int()或float()转换,否则会引发TypeError。
## 格式化输出:f-string vs %占位符
### f-string(Python 3.6+)
f-string在字符串前加f或F,花括号内直接写变量或表达式,语法简洁且执行效率高。
基本用法:
- name = "张三"
- age = 25
- print(f"姓名:{name},年龄:{age}")
复制代码
支持表达式计算:
- a, b = 10, 20
- print(f"{a} + {b} = {a + b}")
复制代码
数字格式化:
- pi = 3.1415926
- print(f"π的值:{pi:.2f}") # 保留两位小数
- print(f"π的值:{pi:.4f}") # 保留四位小数
复制代码
对齐与填充:
- number = 42
- print(f"数字:{number:>10}") # 右对齐,宽度10
- print(f"数字:{number:<10}") # 左对齐
- print(f"数字:{number:^10}") # 居中对齐
- print(f"数字:{number:0>10}") # 用0填充
复制代码
### %占位符(传统兼容方式)
%格式化在Python所有版本中均可用,使用%操作符,通过格式符指定变量类型。
基本用法:
- name = "李四"
- age = 30
- print("姓名:%s,年龄:%d" % (name, age))
复制代码
常用格式符:%s字符串、%d十进制整数、%f浮点数、%x十六进制、%o八进制。
浮点数精度与宽度控制:
- price = 99.99
- print("价格:%.2f元" % price) # 保留两位小数
- print("价格:%10.2f元" % price) # 宽度10,右对齐
复制代码
多变量时用元组:
- x, y, z = 10, 20, 30
- print("x=%d, y=%d, z=%d" % (x, y, z))
复制代码
支持字典形式的命名引用:
- person = {"name": "王五", "age": 35}
- print("姓名:%(name)s,年龄:%(age)d" % person)
复制代码
## print()的换行与分隔符控制
print()函数默认在输出末尾添加换行符,该行为由end参数控制(默认'\n')。
### 默认换行
- print("第一行")
- print("第二行")
- # 输出:
- # 第一行
- # 第二行
复制代码
### 不换行输出
将end设为空字符串或空格:
- print("Hello", end='')
- print("World")
- # 输出:HelloWorld
- print("Hello", end=' ')
- print("World")
- # 输出:Hello World
- print("Hello", end=', ')
- print("World")
- # 输出:Hello, World
复制代码
### 自定义分隔符
可以使用制表符、多个空格或自定义字符串:
- print("姓名", end='\t')
- print("张三")
- # 输出:姓名 张三
- print("第一部分", end=' --- ')
- print("第二部分")
- # 输出:第一部分 --- 第二部分
复制代码
### sep参数与end参数的区别
sep控制print内多个参数之间的分隔符(默认空格),end控制整个print输出结束后添加的字符。
- print("a", "b", "c") # 输出:a b c
- print("a", "b", "c", sep=',') # 输出:a,b,c
- print("第一行", end=' | ')
- print("第二行")
- # 输出:第一行 | 第二行
- print("x", "y", "z", sep='-', end=' -> ')
- print("结束")
- # 输出:x-y-z -> 结束
复制代码
## 综合示例:用户信息录入与格式化输出
结合input、类型转换、f-string和%格式化,并演示不换行输出:
- print("=== 用户信息录入 ===")
- name = input("请输入姓名:")
- age = int(input("请输入年龄:"))
- height = float(input("请输入身高(米):"))
- print(f"\n使用f-string格式化:")
- print(f"姓名:{name:>10}")
- print(f"年龄:{age:>10}岁")
- print(f"身高:{height:>10.2f}米")
- print(f"\n使用%占位符格式化:")
- print("姓名:%10s" % name)
- print("年龄:%10d岁" % age)
- print("身高:%10.2f米" % height)
- print(f"\n个人信息汇总:", end=' ')
- print(f"姓名:{name}", end=', ')
- print(f"年龄:{age}", end=', ')
- print(f"身高:{height:.2f}")
复制代码
## 总结
格式化输出选择:
- Python 3.6及以上优先使用f-string,简洁且性能好。
- 需兼容旧版本Python时,用%占位符或str.format()。
- 复杂格式(如对齐、填充、精度控制)两种方式均支持。
换行控制建议:
- 默认换行保持代码可读性。
- 当需要连续输出(如进度条、倒计时)时,使用end=''或end=' '。
- 输出列表等场景可通过sep参数自定义分隔符。
掌握这些技巧后,你的Python程序在用户交互和数据展示方面将更加灵活高效。 |