首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有两个输入的中空方函数?

有两个输入的中空方函数?
EN

Stack Overflow用户
提问于 2018-08-20 02:19:50
回答 2查看 438关注 0票数 0

我一直在努力创建一个函数,它可以输出5x5的默认空心正方形,但也可以接受2个输入。

下面是问题:创建一个charsqr.py函数,该函数在导入时将产生以下结果:

程序:

代码语言:javascript
复制
def main():
    charsqr()
    charsqr(4)
    charsqr(3,'#')
main()

结果:

代码语言:javascript
复制
*****
*   *
*   *
*   *
*****
****
*  *
*  *
****
###
# #
###

下面是我的代码:

代码语言:javascript
复制
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”的正方形。

感谢您的反馈!:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-20 02:34:05

你这样做太复杂了,一个简单的:

代码语言:javascript
复制
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

应该能行得通。您甚至可以将“空心”部分更改为某个字符。

票数 0
EN

Stack Overflow用户

发布于 2018-08-20 02:29:08

您显然想要一个函数,如果没有指定字符,则使用星号,如果没有指定大小,则使用大小5。这就是Python中的默认参数:

代码语言:javascript
复制
def charsqr(chars=5, sym='*'):

那么调用charsqr()与调用charsqr(5, '*')相同,调用charsqr(4)与调用charsqr(4, '*')相同。调用charsqr(3, '#')不使用默认值。

请注意,您显示的代码具有错误的缩进,并且会给出一个语法错误。缩进您的函数行(除了def行之外的所有行)。还要将if行中的=符号替换为==。有了这三个更改,您的代码就可以正常工作并提供所需的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51920571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档