第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}")  # 居中对齐,宽度10

2.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 awesome

3.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())
  • 输入验证和错误处理
  • 多个实用示例程序

核心要点

  1. input()总是返回字符串,需要数字时必须转换
  2. 使用f-string是推荐的格式化方式
  3. sep参数控制输出分隔符,end参数控制输出结束符
  4. 输入验证很重要,可以防止程序错误
  5. 使用try-except处理输入错误

下一集预告:我们将学习注释与代码规范,了解如何编写清晰、规范的代码。

9. 课后练习

  1. 编写程序,输入圆的半径,输出周长和面积
  2. 编写程序,输入三角形的底和高,输出面积
  3. 编写程序,输入学生的语文、数学、英语成绩,计算总分和平均分
  4. 编写程序,输入三个数字,输出最大值和最小值
  5. 编写带输入验证的年龄输入程序(1-120岁)

提示:输入输出是程序与用户交互的基础,多练习掌握各种输入输出技巧!

« 上一篇 变量与数据类型基础 下一篇 » 注释与代码规范