我一直在努力创建一个函数,该函数可以放出默认的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个位置参数”错误。我知道如何创建空心正方形,只是不确定如何使程序先打印默认正方形,然后再打印具有给定“字符”的正方形,而无需“符号”。
任何反馈表示赞赏! :)
答案 0 :(得分:0)
您显然希望一个函数,如果未说明任何字符,则使用星号;如果未说明大小,则使用大小5。那就是Python中默认参数的含义:
def charsqr(chars=5, sym='*'):
然后,调用charsqr()
与charsqr(5, '*')
相同,调用charsqr(4)
与charsqr(4, '*')
相同。调用charsqr(3, '#')
不使用默认值。
请注意,您显示的代码缩进不正确,并且会出现语法错误。使函数的行缩进(除了def
行之外的所有行)。同样,将=
行中的if
符号替换为==
。经过这三个更改,您的代码可以工作并提供所需的输出。
答案 1 :(得分:0)
您将这种方式变得非常复杂,简单:
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
应该做到这一点。您甚至可以将“空心”部分更改为某些字符。