簡體   English   中英

回到代碼開頭

[英]Going back to beginning of the code

我想制作以選擇模式開始的程序。 然后它應該保持在該模式下,直到我給出命令返回到模式選擇為止。 像那樣:

input=raw_input('Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n')

if input=='1':
   while True:
      #code

if input=='2':
   while True:
      #code

if input=='3':
   while True:
      #code

使其通過某些命令返回模式選擇的最佳和最短的方法是什么?

謝謝

while True循環中使用break退出(內部):

while True:
    input=raw_input('Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n')

    if input=='1'
       while True:
          #code
          if something_happens:
              break

    elif input=='2':
       while True:
           #code

    elif input=='3':
       while True:
           #code

有關break更多信息,請參見此處的官方文檔。

如何將模式選擇置於其自己的函數中,然后您可以隨時調用該函數?

def get_mode():
    input=raw_input('Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n')
    return input

如注釋中所述,您應該避免使用內置變量名(如input

一種更正確的方法是通過字典來選擇函數,並通過異常來處理意外的輸入。 全部嵌套在main中的while循環中。

我寫了一個簡短的示例,基於此: python-在字典切換語句中模擬“ else”

import sys

def mode1( arg = None ):
  return 'Mode1 completed'

def mode2( arg = None ):
  return 'Mode2 completed'

def mode3( arg = None ):
  return 'Mode3 completed'

def modeQuit ( arg = None ):
  sys.exit(0)

def main():
  menuText = "Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n"

  # Function dictionary
  mode_function = {
      '1' : mode1,
      '2' : mode2,
      '3' : mode3,
      'q' : modeQuit
      }

  data=None

  print mode_function

  while True:
    mode_selection = raw_input(menuText).strip()
    try:
      print mode_function[mode_selection](data)
    except KeyError:
      print 'Not a valid mode'

  return 0

if __name__ == '__main__':
  main();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM