总结
豆包 AI 助手文章总结

Python沙漏图案打印代码调试:如何解决变量未定义错误?

碧海醫心
发布: 2025-03-13 17:42:02
原创
398人浏览过

python沙漏图案打印代码调试:如何解决变量未定义错误?

Python沙漏图案打印:调试与改进

本文分析并解决一个Python新手在打印沙漏图案代码中遇到的“变量未定义”错误。 新手代码意图通过is_integer_string函数验证输入是否为整数,再调用print_hourglass函数打印沙漏。然而,输入处理和变量定义存在问题,导致运行时报错NameError: name 'sym' is not defined。

错误根源在于输入处理逻辑缺陷:代码尝试将输入转换为整数,但未处理潜在异常,也未正确获取沙漏图案符号。

改进后的代码:

立即学习Python免费学习笔记(深入)”;

我们对代码进行了如下改进:

  1. 增强is_integer_string函数健壮性: 该函数现在不仅检查字符串是否仅包含数字,还考虑了负数的情况,避免了不必要的类型转换,只判断字符串格式是否符合整数要求。

  2. 重构输入处理: 代码接收整数输入n,使用is_integer_string验证。若有效,则提示用户输入沙漏符号sym,再调用print_hourglass;若无效,则打印错误信息。

  3. 完善错误处理: 使用try-except块捕获ValueError异常,处理非整数输入。

修改后的代码如下:

def is_integer_string(s):
    """检查字符串是否表示整数 (包括负数)"""
    if not s.isdigit() and (s[0] != '-' or not s[1:].isdigit()):
        return False
    return True

def print_hourglass(n, sym):
    """打印沙漏图案"""
    i = 1
    while n >= i * i:
        print(' ' * (i - 1) + sym * (i * 2 -1)) #修正:减少一个sym,使图案对称
        print(' ' * (i - 1) + sym * ((i + 1) * 2 -1)) #修正:减少一个sym,使图案对称
        i += 2
    while i > 0:
        print(' ' * (i - 1) + sym * (i * 2 -1)) #修正:减少一个sym,使图案对称
        i -= 2

try:
    n_str = input("请输入沙漏层数(整数): ")
    if is_integer_string(n_str):
        n = int(n_str)
        sym = input("请输入沙漏符号: ")
        print_hourglass(n, sym)
    else:
        print("无效输入:请输入整数")
except ValueError:
    print("无效输入:请输入整数")
登录后复制

通过这些改进,代码能够正确处理输入,避免sym变量未定义错误,成功打印沙漏图案。 同时,也修正了原代码中沙漏图案不对称的问题。

以上就是Python沙漏图案打印代码调试:如何解决变量未定义错误?的详细内容,更多请关注php中文网其它相关文章!

全能打印神器
全能打印神器

全能打印神器是一款非常好用的打印软件,可以在电脑、手机、平板电脑等设备上使用。支持无线打印和云打印,操作非常简单,使用起来也非常方便,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号