程序的本质在于处理数据,而数据的来源和去向构成了程序与外界交互的基础。在Python编程中,输入与输出操作是连接程序内部逻辑与外部世界的桥梁。 通过输出操作,我们可以将程序的运行结果展示给用户;通过输入操作,我们可以获取用户提供的数据,让程序能够根据不同的输入产生相应的结果。
掌握输入与输出操作不仅是学习Python的基础要求,更是开发实用程序的必备技能。无论是简单的计算器程序,还是复杂的数据处理系统,都离不开与用户的交互。 Python为我们提供了简洁而强大的输入输出函数,让程序与用户的交流变得自然和直观。

在Python中,print()函数是最常用的输出工具,它能够将程序中的数据以人类可读的形式显示在屏幕上。这个看似简单的函数实际上非常灵活,能够处理各种类型的数据,并提供多样化的输出格式。
最简单的输出操作就是显示一段文本信息。当我们编写第一个Python程序时,通常都是从输出"Hello, World!"开始的:
|print("欢迎来到Python的世界!")
这行代码会在屏幕上显示:
|欢迎来到Python的世界!
print()函数的强大之处在于它能够接受多种类型的数据。无论是字符串、数字,还是其他数据类型,它都能够自动转换为适当的文本表示形式:
|student_name = "张小明" age = 20 score = 95.5 is_excellent = True print("学生姓名:", student_name) print("年龄:", age) print("成绩:", score) print("是否优秀:", is_excellent)
运行这段代码会得到:
|学生姓名: 张小明 年龄: 20 成绩: 95.5 是否优秀: True
当print()函数接收多个参数时,它会自动在各个参数之间插入空格,并在输出结束后添加换行符。这种默认行为让输出结果清晰易读,但有时我们需要更精确的控制。
print()函数提供了几个重要的参数来控制输出格式。其中sep参数用于指定多个输出项之间的分隔符,而end参数则控制输出结束时添加的字符。
|print("苹果", "香蕉", "橙子", sep="、") print("第一行", end="") print("第二行") print("数字", 1, 2, 3, sep="-", end="!\n")
输出结果为:
|苹果、香蕉、橙子 第一行第二行 数字-1-2-3!
这种控制方式在生成特定格式的报告或创建用户界面时特别有用。例如,我们可以创建一个简单的进度条效果:
|import time print("程序启动中", end="") for i in range(5): print(".", end="", flush=True) time.sleep(0.5) print(" 完成!")
这段代码会逐步显示点号,营造出程序正在加载的视觉效果。
虽然简单的文本输出能够满足基本需求,但在实际开发中,我们经常需要将变量的值嵌入到复杂的文本中。Python提供了多种字符串格式化方法,其中最现代和推荐的是f字符串(f-string)。
f字符串通过在字符串前添加字母f来标识,并使用花括号{}来包含需要插入的表达式:
|student = "李小华" chinese = 88 math = 92 english = 85 average = (chinese + math + english) / 3 report = f"学生{student}的成绩报告:\n语文:{chinese}分\n数学:{math}分\n
输出结果:
|学生李小华的成绩报告: 语文:88分 数学:92分 英语:85分 平均分:88.33分
f字符串的优势在于它允许在字符串中直接使用表达式,并且支持丰富的格式化选项。例如,我们可以控制数字的显示精度、对齐方式等:
|price = 12.5 quantity = 3 total = price * quantity print(f"商品价格:{price:>8.2f}元") print(f"购买数量:{quantity:>8d}个") print(f"总计金额:{total:>8.2f}元") print
这会产生整齐对齐的输出:
|商品价格: 12.50元 购买数量: 3个 总计金额: 37.50元 --------------------
除了f字符串,Python还提供了format()方法和传统的%格式化操作符。虽然f字符串是推荐的方法,但了解其他格式化方式有助于理解现有代码:
|name = "王同学" score = 87.5 # 使用format()方法 message1 = "{}的成绩是{:.1f}分".format(name, score) # 使用%格式化 message2 = "%s的成绩是%.1f分" % (name, score) # 使用f字符串 message3 = f"{name}的成绩是{score:.1f}
三种方法都会产生相同的输出:
|王同学的成绩是87.5分 王同学的成绩是87.5分 王同学的成绩是87.5分
程序的交互性很大程度上取决于它能否有效地获取和处理用户输入。Python的input()函数为我们提供了一个简单而强大的方式来实现用户交互。
input()函数会暂停程序的执行,等待用户输入信息。用户输入的内容会作为字符串返回给程序:
|user_name = input("请输入您的姓名:") print(f"您好,{user_name}!")
当程序运行到input()函数时,会显示提示信息,并等待用户输入:
|请输入您的姓名:张三 您好,张三!
提示信息的设计非常重要,它直接影响用户体验。好的提示信息应该清楚地说明需要输入什么类型的信息,并提供必要的格式说明:
|birth_year = input("请输入您的出生年份(如:1995):") email = input("请输入您的邮箱地址:") phone = input("请输入您的手机号码(11位数字):") print("\n信息确认:") print(f"出生年份:{birth_year}") print(f"邮箱地址:{email}")
input()函数始终返回字符串类型的数据,即使用户输入的是数字。这意味着如果我们需要进行数值计算,必须先将输入转换为适当的数据类型:
|age_str = input("请输入您的年龄:") print(f"输入的年龄类型:{type(age_str)}") age = int(age_str) print(f"转换后的年龄类型:{type(age)}") next_year_age = age + 1 print(f"明年您将{next_year_age}岁")
运行结果:
|请输入您的年龄:25 输入的年龄类型:<class 'str'> 转换后的年龄类型:<class 'int'> 明年您将26岁
为了简化代码,我们通常将输入和类型转换合并在一行中:
|height = float(input("请输入您的身高(米):")) weight = float(input("请输入您的体重(公斤):")) bmi = weight / (height ** 2) print(f"您的BMI指数是:{bmi:.2f}") if bmi < 18.5: print("体重偏轻"
在实际应用中,我们经常需要获取多个相关的输入项。通过合理的设计,可以让输入过程更加流畅:
|print("=== 学生信息录入系统 ===") student_id = input("学号:") name = input("姓名:") age = int(input("年龄:")) major = input("专业:") print("\n=== 成绩录入 ===") subjects = ["语文", "数学"
这个程序展示了如何组织多个输入操作,并将它们整合成一个完整的功能。
在实际开发中,用户的输入往往是不可预测的。有效的输入验证和错误处理能够提高程序的健壮性和用户体验。
最常见的问题是用户输入了错误的数据类型。例如,当程序期望一个数字时,用户却输入了文字:
|while True: try: age = int(input("请输入您的年龄:")) if age < 0 or age > 150: print("年龄应该在0到150之间,请重新输入。") continue break except ValueError: print("请输入有效的数字。") print(f"您的年龄是
这个例子使用了循环和异常处理来确保用户输入的是有效的年龄数值。程序会持续提示用户,直到获得正确的输入为止。
为了提高代码的可重用性,我们可以创建专门的函数来处理不同类型的输入验证:
|def get_positive_number(prompt, data_type=int): """获取正数输入""" while True: try: value = data_type(input(prompt)) if value <= 0: print("请输入正数。") continue return value except ValueError: print(f"请输入有效的{data_type.
8. 输入输出基础练习
编写一个程序,获取用户输入的姓名和年龄,使用f-string格式化输出,并控制print函数的分隔符和结尾。
|name = input("请输入您的姓名:") age = int(input("请输入您的年龄:")) # 使用f-string格式化输出 print(f"您好,{name}!您今年{age}岁") # 控制print函数的分隔符和结尾 print("苹果", "香蕉", "橙子", sep="-",
9. 类型转换和格式化输出
编写一个程序,获取价格和数量,计算总价并格式化输出(保留2位小数)。
|# 获取浮点数输入 price = float(input("请输入价格:")) # 获取整数输入 quantity = int(input("请输入数量:")) # 计算总价并格式化输出(保留2位小数) total = price * quantity print(f"总价:{total:.2f}元")
运行示例:
|请输入价格:12.5 请输入数量:3 总价:37.50元
说明:
float()函数将字符串转换为浮点数int()函数将字符串转换为整数10. 简单计算器程序
编写一个简单计算器程序,获取两个数字和运算符,计算并输出结果,处理除零错误和无效输入。
|try: # 获取用户输入的两个数字 num1 = float(input("请输入第一个数字:")) num2 = float(input("请输入第二个数字:")) # 获取用户选择的运算符 operator = input("请选择运算符(+、-、*、/):") # 计算并输出结果 if operator == '+': result = num1 + num2
运行示例:
|请输入您的姓名:张三 请输入您的年龄:20 您好,张三!您今年20岁 苹果-香蕉-橙子!
说明:
input()函数获取用户输入的字符串int()函数将字符串转换为整数f-string使用花括号插入变量值sep参数控制多个参数之间的分隔符end参数控制输出末尾的字符{total:.2f}运行示例:
示例1(正常计算):
|请输入第一个数字:10 请输入第二个数字:3 请选择运算符(+、-、*、/):/ 10.0 / 3.0 = 3.33
示例2(除零错误):
|请输入第一个数字:10 请输入第二个数字:0 请选择运算符(+、-、*、/):/ 错误:除数不能为零!
示例3(无效输入):
|请输入第一个数字:abc 错误:请输入有效的数字!
说明:
try-except捕获ValueError异常,处理无效输入