苦练Python第38天:input() 高级处理,安全与异常管理

前言

大家好,我是倔强青铜三 。欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

欢迎来到 Python 百日冲刺第 38 天

今天,我们把平平无奇的 input() 玩出花:类型转换、异常兜底、循环校验、批量读取、布尔识别、JSON 直传、默认值回退,一站式教你写出"用户永远输不错"的交互脚本。


🧠 input() 的本质

python 复制代码
name = input("Enter your name: ")
print(f"Hello, {name}!")

记住:返回值永远是字符串。任何数字、列表、布尔都得自己洗。


🔢 数字输入:强制转换 + 异常处理

python 复制代码
try:
    age = int(input("Enter your age: "))
    print(f"You will be {age + 1} next year.")
except ValueError:
    print("That's not a valid number!")

🔄 循环到对为止

python 复制代码
while True:
    user_input = input("Enter a number: ")
    try:
        number = float(user_input)
        break
    except ValueError:
        print("Please enter a valid number!")

📦 批量输入:一行搞定

python 复制代码
# 读取 name 与 age
data = input("Enter name and age (e.g., John 25): ")
name, age_str = data.split()
age = int(age_str)
print(f"Name: {name}, Age: {age}")

# 读取任意数量整数
nums = input("Enter numbers separated by space: ")
numbers = [int(x) for x in nums.split()]
print(numbers)

✅ 布尔输入:Yes/No 识别器

python 复制代码
ans = input("Do you agree? (yes/no): ").strip().lower()
if ans in {"yes", "y"}:
    print("Agreed!")
elif ans in {"no", "n"}:
    print("Not agreed.")
else:
    print("Invalid response.")

🛠️ 封装成万能工具函数

python 复制代码
def get_int(prompt):
    """循环直到拿到合法整数"""
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("Please enter a valid integer.")

age = get_int("Enter your age: ")
print(age)

📄 JSON 直传:让高级用户直接贴配置

python 复制代码
import json

raw = input("Paste JSON here: ")
try:
    obj = json.loads(raw)
    print("Parsed:", obj)
except json.JSONDecodeError:
    print("Invalid JSON")

🔧 带默认值的优雅输入

Python 没有原生默认值,但可以模拟:

python 复制代码
def input_with_default(prompt, default="yes"):
    user_input = input(f"{prompt} [{default}]: ").strip()
    return user_input if user_input else default

response = input_with_default("Continue?")
print(response)

🧾 速查表

需求 示例代码片段
基础文本 input("Name: ")
整数 int(input(...))
浮点 float(input(...))
防错循环 while True: try ...
多值空格分割 input().split()
列表解析 [int(x) for x in input().split()]
布尔 input().strip().lower() in {"yes","y"}
JSON json.loads(input())
默认值 input() or default

✅ 一句话总结

input() 天生返回字符串,用好 try-except + 循环 + 封装函数,就能让用户怎么输都对!

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

相关推荐
小刘摸鱼中2 分钟前
OpenCV 库函数
人工智能·opencv·计算机视觉
IT_陈寒2 分钟前
Redis 高性能缓存设计:7个核心优化策略让你的QPS提升300%
前端·人工智能·后端
Python×CATIA工业智造9 分钟前
Python回调函数中携带额外状态的完整指南:从基础到高级实践
python·pycharm
害恶细君12 分钟前
【超详细】使用conda配置python的开发环境
开发语言·python·jupyter·pycharm·conda·ipython
java1234_小锋16 分钟前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 变量(Variable)的定义与操作
python·深度学习·tensorflow·tensorflow2
文火冰糖的硅基工坊24 分钟前
《投资-78》价值投资者的认知升级与交易规则重构 - 架构
大数据·人工智能·重构
爱写代码的小朋友29 分钟前
生成式人工智能对学习生态的重构:从“辅助工具”到“依赖风险”的平衡难题
人工智能·学习·重构
唤醒手腕1 小时前
唤醒手腕2025年最新机器学习K近邻算法详细教程
人工智能·机器学习·近邻算法
却道天凉_好个秋1 小时前
深度学习(十七):全批量梯度下降 (BGD)、随机梯度下降 (SGD) 和小批量梯度下降 (MBGD)
人工智能·深度学习·梯度下降
我星期八休息1 小时前
C++异常处理全面解析:从基础到应用
java·开发语言·c++·人工智能·python·架构