如何根据用户输入重新启动程序?

2025-02-18 09:24:00
admin
原创
30
摘要:问题描述:我正在尝试根据用户输入使用 if 测试重新启动程序。该代码不起作用,但它大致就是我想要的:answer = raw_input('Run again? (y/n): ') if answer == 'n': print 'Goodbye' break elif answer == 'y...

问题描述:

我正在尝试根据用户输入使用 if 测试重新启动程序。

该代码不起作用,但它大致就是我想要的:

answer = raw_input('Run again? (y/n): ')

if answer == 'n':
   print 'Goodbye'
   break
elif answer == 'y':
   #restart_program???
else:
   print 'Invalid input.'

我想要做的是:

  • 如果你回答 y - 程序将从顶部重新启动

  • 如果你回答 n - 程序结束(该部分有效)

  • 如果您输入其他任何内容,它应该打印“无效输入。请输入 y 或 n...”或其他内容,并再次要求您输入新的内容。

我非常接近使用“while true”循环的解决方案,但程序要么重新启动,无论您按什么键(n 除外),要么退出,无论您按什么键(y 除外)。有什么想法吗?


解决方案 1:

此行将无条件地从头重新启动正在运行的程序:

os.execl(sys.executable, sys.executable, *sys.argv)

与迄今为止的其他建议相比,它的一个优点是程序本身将被再次读取。

例如,如果您在另一个窗口中修改其代码,这将很有用。

解决方案 2:

使用 while 循环:

while True:  # Re-run program
    # main program
    ...

    while True:  # Validate user input
        answer = input('Run again? (y/n): ')
        if answer in ('y', 'n'):
            break
        print("invalid input.")

    if answer == 'y':
        continue
    else:
        print("Goodbye")
        break

内部 while 循环一直循环,直到输入为'y''n'

如果输入是'y',则外部 while 循环再次开始(continue关键字跳过剩余代码并直接进入下一次迭代)。如果输入是'n',则外部 while 循环中断并且程序结束。

注意:我input()在 Python 3 中使用。在 Python 2 中,使用raw_input()

解决方案 3:

使用一个 while 循环:

In [1]: start = 1
   ...: 
   ...: while True:
   ...:     if start != 1:        
   ...:         do_run = raw_input('Restart?  y/n:')
   ...:         if do_run == 'y':
   ...:             pass
   ...:         elif do_run == 'n':
   ...:             break
   ...:         else: 
   ...:             print 'Invalid input'
   ...:             continue
   ...: 
   ...:     print 'Doing stuff!!!'
   ...: 
   ...:     if start == 1:
   ...:         start = 0
   ...:         
Doing stuff!!!

Restart?  y/n:y
Doing stuff!!!

Restart?  y/n:f
Invalid input

Restart?  y/n:n

In [2]:

解决方案 4:

你可以用一个函数简单地做到这一点。例如:

def script():
    # program code here...
    restart = raw_input("Would you like to restart this program?")
    if restart == "yes" or restart == "y":
        script()
    if restart == "n" or restart == "no":
        print "Script terminating. Goodbye."
script()

当然,您可以在这里更改很多内容。所说的内容、脚本将接受的有效输入、变量和函数名称。您可以简单地将整个程序嵌套在用户定义的函数中(当然,您必须为里面的所有内容添加额外的缩进),并让它随时使用以下代码行重新启动:myfunctionname()。有关更多信息,请点击此处。

解决方案 5:

这很容易做到

while True:

       #do something

       again = input("Run again? ")

       if 'yes' in again:
              continue
       else:
              print("Good Bye")
              break

基本上,在此 while 循环中,程序会一次又一次地运行,因为 while 循环在条件成立时运行,True因此我们已将条件设为真,并且如您所知,条件True始终为真,永远不会为假。因此,不会停止,然后主要部分首先出现在这里,我们将从用户那里获取输入,无论他们是否要继续该程序,然后我们会说,如果用户说是,我想继续,那么关键字continue将再次将循环带到顶部并再次运行程序,如果用户说了其他话,或者您可以用另一种方式执行此操作,如果您只想在用户说不时退出程序,那么只需添加此

elif 'no' in again:
       print("Good Bye")
       break
else:
       print("Invalid Input")

这将检查输入中是否存在“否”字,如果存在,则将中断循环并且程序将退出

解决方案 6:

这是一个使用装饰器实现的有趣方法:

def restartable(func):
    def wrapper(*args,**kwargs):
        answer = 'y'
        while answer == 'y':
            func(*args,**kwargs)
            while True:
                answer = raw_input('Restart?  y/n:')
                if answer in ('y','n'):
                    break
                else:
                    print "invalid answer"
    return wrapper

@restartable
def main():
    print "foo"

main()

最后,我认为你需要 2 个 while 循环。你需要一个循环将提示答案的部分括起来,这样如果用户输入错误,你可以再次提示。你需要第二个循环来检查当前答案是否为 ,'y'并继续运行代码,直到答案不是'y'

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1325  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。它涵盖了从产品概念产生到产品退市的整个生命周期,通过整合跨部门团队、优化流程等方式,显著提升产品开发的效率和质量,进而为项目的成功奠定坚实基础。深入探究IPD流程的五个阶段与项目成功之间...
IPD流程分为几个阶段   4  
  华为作为全球知名的科技企业,其成功背后的管理体系备受关注。IPD(集成产品开发)流程作为华为核心的产品开发管理模式,其中的创新管理与实践更是蕴含着丰富的经验和深刻的智慧,对众多企业具有重要的借鉴意义。IPD流程的核心架构IPD流程旨在打破部门墙,实现跨部门的高效协作,将产品开发视为一个整体的流程。它涵盖了从市场需求分析...
华为IPD是什么   3  
  IPD(Integrated Product Development)研发管理体系作为一种先进的产品开发模式,在众多企业的发展历程中发挥了至关重要的作用。它不仅仅是一套流程,更是一种理念,一种能够全方位提升企业竞争力,推动企业持续发展的有效工具。深入探究IPD研发管理体系如何助力企业持续发展,对于众多渴望在市场中立足并...
IPD管理流程   3  
  IPD(Integrated Product Development)流程管理旨在通过整合产品开发流程、团队和资源,实现产品的快速、高质量交付。在这一过程中,有效降低成本是企业提升竞争力的关键。通过优化IPD流程管理中的各个环节,可以在不牺牲产品质量和性能的前提下,实现成本的显著降低,为企业创造更大的价值。优化产品规划...
IPD流程分为几个阶段   4  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用