为什么我的break会调用之前的函数
Why does my break call the previous function
我有两个函数,第一个调用第二个。但是,当我跳出第二个函数时,它会显示来自第一个函数中的 if 语句的文本。我不明白的是,为什么第二个函数调用第一个函数?其次,我不明白为什么它会从从未满足条件的 if 语句中执行代码。
#! /usr/bin/env python
'''A sorting app where the user gets to choose
between options and the options are ranked by
likes in a file stored on a file'''
import sys
import random
import pickle
def intro():
greeting = '''\nWelcome to chooser where your voice gets to be heard
Press Enter to begin greatness
Press anything else to be immediately banned
>>'''
enter = raw_input(greeting).lower()
if enter == '':
main()
if enter == 'admin':
print 'Entering Admin menu\n'
admin()
else:
print '''\nDid you think I was kidding?!
You're gone!\n'''
sys.exit()
# Enters the main program if the user presses Enter or else it quits
def main():
count = 0
while True:
nav = '''Type Go to play
Type Q to quit
Type admin to go to admin
>>'''
start = raw_input(nav).lower()
if start == 'q':
print '\nThank you for playing\nBye!\n'
break
else:
print 'Any other key restarts the function'
def chooser():
pass
if __name__ == '__main__':
intro()
''' -----Questions-----
Why does this function when it expires run the intro function instead of just
running out of scope????'''
这是终端输出的内容:
基本上在部分:
if enter == '':
main()
if enter == 'admin':
print 'Entering Admin menu\n'
admin()
else:
print '''\nDid you think I was kidding?!
您有两个单独的语句,一个 'if' 和一个 'if-else' 紧随其后。
第一个检查输入是否为 '',此条件在您的示例中成立,因此调用 main() 并且一切正常。
当 main() returns 时,退出第一个语句并进入第二个语句,它检查输入是否为 admin(这是 false),如果不是,则进行打印。
这里的逻辑是:
- 如果输入是 '',运行 main()。
- 如果输入是 'admin',运行 admin()。
- 如果输入不是 'admin',打印消息。
else 部分与第一个 if 完全无关(仅与第二个)。您需要做的是将第二个 'if' 替换为 'elif',从而生成单个 'if-elif-else' 语句,因此逻辑将是:
- 如果输入是 '',运行 main()。
- if enter 不是 '', enter 是 'admin', 运行 admin().
- 如果输入不是 '',也不是 'admin',则打印消息。
我有两个函数,第一个调用第二个。但是,当我跳出第二个函数时,它会显示来自第一个函数中的 if 语句的文本。我不明白的是,为什么第二个函数调用第一个函数?其次,我不明白为什么它会从从未满足条件的 if 语句中执行代码。
#! /usr/bin/env python
'''A sorting app where the user gets to choose
between options and the options are ranked by
likes in a file stored on a file'''
import sys
import random
import pickle
def intro():
greeting = '''\nWelcome to chooser where your voice gets to be heard
Press Enter to begin greatness
Press anything else to be immediately banned
>>'''
enter = raw_input(greeting).lower()
if enter == '':
main()
if enter == 'admin':
print 'Entering Admin menu\n'
admin()
else:
print '''\nDid you think I was kidding?!
You're gone!\n'''
sys.exit()
# Enters the main program if the user presses Enter or else it quits
def main():
count = 0
while True:
nav = '''Type Go to play
Type Q to quit
Type admin to go to admin
>>'''
start = raw_input(nav).lower()
if start == 'q':
print '\nThank you for playing\nBye!\n'
break
else:
print 'Any other key restarts the function'
def chooser():
pass
if __name__ == '__main__':
intro()
''' -----Questions-----
Why does this function when it expires run the intro function instead of just
running out of scope????'''
这是终端输出的内容:
基本上在部分:
if enter == '':
main()
if enter == 'admin':
print 'Entering Admin menu\n'
admin()
else:
print '''\nDid you think I was kidding?!
您有两个单独的语句,一个 'if' 和一个 'if-else' 紧随其后。 第一个检查输入是否为 '',此条件在您的示例中成立,因此调用 main() 并且一切正常。 当 main() returns 时,退出第一个语句并进入第二个语句,它检查输入是否为 admin(这是 false),如果不是,则进行打印。
这里的逻辑是:
- 如果输入是 '',运行 main()。
- 如果输入是 'admin',运行 admin()。
- 如果输入不是 'admin',打印消息。
else 部分与第一个 if 完全无关(仅与第二个)。您需要做的是将第二个 'if' 替换为 'elif',从而生成单个 'if-elif-else' 语句,因此逻辑将是:
- 如果输入是 '',运行 main()。
- if enter 不是 '', enter 是 'admin', 运行 admin().
- 如果输入不是 '',也不是 'admin',则打印消息。