第4集 基本输入输出操作
1. 输入操作
1.1 input()函数
input()函数用于从键盘获取用户输入。
基本语法:
变量名 = input("提示信息")1.2 基本输入示例
# 获取用户输入
name = input("请输入您的姓名:")
print("你好," + name + "!")
# 输出示例:
# 请输入您的姓名:张三
# 你好,张三!重要提示:input()函数总是返回字符串类型!
1.3 输入类型转换
由于input()返回字符串,如果需要数字类型,必须进行类型转换。
# 错误示例:直接使用输入的数字进行运算
age = input("请输入年龄:")
# age + 1 # 错误:字符串不能直接加数字
# 正确示例:转换为数字
age = int(input("请输入年龄:"))
print("明年你的年龄是:", age + 1)
# 输入浮点数
height = float(input("请输入身高(米):"))
print(f"身高:{height}米")1.4 多个输入
# 连续输入
name = input("请输入姓名:")
age = int(input("请输入年龄:"))
height = float(input("请输入身高:"))
print(f"姓名:{name},年龄:{age}岁,身高:{height}米")2. 输出操作
2.1 print()函数回顾
print()函数用于在控制台输出信息。
# 基本输出
print("Hello, World!")
# 输出变量
name = "张三"
print(name)2.2 输出多个内容
# 使用逗号分隔(自动加空格)
name = "张三"
age = 18
print("姓名:", name, "年龄:", age)
# 输出:姓名: 张三 年龄: 18
# 使用+号连接(字符串)
print("姓名:" + name + ",年龄:" + str(age))
# 输出:姓名:张三,年龄:18
# 使用f-string(推荐)
print(f"姓名:{name},年龄:{age}岁")
# 输出:姓名:张三,年龄:18岁2.3 格式化输出
# 使用f-string格式化
name = "张三"
age = 18
score = 95.5
height = 1.75
# 基本格式化
print(f"姓名:{name}")
# 数字格式化
print(f"年龄:{age}岁")
print(f"成绩:{score}分")
print(f"身高:{height:.2f}米") # 保留2位小数
# 百分比
percentage = 0.85
print(f"完成度:{percentage:.1%}") # 输出:完成度:85.0%
# 科学计数法
big_number = 1234567.89
print(f"大数:{big_number:.2e}") # 输出:大数:1.23e+06
# 对齐和宽度
print(f"姓名:{name:<10}") # 左对齐,宽度10
print(f"姓名:{name:>10}") # 右对齐,宽度10
print(f"姓名:{name:^10}") # 居中对齐,宽度102.4 format()方法(旧式格式化)
name = "张三"
age = 18
# 位置参数
print("姓名:{},年龄:{}岁".format(name, age))
# 索引参数
print("{1}的年龄是{0}岁".format(age, name))
# 关键字参数
print("姓名:{name},年龄:{age}岁".format(name=name, age=age))3. print()函数的高级参数
3.1 sep参数(分隔符)
# 默认分隔符是空格
print("Hello", "World", "!")
# 输出:Hello World !
# 自定义分隔符
print("Hello", "World", "!", sep="-")
# 输出:Hello-World-!
print("2024", "01", "01", sep="/")
# 输出:2024/01/01
print("Python", "is", "awesome", sep=" ")
# 输出:Python is awesome3.2 end参数(结束符)
# 默认end是换行符\n
print("第一行")
print("第二行")
# 输出:
# 第一行
# 第二行
# 不换行输出
print("Hello", end=" ")
print("World!")
# 输出:Hello World!
# 自定义结束符
print("第一行", end=" | ")
print("第二行")
# 输出:第一行 | 第二行
# 输出进度条
for i in range(5):
print(f"进度:{i+1}/5", end="\r") # \r回到行首
# 模拟耗时操作
# time.sleep(0.5)3.3 同时使用sep和end
print("Hello", "World", sep="-", end="!\n")
# 输出:Hello-World!4. 输入输出综合示例
4.1 交互式计算器
"""
交互式计算器
获取用户输入的两个数字,进行运算
"""
# 获取用户输入
print("简单计算器")
print("-" * 30)
num1 = float(input("请输入第一个数字:"))
num2 = float(input("请输入第二个数字:"))
# 输出运算结果
print(f"\n{num1} + {num2} = {num1 + num2}")
print(f"{num1} - {num2} = {num1 - num2}")
print(f"{num1} × {num2} = {num1 * num2}")
if num2 != 0:
print(f"{num1} ÷ {num2} = {num1 / num2:.2f}")
else:
print("除数不能为0!")4.2 圆的周长和面积计算
"""
圆的周长和面积计算
"""
import math
# 获取半径
radius = float(input("请输入圆的半径:"))
# 计算周长和面积
circumference = 2 * math.pi * radius
area = math.pi * radius ** 2
# 输出结果
print(f"\n圆的半径:{radius}米")
print(f"圆的周长:{circumference:.2f}米")
print(f"圆的面积:{area:.2f}平方米")4.3 个人信息录入系统
"""
个人信息录入系统
"""
print("个人信息录入")
print("=" * 40)
# 获取个人信息
name = input("姓名:")
age = int(input("年龄:"))
gender = input("性别(男/女):")
height = float(input("身高(厘米):"))
weight = float(input("体重(公斤):"))
city = input("城市:")
# 计算BMI
height_m = height / 100 # 转换为米
bmi = weight / (height_m ** 2)
# 判断健康状态
if bmi < 18.5:
status = "偏瘦"
elif 18.5 <= bmi < 24:
status = "正常"
elif 24 <= bmi < 28:
status = "偏胖"
else:
status = "肥胖"
# 输出结果
print("\n" + "=" * 40)
print("个人信息录入完成")
print("=" * 40)
print(f"姓名:{name}")
print(f"性别:{gender}")
print(f"年龄:{age}岁")
print(f"身高:{height}厘米")
print(f"体重:{weight}公斤")
print(f"城市:{city}")
print("-" * 40)
print(f"BMI指数:{bmi:.1f}")
print(f"健康状态:{status}")
print("=" * 40)5. 输入验证
5.1 基本验证
"""
输入验证示例
"""
# 验证年龄输入
while True:
age_input = input("请输入年龄(1-120):")
if age_input.isdigit(): # 检查是否为数字
age = int(age_input)
if 1 <= age <= 120:
break
else:
print("年龄必须在1-120之间!")
else:
print("请输入有效的数字!")
print(f"年龄:{age}岁")5.2 使用try-except
"""
使用try-except处理输入错误
"""
while True:
try:
# 尝试转换为浮点数
score = float(input("请输入成绩(0-100):"))
# 验证范围
if 0 <= score <= 100:
print(f"成绩:{score}分")
break
else:
print("成绩必须在0-100之间!")
except ValueError:
print("请输入有效的数字!")6. 特殊输入技巧
6.1 默认值
"""
输入默认值
"""
def input_with_default(prompt, default=""):
"""带默认值的输入函数"""
user_input = input(f"{prompt}[默认:{default}]:")
return user_input if user_input else default
# 使用示例
name = input_with_default("请输入姓名", "匿名用户")
print(f"姓名:{name}")6.2 确认输入
"""
确认输入
"""
while True:
name = input("请输入姓名:")
confirm = input(f"确认姓名是'{name}'吗?(y/n):")
if confirm.lower() == 'y':
print(f"姓名确认:{name}")
break
else:
print("请重新输入。")6.3 密码输入(使用getpass)
"""
密码输入示例
需要导入getpass模块
"""
import getpass
print("用户登录")
print("-" * 30)
username = input("用户名:")
password = getpass.getpass("密码:") # 密码不会显示
print(f"\n登录成功!")
print(f"用户名:{username}")
print(f"密码:{'*' * len(password)}") # 显示*号代替密码7. 常见问题
7.1 输入后按回车没有反应
检查是否在等待更多的输入,可能是程序逻辑问题。
7.2 中文输入乱码
确保文件使用UTF-8编码保存,并在Python文件开头添加:
# -*- coding: utf-8 -*-7.3 输入包含空格
# 正确方式:整个输入作为一个字符串
text = input("请输入一句话:")
print(f"你输入了:{text}")
# 示例输入:你好 世界
# 输出:你输入了:你好 世界8. 本集总结
本集我们学习了:
input()函数的基本用法- 输入类型转换(int()、float()、str())
print()函数的高级参数(sep、end)- 字符串格式化(f-string、format())
- 输入验证和错误处理
- 多个实用示例程序
核心要点:
input()总是返回字符串,需要数字时必须转换- 使用f-string是推荐的格式化方式
sep参数控制输出分隔符,end参数控制输出结束符- 输入验证很重要,可以防止程序错误
- 使用
try-except处理输入错误
下一集预告:我们将学习注释与代码规范,了解如何编写清晰、规范的代码。
9. 课后练习
- 编写程序,输入圆的半径,输出周长和面积
- 编写程序,输入三角形的底和高,输出面积
- 编写程序,输入学生的语文、数学、英语成绩,计算总分和平均分
- 编写程序,输入三个数字,输出最大值和最小值
- 编写带输入验证的年龄输入程序(1-120岁)
提示:输入输出是程序与用户交互的基础,多练习掌握各种输入输出技巧!