有大佬可以帮忙看看菜鸟python入门问题吗?

def is_integer_string(s):
    if not s.isdigit() and s[0]!='-':
        return False  
    return int(s)==s 
def print_hourglass(n,sym):
    i=1
    while n>=i**2:
        print(''*(i-1)+sym*i*2)
        print(''*(i-1)+sym*(i+1)*2)
        i+=2
    while i>0:
        print(''*(i-1)+sym*i*2)
        i-=2
    print(n-i**2)
n=is_integer_string(input())
try:
    n,sym=map(int,input().split())
except ValueError:
    print("请输入一个数字")
print(print_hourglass(n,sym))

这串代码后

Traceback (most recent call last):
  File "/tmp/a.py", line 20, in <module>
    print(print_hourglass(n,sym))
NameError: name 'sym' is not defined. Did you mean: 'sum'?

这个sym的变量我该怎么修改

阅读 938
2 个回答

没搞明白要干啥, 盲猜写法

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))
        print(' ' * (i - 1) + sym * ((i + 1) * 2))
        i += 2
    while i > 0:
        print(' ' * (i - 1) + sym * (i * 2))
        i -= 2

try:
    n = input()
    if is_integer_string(n):
        n = int(n)
        sym = input()
        print_hourglass(n, sym)
    else:
        print("请输入一个整数")
except ValueError:
    print("请输入一个整数")
新手上路,请多包涵

同萌新,我觉得是sym变量定义在try块里面,最后一行代码访问不到,变量需要定义在try块外面。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题