讲解
程序要和人交互,最基本的通道就是输入和输出。输出老朋友 print 已经很熟了,再补充两个参数:sep 控制多个值之间的分隔符(默认空格),end 控制结尾(默认换行符 \n,改成空串就不换行)。更精细的格式化交给 f-string:花括号里放变量和表达式,冒号后面接格式说明——:.2f 保留两位小数,:>10 右对齐占 10 位,:<10 左对齐,:^10 居中,:, 千分位逗号,:.1% 转百分比。
输入用内置函数 input('提示语'):程序会停下来等用户敲一行字并回车,把这行内容作为字符串返回。关键要记住:input 永远返回字符串。想要数字必须自己 int() 或 float() 转换,而且用户可能输入非数字,稳妥的做法是配合 try/except 处理 ValueError。交互式程序的典型骨架就是一个 while 循环包着 input,直到用户输入退出指令。
因为本教程的示例需要能自动运行,下面用「模拟输入」的方式演示:真实程序里写 name = input('请输入名字:'),示例里则直接给变量赋值并在注释里说明。你自己练习时把赋值换成 input 调用即可。另外提一句:print 还能加 file 参数把内容写进文件,不过文件读写有专门一章,那里会讲更规范的做法。
示例
# print 的 sep 与 end
print('2026', '08', '09', sep='-')
print('加载中', end='...')
print('完成')
# f-string 格式说明速览
price = 19.9
ratio = 0.856
print(f'价格:{price:.2f} 元')
print(f'占比:{ratio:.1%}')
print(f'右对齐:|{"右":>8}|,居中:|{"中":^8}|,千分位:{1234567:,}')
# input 的用法:真实程序里这样写——
# name = input('请输入你的名字:')
# 示例需要自动运行,这里直接模拟用户输入了「小明」:
name = '小明' # 模拟:name = input('请输入你的名字:')
print(f'你好,{name}!')
# 数字输入:input 返回字符串,必须转换
# age_text = input('请输入年龄:')
age_text = '18' # 模拟用户输入
age = int(age_text)
print(f'明年你就 {age + 1} 岁了')
# 更稳妥的写法:转换失败给提示(try 的完整讲解在异常一章)
raw = 'abc' # 模拟用户输了非数字
try:
number = int(raw)
print('你输入的数字是', number)
except ValueError:
print(f'{raw!r} 不是有效的整数,请重新输入')
常见坑
- 忘记 input 返回字符串:age = input(...) 后直接 age + 1 报 TypeError,age >= 18 报 TypeError。先 int()。
- 转换非数字输入导致崩溃:int('abc') 抛 ValueError。面向真实用户的输入一定要 try/except 或先校验。
- f-string 与 % 格式化混学:老教程里的 '%s' % name 是上古写法,新项目统一用 f-string,看到 % 格式化认识即可。
- print 里手写很多 + 拼接:逗号分隔自动加空格,f-string 更灵活,都比一串 + 可读性好。
小结
print 管输出(sep/end/f-string 三件套),input 管输入且永远返回字符串,数字输入必须显式转换并防备非法值。下一节让程序学会做选择:条件分支。