我无法理解编程流程

时间:2018-07-11 14:50:10

标签: python-3.x algorithm

我是编程新手,遇到的问题之一是结构化。我正在学习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函数,它实际上使我反向移动。我的问题是这是事情发展的方式还是有更好的做事方式。似乎反向编写代码效率低下,但是我不确定这是否只是我的经验不足。

1 个答案:

答案 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')