【问题标题】:How do I exit out of an entire program through a function?如何通过函数退出整个程序?
【发布时间】:2020-07-14 09:57:32
【问题描述】:

我是 python 的菜鸟,我想做一个“数字招牌”。我现在只有“A”和“B”。 我不知道如何使用 sys.exit() 完全退出程序。我猜它只是退出函数,然后继续到下一行代码询问下一个字母。我希望它在输入“结束”后完全退出程序,但在退出之前仍然显示字母。

import time, sys

def getLetter(letter):
    while True:
        if letter =='A'or letter=='a':
            print('<A>')
            return
            break
    
        elif letter =='B'or letter=='b':
            print('<B>')
            return
            break
        elif letter == 'space':
            print('')
            time.sleep(0.1)
            print('')
            time.sleep(0.1)
            print('')
            time.sleep(0.1)
            print('')
            time.sleep(0.1)
            print('')
            time.sleep(0.1)
            print('')
            time.sleep(0.1)
            print('')
            time.sleep(0.1)
        elif letter == 'end':
            sys.exit('Signboard Terminated')

#instructions
print('Welcome to  virtual signboard\n')
time.sleep(0.5)
print('Instructions:')
time.sleep(0.5)
print('Enter each character individually (max: 10 characters).')
time.sleep(0.5)
print('To enter a space, type "space"')
time.sleep(0.5)
print('To finish, type "end"')

print('Enter first character:')
firstLetter=input()
time.sleep(0.2)
print('\nEnter second character:')
secondLetter=input()
time.sleep(0.2)
print('\nEnter third character:')
thirdLetter=input()
time.sleep(0.2)

#getting output
output=getLetter(firstLetter)
output=getLetter(secondLetter)
output=getLetter(thirdLetter)

所以理想情况下会发生这种情况: 输入第一个字符: 一个

输入第二个字符: 结束

整个程序会停在那里而不要求第二个和第三个字符,但只显示 A

【问题讨论】:

  • 当你输入a,然后b,然后exit时,它会正确退出。是的,sys.exit 的目的就是终止整个程序。
  • 谢谢您的回复。我想知道,例如,我输入 A 并立即想退出而不必输入下一个字母,我该如何解决?

标签: python loops if-statement while-loop


【解决方案1】:

sys.exit 确实用于终止整个程序。在您的情况下,程序的流程可能无效。请与下面的代码进行比较,然后决定您的应用程序应适用于哪个工作流程。

import sys

def getLetter(letter):
    if letter =='A'or letter=='a':
        print('<A>')
    elif letter =='B'or letter=='b':
        print('<B>')
    elif letter == 'space':
        print('<space>')
    elif letter == 'end':
        sys.exit('Signboard Terminated')
    else:
        print("<Other number>")

#instructions
print('Welcome to  virtual signboard\n')
print('Instructions:')
print('Enter each character individually (max: 10 characters).')
print('To enter a space, type "space"')
print('To finish, type "end"')

while True:
    print('Enter character:')
    character = input()
    #getting output
    getLetter(character)

【讨论】:

【解决方案2】:

首先,不需要为了退出程序而导入sys。使用exit('Signboard Terminated') 以消息Signboard Terminated 终止。如果我是正确的,代码似乎很好,因为您首先输入字符,然后将其传递给函数以打印招牌。如果您需要在用户输入end 时结束程序,您必须检查每个用户的输入,如果他在调用getLetter() 函数之前输入了单词end

def exitFun(letter):
    if letter.lower() == "end":
        exit('terminated')

print('Enter first character:')
firstLetter=input()
exitFun(firstLetter)
time.sleep(0.2)
print('\nEnter second character:')
secondLetter=input()
exitFun(secondLetter)
time.sleep(0.2)

【讨论】:

  • 感谢您的回复!是的,所以用户先输入所有内容,然后再打印招牌。我试过你的代码,它可以完全结束程序,但它没有显示“结束”之前的前面的字符。
猜你喜欢
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 2023-03-28
相关资源
最近更新 更多