我一直在努力创建一个函数,它可以输出5x5的默认空心正方形,但也可以接受2个输入。
下面是问题:创建一个charsqr.py函数,该函数在导入时将产生以下结果:
程序:
def main():
charsqr()
charsqr(4)
charsqr(3,'#')
main()结果:
*****
* *
* *
* *
*****
****
* *
* *
****
###
# #
###下面是我的代码:
def charsqr(chars,sym):
if type(chars) = int and type(sym)=str:
print(str(sym)*chars)
for i in range(chars-2):
print(str(sym)+" "*(chars-2)+str(sym))
print(str(sym)*chars)
else:
print("*"*5)
for i in range(5):
print("*"+" "*3+"*")
print("*"*5) 我一直在摆弄if语句,因为我得到了“丢失2个位置参数”错误。我知道如何创建一个中空的正方形,只是不确定如何让程序打印默认的正方形,然后在不需要"sym“的情况下打印带有给定"chars”的正方形。
感谢您的反馈!:)
发布于 2018-08-20 02:34:05
你这样做太复杂了,一个简单的:
def draw_square(size=5, edge="*", fill=" "):
hollow = size - 2 # just so we don't calculate the hollow part each time
print(edge * size) # top part
for _ in range(hollow): # iterate until the last line
print(edge + fill * hollow + edge) # middle part
print(edge * size) # bottom part应该能行得通。您甚至可以将“空心”部分更改为某个字符。
发布于 2018-08-20 02:29:08
您显然想要一个函数,如果没有指定字符,则使用星号,如果没有指定大小,则使用大小5。这就是Python中的默认参数:
def charsqr(chars=5, sym='*'):那么调用charsqr()与调用charsqr(5, '*')相同,调用charsqr(4)与调用charsqr(4, '*')相同。调用charsqr(3, '#')不使用默认值。
请注意,您显示的代码具有错误的缩进,并且会给出一个语法错误。缩进您的函数行(除了def行之外的所有行)。还要将if行中的=符号替换为==。有了这三个更改,您的代码就可以正常工作并提供所需的输出。
https://stackoverflow.com/questions/51920571
复制相似问题