簡體   English   中英

如何調用def(main)中的def(dot)和def(dice)函數?

[英]How do I call the functions: def(dot) and def(dice) from def(main)?

我在從third(main)函數調用前兩個函數時遇到麻煩。 我相信我有正確的編碼(忽略大小和x,y坐標)來顯示di的五個面,但似乎無法弄清楚如何調用函數。

主要目的是展示di的五個面。

def dot(c,d):
 #draw each dot 
 circDot1 = Circle(Point(50, 50), 5).setFill('black')
 circDot1.draw(win)
 circDot3 = Circle(Point(50, 100), 5).setFill('black')
 circDot3.draw(win)
 circDot5 = Circle(Point(100, 50), 5).setFill('black')
 circDot5.draw(win)
 circDot7 = Circle(Point(100, 100), 5).setFill('black')
 circDot7.draw(win)
 circDot4 = Circle(Point(75, 75), 5).setFill('black')
 circDot4.draw(win)

def dice(a,b):

 #build the dice
 rectDice = Rectangle(Point(115, 115), Point(275,275))
 rectDice.setFill('pink')
 rectDice.setOutline('pink')
 rectDice.draw(win)


def main():
 # Create window, call dice function
 win = GraphWin("Dice", 400, 400)
 win.setBackground("cyan")
 dice("a","b")

有幾個問題:

您無需執行main()即可運行程序,但也許您不是僅在有問題的地方添加了此代碼。


win是局部變量,函數無法訪問它們。 您應該在錯誤消息中看到它為NameError: name 'win' is not definedrectDice.draw(win)rectDice.draw(win) NameError: name 'win' is not defined

Traceback (most recent call last):
  File "<pyshell#2>", line 30, in <module>
    main()
  File "<pyshell#2>", line 28, in main
    dice("a","b")
  File "<pyshell#2>", line 21, in dice
    rectDice.draw(win)
NameError: name 'win' is not defined

您可以添加win作為參數

def dice(win, a, b):
    #build the dice
    rectDice = Rectangle(Point(115, 115), Point(275,275))
    rectDice.setFill('pink')
    rectDice.setOutline('pink')
    rectDice.draw(win)

def main():
    # Create window, call dice function
    win = GraphWin("Dice", 400, 400)
    win.setBackground("cyan")
    dice(win, "a","b")

否則您必須將窗口分配給全局變量-在main()使用global

def dice(a, b):
    #build the dice
    rectDice = Rectangle(Point(115, 115), Point(275,275))
    rectDice.setFill('pink')
    rectDice.setOutline('pink')
    rectDice.draw(win)

def main():
    global win

    # Create window, call dice function
    win = GraphWin("Dice", 400, 400)
    win.setBackground("cyan")
    dice("a", "b")

同樣的問題在dot()


dot()您還有其他問題。 您必須在下一行中使用setFill()

circDot1 = Circle(Point(50, 50), 5)
circDot1.setFill('black')
circDot1.draw(win)

完整代碼:

from graphics import *

def dot(win, c, d):
    #draw each dot 
    circDot1 = Circle(Point(50, 50), 5)
    circDot1.setFill('black')
    circDot1.draw(win)

    circDot3 = Circle(Point(50, 100), 5)
    circDot3.setFill('black')
    circDot3.draw(win)

    circDot5 = Circle(Point(100, 50), 5)
    circDot5.setFill('black')
    circDot5.draw(win)

    circDot7 = Circle(Point(100, 100), 5)
    circDot7.setFill('black')
    circDot7.draw(win)

    circDot4 = Circle(Point(75, 75), 5)
    circDot4.setFill('black')
    circDot4.draw(win)

def dice(win, a, b):
    #build the dice
    rectDice = Rectangle(Point(115, 115), Point(275,275))
    rectDice.setFill('pink')
    rectDice.setOutline('pink')
    rectDice.draw(win)


def main():
    # Create window, call dice function
    win = GraphWin("Dice", 400, 400)
    win.setBackground("cyan")
    dice(win, "a", "b")
    dot(win, "c", "d")

main() 

我認為您的main()函數甚至都沒有被調用。

嘗試使用此:

def main():
 # Create window, call dice function
 win = GraphWin("Dice", 400, 400)
 win.setBackground("cyan")
 dice("a","b")

if __name__== "__main__":
 main()

參考: 此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM