→ rc001968:我回去試了一下,開始有點頭緒了,謝謝你了!!!! 04/20 00:45
※ 引述《rc001968 (rc)》之銘言:
: 各位前輩大家好,
: 我的問題如下:
: 我寫了一個程式,假設是A走到B,B輸入某數值後再分成C或D
: C可能又因為某種輸入再分出其他不同狀況,以此類推
: 問題來了
: 但是我想要在任何時候(B中或C...)輸入某個特定數值,
: 就可以回到程式的起頭A,再執行第二次程式,
: (而不是每次都需重新開啟一次程式)
: 同樣的在執行第二次程式的時候,進入以下各種情況中,
: 我再輸入特定數值,就可以再重新回到程式開頭。
: 謝謝各位了,感恩!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.125.33
應該可以用例外處理的方式來做
首先定義一個 exception
class MyException(Exception):
def __init__(self, value):
self.value = value
在原本程式每一個輸入的地方加上判斷式
if 輸入 == <特定數值1>:
raise MyException("restart")
然後把整個程式用 while包起來
例如把你本來的程式整個寫成一個 main 函式
就可以寫成
while 1:
try:
main()
except MyException as e:
if e.value == "restart":
continue
這樣輸入遇到特定數值時程式就會從頭開始執行
或是當main函式執行完畢也會從頭再執行一次
如果希望執行到main的結尾時程式就停止的話就在main後面加一個break
while 1:
try:
main()
break
except MyException as e:
if e.value == "restart":
continue
如果希望執行到一半可以輸入另一個特定數值讓程式終止的話
就在每個輸入的地方再加上一個判斷
if <輸入> == <特定數值2>:
raise MyException("exit")
然後主程式變成
while 1:
try:
main()
break
except MyException as e:
if e.value == "restart":
continue
elif e.value == "exit":
break
就可以了