今天你 AI 赋能了吗?打开浏览器,在地址栏输入 xuefulu.ai ,按下 Enter 即可访问学府路1号!
2026年10月14日 星期三 10:40:04
常用网址: | | 学府路1号 https://xuefulu.ai | 下载 Python https://xuefulu.ai/Python.html | 下载 TRAE https://xuefulu.ai/Trae.html

一、程序的骨架:输入 → 处理 → 输出

写程序,其实就是在重复做三件事:拿到数据 → 算一算 → 把结果说出来。这套思路有个名字叫 IPO。

字母英文中文Python 里靠谁
IInput输入:拿到数据input(),问用户要
PProcess处理:算一算变量、运算、判断、循环
OOutput输出:把结果说出来print(),打印到屏幕

像一家小工厂:输入是原材料,处理是加工,输出是成品。

Python
# 输入:问用户要一个名字
name = input("请输入你的名字:")

# 处理:在名字后面接一句问候
greeting = "你好," + name + "!"

# 输出:把结果打印出来
print(greeting)

运行效果(“小满”是你自己敲进去的):

输出
请输入你的名字:小满
你好,小满!
这一篇只讲两头的 I 和 O。中间那个 P(处理),等你学了运算、条件、循环再慢慢补上。

课程思政|工匠精神与严谨求实 · 先把骨架搭起来

任何程序都是「拿数据 → 算一算 → 出结果」这三件事,缺一样都跑不起来。先把这副骨架搭好,再往里填细节,比一上来就盯着某一行代码抠要靠谱得多。做事也一样:先想清楚要经过哪几步,再动手,才不会写到一半发现方向就错了。有条理,本身就是一种效率。

二、输出:print() 的三招

print() 的作用只有一个:把东西打印到屏幕上。括号里放什么,屏幕上就出现什么。

第一招:打印一段文字

文字要用引号包起来,单引号、双引号都行。

Python
print("Hello Python")
print('你好,Python')      # 用单引号也一样
输出
Hello Python
你好,Python

第二招:一次打印好几个内容

用逗号隔开就行。注意一个细节:逗号会自动变成一个空格。

Python
print("饮品:", "珍珠奶茶", "杯数:", 2)
输出
饮品: 珍珠奶茶 杯数: 2
看到 饮品: 后面多出来的那个空格了吗?那是逗号带来的。想换成别的分隔符,就要用下一节讲的 sep。

第三招:打印变量和数字

变量不用加引号;数字也不用。

Python
balance = 23.5
print("校园卡余额是:", balance)

print(100)          # 数字直接写,不加引号
print(3 + 5)        # 还能让它先算再打印
输出
校园卡余额是: 23.5
100
8
记一个区别:print("100") 和 print(100) 在屏幕上看着一模一样,但前者是文字、后者是数字。现在看不出差别,等它要参与计算时就分家了。

顺手练一副春联

一行一个 print(),一句一行,正好排出一副春联:

Python
print("上联:春风得意财源广")
print("下联:平安富贵家业兴")
print("横批:万事如意")

输出:

输出
上联:春风得意财源广
下联:平安富贵家业兴
横批:万事如意

每个 print() 打完自动换行,所以三条语句就是三行——这和「写几句话就分几段」是一个道理。

三、输出的两个小开关:sep 和 end

print() 有两个可以调的“开关”。写法都是“名字 = 值”,放在括号的最后面。

开关一:sep —— 管逗号之间用什么隔开

默认是一个空格,可以换成别的。sep 是 separator(分隔符)的缩写。

Python
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 改掉,就能让它不换行。

Python
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(格式化)的缩写。

Python
name = "小满"
age = 19
print(f"我的名字是{name},今年{age}岁")
输出
我的名字是小满,今年19岁
两个细节别忘:① 引号前面必须有那个 f,漏了的话 {name} 会原样打印出来;② 大括号里的名字要和变量名一模一样,大小写都不能差。

大括号里还能直接算

Python
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 就能规定留几位。

Python
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(...),变量一多就容易数错顺序
Python
item = "珍珠奶茶"
price = 12.5

print(f"价格:{price:.1f}")                            # 推荐
print("价格:%.1f" % price)                            # 老写法
print("饮品:{},价格:{:.1f}".format(item, price))     # format()
输出
价格:12.5
价格:12.5
饮品:珍珠奶茶,价格:12.5
三种写法结果完全一样。选 f-string 的理由很实在:变量就写在它出现的位置,一眼就能看出这句话最后会变成什么样。

AI 助手小贴士|f 字符串的花样最多也最常用,记不住就问。

打开任意 AI 对话工具(网页版或 App 都可以),试试这样问:f 字符串里 {price:.2f} 和 {name:>8} 分别是什么意思?各举两个例子,再出 2 道格式化题考我

六、输入:input() 收进来的都是文字

input() 的作用是停下来等用户打字。用户敲完按回车,程序才继续往下走。

Python
name = input("请输入你的姓名:")
print("你输入的姓名是:", name)
输出
请输入你的姓名:小满
你输入的姓名是: 小满

括号里那句话叫“提示语”,会显示在屏幕上,告诉用户该输什么。也可以什么都不写:

Python
s = input()        # 屏幕上什么都不显示,就停在那儿等
print("你输入了:", s)

最关键的一点:input() 拿到的一律是文字

不管你敲的是 25 还是 1.75,input() 拿到的都是文字(字符串),不是数字。用 type() 一看就知道:

Python
age = input("请输入你的年龄:")
print(age)
print(type(age))        # 看看它到底是什么类型
输出
请输入你的年龄:25
25
<class 'str'>

str 就是字符串,也就是文字。这会带来一个很常见的意外:

Python
a = input("第一个数:")
b = input("第二个数:")
print(a + b)
输出
第一个数:5
第二个数:3
53
为什么结果是 53 而不是 8?因为两段文字“5”和“3”加在一起,变成了“53”——这叫拼接,不是加法。想真正做加法,得先把它变成数字,这正是下一节要讲的。

七、输入的转换:int / float / eval

解决办法只有一个动作:把 input(...) 整个套进转换函数的括号里。

Python
# 对比一下就懂了
a = input("请输入:")            # 拿到的是文字,不能算
b = int(input("请输入:"))        # 拿到的是整数,可以算

最常用的三个

写法变成什么适合输入什么例子
int(input("..."))整数年龄、人数、个数输入 25 → 得到整数 25
float(input("..."))小数身高、体重、价格输入 1.75 → 得到小数 1.75
eval(input("..."))自动判断不确定用户会输整数还是小数输入 25 得整数,输入 1.75 得小数
Python
# 要整数:套 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'>

套上之后,加法就正常了

Python
a = int(input("第一个数:"))
b = int(input("第二个数:"))
print(f"{a} + {b} = {a + b}")
输出
第一个数:5
第二个数:3
5 + 3 = 8

eval() 会自己判断,但有个坑

eval() 不用你纠结用 int 还是 float,它自己看着办:

Python
x = eval(input("请输入一个数:"))
print(x, type(x))
输出
请输入一个数:25
25 <class 'int'>
请输入一个数:1.75
1.75 <class 'float'>
建议:初学阶段尽量用 int() 或 float(),少用 eval()。eval() 会把用户输入的内容当成代码去执行,用户万一输错东西,程序可能有意料之外的反应。要整数就写 int、要小数就写 float,更安全也更清楚。

转换失败长什么样

Python
int(input("请输入年龄:"))     # 输入 18.5 → 报错,int 只认整数
int(input("请输入年龄:"))     # 输入 十八  → 报错,文字变不成数字
要输入小数就用 float();想让用户重输一遍,得用到后面才学的 try...except。现在只要记住一句话:转换函数和输入内容对不上,程序就会报 ValueError。

课程思政|数据安全与法治素养 · 图省事的代价

转换输入只用三招,其中 eval() 最省事——它不用你纠结整数还是小数,自己看着办。可「省事」往往埋着代价:它会把你输入的整段内容当成代码去执行,别人给什么它就跑什么。越方便的接口,越要想清它背后能碰什么。初学阶段老老实实用 int、float,就是在给自己立一道安全边界。

八、合起来用:三个小例子

例子 1:打招呼(只练输入和输出)

Python
# 输入
name = input("请输入你的名字:")

# 输出
print(f"你好,{name}!欢迎来学 Python。")
输出
请输入你的名字:小满
你好,小满!欢迎来学 Python。

例子 2:两数相加(输入 + 转换 + 输出)

Python
# 输入:都要转成整数
num1 = int(input("请输入第一个数字:"))
num2 = int(input("请输入第二个数字:"))

# 处理:算和
total = num1 + num2

# 输出
print(f"{num1} + {num2} = {total}")
输出
请输入第一个数字:5
请输入第二个数字:3
5 + 3 = 8

例子 3:算 BMI(小数 + 保留一位小数)

Python
# 输入:身高体重都是小数,所以用 float
height = float(input("请输入身高(米):"))
weight = float(input("请输入体重(公斤):"))

# 处理
bmi = weight / (height * height)

# 输出:保留 1 位小数
print(f"你的 BMI 是 {bmi:.1f}")
输出
请输入身高(米):1.70
请输入体重(公斤):65
你的 BMI 是 22.5
三个例子的骨架完全一样:先用 input 拿数据 → 中间处理 → 最后用 print 出结果。以后写任何程序,都可以先照这个骨架搭起来,再往里填细节。

AI 助手小贴士|输入输出是所有程序的第一块积木,让 AI 出综合小题练手。

打开任意 AI 对话工具(网页版或 App 都可以),试试这样问:出 2 道综合 input 和 f 字符串的小程序题(比如生成一张姓名自我介绍卡片),等我写完代码你逐行点评

九、新手最容易踩的坑

下面这几条,几乎每个人都中过招。

一句话收尾:input 负责要数据、而且拿到的都是文字,int/float 负责把文字变成能算的数字,print 配合 f-string 负责把结果说清楚。

AI 助手小贴士|input() 拿到的永远是字符串、print() 的格式化写法容易忘——这些细节问 AI 最快。它还能当出题老师。

打开任意 AI 对话工具(网页版或 App 都可以),试试这样问:给我出 3 道只用 input()、print() 和 int() 的 Python 小练习,从易到难。先不要给答案,等我说「对答案」再公布

十、随堂自测(10 题)

点击选项即可判分,答错的题会立刻显示解析。全部答完后会给出正确率和错题清单。

已答 0 / 10 · 正确 0 —

1print("姓名:", "李四") 里被逗号隔开的两个内容,输出时中间默认是什么?

  • A. 一个空格
  • B. 什么都不加,直接连在一起
  • C. 一个逗号
  • D. 自动换行
答案:A。print 用逗号分隔多个内容时,默认用一个空格隔开。想换成别的分隔符,要用 sep。

2想让 print("2026", "09", "20") 输出 2026-09-20,应该怎么改?

  • A. 加一个参数 end="-"
  • B. 把三个内容用 + 拼成一个字符串
  • C. 加一个参数 sep="-"
  • D. 改成三个独立的 print
答案:C。sep 管的是逗号之间的分隔符;end 管的是整行结尾加什么,用 end="-" 只会把短横线加到最后(A 错)。

3默认情况下,print() 打印完一行之后会怎样?

  • A. 自动清空屏幕
  • B. 自动在末尾加一个逗号
  • C. 光标停在原行末尾,不换行
  • D. 自动换到下一行
答案:D。默认相当于 end="\n",所以打印完会自动换行。想不换行,得显式写 end="" 或 end=" "。

4下面哪一句能正确输出「我的名字是小满」(假设 name = "小满")?

  • A. print("我的名字是{name}")
  • B. print(f"我的名字是{name}")
  • C. print("f我的名字是{name}")
  • D. print(f我的名字是{name})
答案:B。字母 f 必须写在引号外面、紧贴引号前面。漏了 f,大括号会被原样打印(A 错);塞进引号里或漏掉引号都不对。

5print(f"{10 / 3:.2f}") 会输出什么?

  • A. 3.33
  • B. 3.3
  • C. 3
  • D. 3.3333333333333335
答案:A。:.2f 是保留 2 位小数;.1f 才是 1 位(B 错),.0f 不留小数(C 错)。

6x = input("请输入:"),用户输入 25 并回车之后,x 是什么?

  • A. 整数 25
  • B. 小数 25.0
  • C. 文字 "25"
  • D. 空值 None
答案:C。input() 拿到的永远是字符串(文字),想要数字必须自己转换,比如写成 int(input(...))。

7a = input()、b = input() 依次输入 5 和 3,print(a + b) 会输出什么?

  • A. 8
  • B. 5 3
  • C. 报错
  • D. 53
答案:D。两段文字相加是“拼接”而不是加法,所以得到 "53"。想算出 8,得写成 int(input()) 先转成数字。

8要读入身高 1.75 米这种小数,正确的写法是?

  • A. height = int(input("请输入身高:"))
  • B. height = float(input("请输入身高:"))
  • C. height = input("请输入身高:")
  • D. height = eval(print("请输入身高:"))
答案:B。int 只认整数,输入 1.75 会报 ValueError;float 专门接小数;选项 C 拿到的还是文字,后面没法参与计算。

9关于 eval(input(...)),下面哪种说法是对的?

  • A. 它会自动判断输入的是整数还是小数
  • B. 它和 float() 完全等价
  • C. 它只用来输出结果,和 print 一样
  • D. 它会把任何输入都变成文字
答案:A。eval 会按内容自动判断类型(输入 25 得整数、输入 1.75 得小数)。但它会把输入当代码执行,初学阶段建议优先用 int 或 float 更安全。

10按 IPO 的思路,print(f"和是 {a + b}") 这一句属于哪一环?

  • A. Input(输入)
  • B. Process(处理)
  • C. Output(输出)
  • D. 都不属于
答案:C。print 是把结果反馈给用户,属于输出环节;a + b 那个计算才是 Process,问用户要数据是 Input。