Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 我很难理解编程的流程_Python 3.x_Algorithm - Fatal编程技术网

Python 3.x 我很难理解编程的流程

Python 3.x 我很难理解编程的流程,python-3.x,algorithm,Python 3.x,Algorithm,我是编程新手,我遇到的问题之一是结构化。我正在学习Python(3),并通过制作一些实用程序进行练习。我遇到的一个问题是如何获得正确的程序流。我发现当我编写一个函数时,我意识到我需要它来引导另一个函数,所以我在编写的函数末尾调用下一个函数。然后我意识到Python将逐行读取代码,因此我必须在我正在编写的函数之上调用我要调用的函数。结果是我最终以相反的方式编写了程序。例如: #Replaces letters in chosen word with X's def display_word():

我是编程新手,我遇到的问题之一是结构化。我正在学习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()

这是我在一个hang-man程序中写的一点小技巧,我正在练习。我开始编写start_screen函数,然后意识到我需要在start_screen函数中调用display_word函数,但要做到这一点,我必须在调用函数之前定义该函数,因此我必须在start_screen函数上方编写display_word函数,这实际上使我反向移动。我的问题是,这是事情的发展方向,还是有更好的方式去做事情。用相反的方式编写代码似乎效率很低,但我不确定这是否只是我的经验不足。

Python中的所有函数在使用之前都必须定义。这并不意味着函数必须列在调用它的函数之上

这些函数可以按任何顺序定义。您只需确保启动程序的可执行部分(如
start\u 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')

虽然按相反顺序编写函数被认为是一种良好的编程实践,但在Python中它并没有真正的区别,只要当您使用一个名称时,该名称已经被定义,例如,交换
display\u word()
start\u screen()
位置没有任何区别,但在定义之前不允许调用
start\u screen()