我在编写平方函数时遇到Python问题

时间:2019-02-08 22:46:52

标签: python python-3.x

def Quadrato():
    primariga = print("+", " - "*4, "+", " - "*4, "+")
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    primariga = print("+", " - "*4, "+", " - "*4, "+")
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    secondariga = print("|", " "*12, "|", " "*12, "|" )
    primariga = print("+", " - "*4, "+", " - "*4, "+")


Quadrato()

# UNA MANIERA SINTATTICAMENTE PIù ORDINATA SI HA QUANDO:
def quattrovolte(f):
    f()
    f()
    f()
    f()


def Quadrato_1():
    primariga = print("+", " - "*4, "+", " - "*4, "+")
    secondariga = print("|", " "*12, "|", " "*12, "|")
    print(primariga)
    quattrovolte(secondariga)
    print(primariga)
    quattrovolte(secondariga)
    print(primariga)

Quadrato_1()

我想做的是尝试以更好和更简单的方式在第一个函数中绘制正方形。相反,我收到一条错误消息:“ NoneType”对象不可调用。有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

问题在于您要将print语句传递给print语句。但是,print仅返回None(除了在屏幕上打印内容外)。

解决此问题的一种方法是将primarigasecondariga定义为字符串:

def Quadrato_1():
    primariga = "+" + " - "*4 + "+" + " - "*4 + "+"
    secondariga = "|" + " "*12 + "|" + " "*12 + "|"
    print(primariga)
    for i in range(4):
        print(secondariga)
    print(primariga)
    for i in range(4):
        print(secondariga)
    print(primariga)

Quadrato_1()

返回此:

+ -  -  -  - + -  -  -  - +
|            |            |
|            |            |
|            |            |
|            |            |
+ -  -  -  - + -  -  -  - +
|            |            |
|            |            |
|            |            |
|            |            |
+ -  -  -  - + -  -  -  - +

我还添加了两个for循环,作为将secondariga重复四次的更好方法。

答案 1 :(得分:0)

在这种情况下,您尝试使用print()函数定义变量。 print()在运行时不会返回任何内容,因此将其设置为变量将导致它成为无内容的指针,因为从未创建任何对象。

这是您应该做的:

def square():
    #setting these to a tuple and not a function.
    p = ("+", " - "*4, "+", " - "*4, "+") 
    q = ("|", " "*12, "|", " "*12, "|" )
    order = (p,q,q,q,q,p,q,q,q,q,p)
    for i in order:
        print('',join(i))

square() #if all goes well, this will print a square into the terminal. ::))