Python沙漏图形绘制:如何避免变量未定义错误?

python沙漏图形绘制:如何避免变量未定义错误?

Python入门:绘制沙漏图形并进行输入验证

本文将讲解如何修正一个Python新手在编写沙漏图形绘制程序时遇到的变量未定义错误。程序的目标是根据用户输入的整数n和字符sym,绘制一个由sym字符组成的沙漏图案。原始代码中存在NameError错误,提示sym变量未定义。让我们分析并解决这个问题。

原始代码主要包含两个函数:is_integer_string用于验证输入是否为整数,print_hourglass用于绘制沙漏图案。然而,在处理用户输入时出现问题,导致print_hourglass函数调用时sym变量未定义。

原始代码试图使用map(int, input().split())同时读取n和sym。这假设用户输入的是两个用空格分隔的整数。但实际上,sym应该是一个字符或字符串,而不是整数。因此,map(int, input().split())会抛出ValueError异常,并且sym没有正确赋值。

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

改进后的代码如下:

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)) # 修正公式,使沙漏更对称        print(' ' * (i - 1) + sym * ((i + 1) * 2 -1)) # 修正公式,使沙漏更对称        i += 2    while i > 0:        print(' ' * (i - 1) + sym * (i * 2 -1)) # 修正公式,使沙漏更对称        i -= 2try:    n_input = input("请输入整数n:")    if is_integer_string(n_input):        n = int(n_input)        sym = input("请输入字符sym:")        print_hourglass(n, sym)    else:        print("输入的n不是整数")except ValueError:    print("输入错误,请重新输入")except Exception as e:    print(f"发生错误: {e}")

改进后的代码首先修正了is_integer_string函数,使其能够正确处理负数。更重要的是,它将n和sym的输入分开处理。先读取n,验证其是否为整数,然后读取sym,避免了map函数造成的错误。这样,sym变量在print_hourglass函数调用前得到了正确的赋值,从而解决了NameError错误。代码还对输入进行了更健壮的错误处理,并增加了更友好的用户提示。 同时,也修正了print_hourglass函数中计算字符数量的公式,使沙漏图形更对称。 最后添加了一个更通用的except块来捕获其他可能的异常。

以上就是Python沙漏图形绘制:如何避免变量未定义错误?的详细内容,更多请关注创想鸟其它相关文章!

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

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
为什么 Python 3.12 移除了 datetime.utc 函数?如何在新版本中获取 UTC 时间?
上一篇 2025年12月13日 23:21:21
如何用Python的turtle库绘制一个由星号组成的正方形?
下一篇 2025年12月13日 23:21:31

相关推荐

发表回复

登录后才能评论
关注微信