一、程序的骨架:输入 → 处理 → 输出
写程序,其实就是在重复做三件事:拿到数据 → 算一算 → 把结果说出来。这套思路有个名字叫 IPO。
| 字母 | 英文 | 中文 | Python 里靠谁 |
|---|---|---|---|
| I | Input | 输入:拿到数据 | input(),问用户要 |
| P | Process | 处理:算一算 | 变量、运算、判断、循环 |
| O | Output | 输出:把结果说出来 | print(),打印到屏幕 |
像一家小工厂:输入是原材料,处理是加工,输出是成品。
# 输入:问用户要一个名字
name = input("请输入你的名字:")
# 处理:在名字后面接一句问候
greeting = "你好," + name + "!"
# 输出:把结果打印出来
print(greeting)
运行效果(“小满”是你自己敲进去的):
请输入你的名字:小满
你好,小满!
课程思政|工匠精神与严谨求实 · 先把骨架搭起来
任何程序都是「拿数据 → 算一算 → 出结果」这三件事,缺一样都跑不起来。先把这副骨架搭好,再往里填细节,比一上来就盯着某一行代码抠要靠谱得多。做事也一样:先想清楚要经过哪几步,再动手,才不会写到一半发现方向就错了。有条理,本身就是一种效率。
二、输出:print() 的三招
print() 的作用只有一个:把东西打印到屏幕上。括号里放什么,屏幕上就出现什么。
第一招:打印一段文字
文字要用引号包起来,单引号、双引号都行。
print("Hello Python")
print('你好,Python') # 用单引号也一样
Hello Python
你好,Python
第二招:一次打印好几个内容
用逗号隔开就行。注意一个细节:逗号会自动变成一个空格。
print("饮品:", "珍珠奶茶", "杯数:", 2)
饮品: 珍珠奶茶 杯数: 2
饮品: 后面多出来的那个空格了吗?那是逗号带来的。想换成别的分隔符,就要用下一节讲的 sep。
第三招:打印变量和数字
变量不用加引号;数字也不用。
balance = 23.5
print("校园卡余额是:", balance)
print(100) # 数字直接写,不加引号
print(3 + 5) # 还能让它先算再打印
校园卡余额是: 23.5
100
8
print("100") 和 print(100) 在屏幕上看着一模一样,但前者是文字、后者是数字。现在看不出差别,等它要参与计算时就分家了。
顺手练一副春联
一行一个 print(),一句一行,正好排出一副春联:
print("上联:春风得意财源广")
print("下联:平安富贵家业兴")
print("横批:万事如意")
输出:
上联:春风得意财源广
下联:平安富贵家业兴
横批:万事如意
每个 print() 打完自动换行,所以三条语句就是三行——这和「写几句话就分几段」是一个道理。
三、输出的两个小开关:sep 和 end
print() 有两个可以调的“开关”。写法都是“名字 = 值”,放在括号的最后面。
开关一:sep —— 管逗号之间用什么隔开
默认是一个空格,可以换成别的。sep 是 separator(分隔符)的缩写。
print("珍珠", "椰果", "布丁") # 默认:空格分隔
print("珍珠", "椰果", "布丁", sep=", ") # 用逗号加空格
print("2026", "09", "20", sep="-") # 用短横线
print("www", "python", "org", sep=".") # 用点,拼出网址
print("PY", "2026", sep="") # 什么都不加,直接连起来
珍珠 椰果 布丁
珍珠, 椰果, 布丁
2026-09-20
www.python.org
PY2026
开关二:end —— 管这一行末尾加什么
默认是 end="\n",也就是打印完自动换到下一行(\n 就是“换行”的意思)。把 end 改掉,就能让它不换行。
print("第一句", end=" ") # 末尾换成空格,不换行
print("第二句跟在后面")
print("今天天气不错", end="!\n")
print("适合出门散步")
for i in range(1, 5):
print(i, end=", ") # 数字连着打印,用逗号隔开
print() # 最后补一个换行
第一句 第二句跟在后面
今天天气不错!
适合出门散步
1, 2, 3, 4,
print("a", "b", sep="-", end="。\n") 会输出 a-b。。顺序不影响结果,但习惯上把 sep 写在 end 前面,读起来更顺。
四、把变量填进句子里:f-string
前面写 print("校园卡余额是:", balance),多出来的空格有点难看。如果想把变量直接塞进一句话中间,就要用 f-string。
怎么写
在引号前面加一个小写字母 f,然后用大括号 {} 把变量圈起来。f 是 format(格式化)的缩写。
name = "小满"
age = 19
print(f"我的名字是{name},今年{age}岁")
我的名字是小满,今年19岁
f,漏了的话 {name} 会原样打印出来;② 大括号里的名字要和变量名一模一样,大小写都不能差。
大括号里还能直接算
height = 1.75
print(f"明年我的身高可能是{height + 0.05}米")
print(f"3 加 5 等于 {3 + 5}")
item = "奶茶"
price = 12.5
count = 3
print(f"{item} {count} 杯,一共 {price * count} 元")
明年我的身高可能是1.8米
3 加 5 等于 8
奶茶 3 杯,一共 37.5 元
控制小数位数
算出来的小数经常长得难看:10 / 3 会得到 3.3333333333333335。用 :.数字f 就能规定留几位。
print(f"{10 / 3:.1f}") # 保留 1 位小数
print(f"{10 / 3:.2f}") # 保留 2 位小数
print(f"{10 / 3:.0f}") # 不留小数(会四舍五入)
price = 5.9
print(f"价格:{price:.2f} 元")
3.3
3.33
3
价格:5.90 元
: 后面写 .1f 就是“小数点后 1 位”。注意它写在大括号里面,紧跟在变量后面,别写到括号外面去。
r 前缀:加在引号前面表示“原样显示,别翻译转义符”,写 Windows 路径时特别有用。print(r"C:\new\temp") 会老老实实输出 C:\new\temp;不加 r 的话,\n 会被当成换行、\t 会被当成制表符。两个前缀还能合用,写成 fr"C:\Users\{name}\a.txt"。
课程思政|诚信与职业操守 · 名字要对得上号
f-string 有两个必守的细节:引号前面别漏了那个 f,大括号里的名字要和变量名一模一样,大小写都不能差。名字对不上,程序要么报错,要么把 {name} 原样打出来——嘴上说着一套,屏幕上显示另一套。做事和说话对得上号,是编程教给人最实在的一条。
五、两种老写法(看懂就行)
f-string 是现在最推荐的方式。但你在别人的代码里还会碰到另外两种,认识一下就好——自己写的时候优先用 f-string。
| 写法 | 长什么样 | 特点 |
|---|---|---|
| f-string(推荐) | print(f"名字:{name}") | 变量就写在它出现的位置,最直观 |
| % 格式化(老写法) | print("分数:%.1f" % score) | 要在句尾用 % 接上值,位数写在前面的占位符里 |
format() | print("姓名:{}".format(name)) | 句尾挂一串 .format(...),变量一多就容易数错顺序 |
item = "珍珠奶茶"
price = 12.5
print(f"价格:{price:.1f}") # 推荐
print("价格:%.1f" % price) # 老写法
print("饮品:{},价格:{:.1f}".format(item, price)) # format()
价格:12.5
价格:12.5
饮品:珍珠奶茶,价格:12.5
AI 助手小贴士|f 字符串的花样最多也最常用,记不住就问。
打开任意 AI 对话工具(网页版或 App 都可以),试试这样问:f 字符串里 {price:.2f} 和 {name:>8} 分别是什么意思?各举两个例子,再出 2 道格式化题考我
六、输入:input() 收进来的都是文字
input() 的作用是停下来等用户打字。用户敲完按回车,程序才继续往下走。
name = input("请输入你的姓名:")
print("你输入的姓名是:", name)
请输入你的姓名:小满
你输入的姓名是: 小满
括号里那句话叫“提示语”,会显示在屏幕上,告诉用户该输什么。也可以什么都不写:
s = input() # 屏幕上什么都不显示,就停在那儿等
print("你输入了:", s)
最关键的一点:input() 拿到的一律是文字
不管你敲的是 25 还是 1.75,input() 拿到的都是文字(字符串),不是数字。用 type() 一看就知道:
age = input("请输入你的年龄:")
print(age)
print(type(age)) # 看看它到底是什么类型
请输入你的年龄:25
25
<class 'str'>
str 就是字符串,也就是文字。这会带来一个很常见的意外:
a = input("第一个数:")
b = input("第二个数:")
print(a + b)
第一个数:5
第二个数:3
53
53 而不是 8?因为两段文字“5”和“3”加在一起,变成了“53”——这叫拼接,不是加法。想真正做加法,得先把它变成数字,这正是下一节要讲的。
七、输入的转换:int / float / eval
解决办法只有一个动作:把 input(...) 整个套进转换函数的括号里。
# 对比一下就懂了
a = input("请输入:") # 拿到的是文字,不能算
b = int(input("请输入:")) # 拿到的是整数,可以算
最常用的三个
| 写法 | 变成什么 | 适合输入什么 | 例子 |
|---|---|---|---|
int(input("...")) | 整数 | 年龄、人数、个数 | 输入 25 → 得到整数 25 |
float(input("...")) | 小数 | 身高、体重、价格 | 输入 1.75 → 得到小数 1.75 |
eval(input("...")) | 自动判断 | 不确定用户会输整数还是小数 | 输入 25 得整数,输入 1.75 得小数 |
# 要整数:套 int()
age = int(input("请输入你的年龄:"))
print(f"你的年龄是 {age} 岁")
print(type(age)) # <class 'int'>
# 要小数:套 float()
height = float(input("请输入你的身高(米):"))
print(f"你的身高是 {height} 米")
print(type(height)) # <class 'float'>
请输入你的年龄:25
你的年龄是 25 岁
<class 'int'>
请输入你的身高(米):1.75
你的身高是 1.75 米
<class 'float'>
套上之后,加法就正常了
a = int(input("第一个数:"))
b = int(input("第二个数:"))
print(f"{a} + {b} = {a + b}")
第一个数:5
第二个数:3
5 + 3 = 8
eval() 会自己判断,但有个坑
eval() 不用你纠结用 int 还是 float,它自己看着办:
x = eval(input("请输入一个数:"))
print(x, type(x))
请输入一个数:25
25 <class 'int'>
请输入一个数:1.75
1.75 <class 'float'>
int() 或 float(),少用 eval()。eval() 会把用户输入的内容当成代码去执行,用户万一输错东西,程序可能有意料之外的反应。要整数就写 int、要小数就写 float,更安全也更清楚。
转换失败长什么样
int(input("请输入年龄:")) # 输入 18.5 → 报错,int 只认整数
int(input("请输入年龄:")) # 输入 十八 → 报错,文字变不成数字
float();想让用户重输一遍,得用到后面才学的 try...except。现在只要记住一句话:转换函数和输入内容对不上,程序就会报 ValueError。
课程思政|数据安全与法治素养 · 图省事的代价
转换输入只用三招,其中 eval() 最省事——它不用你纠结整数还是小数,自己看着办。可「省事」往往埋着代价:它会把你输入的整段内容当成代码去执行,别人给什么它就跑什么。越方便的接口,越要想清它背后能碰什么。初学阶段老老实实用 int、float,就是在给自己立一道安全边界。
八、合起来用:三个小例子
例子 1:打招呼(只练输入和输出)
# 输入
name = input("请输入你的名字:")
# 输出
print(f"你好,{name}!欢迎来学 Python。")
请输入你的名字:小满
你好,小满!欢迎来学 Python。
例子 2:两数相加(输入 + 转换 + 输出)
# 输入:都要转成整数
num1 = int(input("请输入第一个数字:"))
num2 = int(input("请输入第二个数字:"))
# 处理:算和
total = num1 + num2
# 输出
print(f"{num1} + {num2} = {total}")
请输入第一个数字:5
请输入第二个数字:3
5 + 3 = 8
例子 3:算 BMI(小数 + 保留一位小数)
# 输入:身高体重都是小数,所以用 float
height = float(input("请输入身高(米):"))
weight = float(input("请输入体重(公斤):"))
# 处理
bmi = weight / (height * height)
# 输出:保留 1 位小数
print(f"你的 BMI 是 {bmi:.1f}")
请输入身高(米):1.70
请输入体重(公斤):65
你的 BMI 是 22.5
AI 助手小贴士|输入输出是所有程序的第一块积木,让 AI 出综合小题练手。
打开任意 AI 对话工具(网页版或 App 都可以),试试这样问:出 2 道综合 input 和 f 字符串的小程序题(比如生成一张姓名自我介绍卡片),等我写完代码你逐行点评
九、新手最容易踩的坑
下面这几条,几乎每个人都中过招。
- 忘了转换,加法变成拼接。
input()拿到的是文字,"5" + "3"得到"53"。改法:写成int(input(...))。 - 要小数却用了
int()。输入1.75会报ValueError——int只认整数,小数要用float。 - 输入了文字却想转成数字。输入“十八”再套
int(),同样报ValueError。转换函数只认它能看懂的写法。 - f-string 前面忘了写
f。屏幕上会原样打出我的名字是{name}。检查引号前面那个小写f。 - 大括号里的变量名拼错或大小写不对。会报
NameError。大括号里填的名字,必须和=左边那个一模一样。 - 把
{bmi:.1f}里的:.1f写到括号外面。位数格式必须在大括号里面,紧跟在变量名后面。 - 整句话用字符串相加去拼。数字得先
str()才能和文字相加,否则报TypeError——碰到这种情况,直接改用 f-string 最省事。
AI 助手小贴士|input() 拿到的永远是字符串、print() 的格式化写法容易忘——这些细节问 AI 最快。它还能当出题老师。
打开任意 AI 对话工具(网页版或 App 都可以),试试这样问:给我出 3 道只用 input()、print() 和 int() 的 Python 小练习,从易到难。先不要给答案,等我说「对答案」再公布
十、随堂自测(10 题)
点击选项即可判分,答错的题会立刻显示解析。全部答完后会给出正确率和错题清单。
1print("姓名:", "李四") 里被逗号隔开的两个内容,输出时中间默认是什么?
- A. 一个空格
- B. 什么都不加,直接连在一起
- C. 一个逗号
- D. 自动换行
sep。2想让 print("2026", "09", "20") 输出 2026-09-20,应该怎么改?
- A. 加一个参数
end="-" - B. 把三个内容用
+拼成一个字符串 - C. 加一个参数
sep="-" - D. 改成三个独立的
print
sep 管的是逗号之间的分隔符;end 管的是整行结尾加什么,用 end="-" 只会把短横线加到最后(A 错)。3默认情况下,print() 打印完一行之后会怎样?
- A. 自动清空屏幕
- B. 自动在末尾加一个逗号
- C. 光标停在原行末尾,不换行
- D. 自动换到下一行
end="\n",所以打印完会自动换行。想不换行,得显式写 end="" 或 end=" "。4下面哪一句能正确输出「我的名字是小满」(假设 name = "小满")?
- A.
print("我的名字是{name}") - B.
print(f"我的名字是{name}") - C.
print("f我的名字是{name}") - D.
print(f我的名字是{name})
f 必须写在引号外面、紧贴引号前面。漏了 f,大括号会被原样打印(A 错);塞进引号里或漏掉引号都不对。5print(f"{10 / 3:.2f}") 会输出什么?
- A. 3.33
- B. 3.3
- C. 3
- D. 3.3333333333333335
:.2f 是保留 2 位小数;.1f 才是 1 位(B 错),.0f 不留小数(C 错)。6x = input("请输入:"),用户输入 25 并回车之后,x 是什么?
- A. 整数 25
- B. 小数 25.0
- C. 文字 "25"
- D. 空值 None
input() 拿到的永远是字符串(文字),想要数字必须自己转换,比如写成 int(input(...))。7a = input()、b = input() 依次输入 5 和 3,print(a + b) 会输出什么?
- A. 8
- B. 5 3
- C. 报错
- D. 53
int(input()) 先转成数字。8要读入身高 1.75 米这种小数,正确的写法是?
- A.
height = int(input("请输入身高:")) - B.
height = float(input("请输入身高:")) - C.
height = input("请输入身高:") - D.
height = eval(print("请输入身高:"))
int 只认整数,输入 1.75 会报 ValueError;float 专门接小数;选项 C 拿到的还是文字,后面没法参与计算。9关于 eval(input(...)),下面哪种说法是对的?
- A. 它会自动判断输入的是整数还是小数
- B. 它和
float()完全等价 - C. 它只用来输出结果,和
print一样 - D. 它会把任何输入都变成文字
eval 会按内容自动判断类型(输入 25 得整数、输入 1.75 得小数)。但它会把输入当代码执行,初学阶段建议优先用 int 或 float 更安全。10按 IPO 的思路,print(f"和是 {a + b}") 这一句属于哪一环?
- A. Input(输入)
- B. Process(处理)
- C. Output(输出)
- D. 都不属于
print 是把结果反馈给用户,属于输出环节;a + b 那个计算才是 Process,问用户要数据是 Input。