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

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

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

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

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

改进后的代码:

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

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

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

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

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

修改后的代码如下:

def is_integer_string(s):    """检查字符串是否表示整数 (包括负数)"""    if not s.isdigit() and (s[0] != '-' or not s[1:].isdigit()):        return False    return Truedef 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 -= 2try:    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沙漏图案打印代码调试:如何解决变量未定义错误?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1359210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 22:31:45
下一篇 2025年12月13日 22:31:57

相关推荐

发表回复

登录后才能评论
关注微信