我是编程新手,遇到的问题之一是结构化。我正在学习Python(3),并通过编写一些实用程序进行练习。我遇到的一个问题是如何获得正确的程序流。我发现当我编写一个函数时,我意识到我需要它来导致另一个函数,因此我最终在正在编写的函数末尾调用下一个函数。然后我意识到Python将逐行读取代码,因此我必须拥有要在正在积极编写的代码之上调用的函数。结果是我最终反向编写了程序。例如:
#Replaces letters in chosen word with X's
def display_word():
selected_word = list(selected_word)
for x in selected_word:
x = "X"
print (x)
#Function that will display the welcome message when program launches
def start_screen():
user_input = input("Hello and welcome to Hang Man! If you would like to
start a game, please enter 'YES' now!")
user_input = user_input.upper()
if user_input == "YES":
display_word()
else:
print ("You're no fun!")
start_screen()
这是我在正在练习的practicing子手程序中写的一些小知识。我开始编写start_screen函数,然后意识到我将需要在start_screen函数中调用display_word函数,但是要做到这一点,我必须在调用函数之前对其进行定义,因此我必须在上面编写display_word函数start_screen函数,它实际上使我反向移动。我的问题是这是事情发展的方式还是有更好的做事方式。似乎反向编写代码效率低下,但是我不确定这是否只是我的经验不足。
答案 0 :(得分:3)
在使用Python之前,必须先定义所有函数。这并不意味着该函数必须在调用它的函数之上列出。
可以按任何顺序定义功能。您只需要确保启动程序的可执行部分(例如start_screen()
)在定义了函数的下方内即可。
对于hangman程序,您完全可以安全地切换两个功能的顺序。
通常,如果在所有函数定义之后都包含所有可执行代码,那么最好按选择的顺序来执行它们!
示例:
完全可以。您甚至可以切换它们!
def fn1():
print('I am function 1')
fn2()
def fn2():
print ('I am function 2')
fn1()
这很糟糕!
fn1() #not defined yet!
def fn1():
print('I am function 1')
def fn2():
print ('I am function 2')
这也很糟糕!
def fn1():
print('I am function 1')
fn2() #not defined yet!
fn1()
def fn2():
print ('I am function 2')