Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

Tôi đang cố gắng khởi động lại một chương trình bằng cách sử dụng bài kiểm tra if dựa trên đầu vào từ người dùng.

Mã này không hoạt động, nhưng đó là khoảng những gì tôi sau:

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

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

Những gì tôi đang cố gắng làm là:

  • Nếu bạn trả lời Y - chương trình sẽ khởi động lại từ đầu
  • Nếu bạn trả lời n - chương trình kết thúc (phần đó hoạt động)
  • Nếu bạn nhập bất cứ thứ gì khác, nó sẽ in 'đầu vào không hợp lệ. Vui lòng nhập y hoặc n ... 'hoặc một cái gì đó, và hỏi bạn lại đầu vào mới.

Tôi đã thực sự gần với một giải pháp với vòng lặp "trong khi thật", nhưng chương trình chỉ cần khởi động lại bất kể bạn nhấn (ngoại trừ n), hoặc nó thoát khỏi bất kể bạn nhấn gì (ngoại trừ y). Bất kỳ ý tưởng?

Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

Đã hỏi ngày 16 tháng 2 năm 2013 lúc 4:47Feb 16, 2013 at 4:47

MagnusingemannmagnusingemannMagnusIngemann

1831 Huy hiệu vàng2 Huy hiệu bạc 6 Huy hiệu Đồng1 gold badge2 silver badges6 bronze badges

Dòng này sẽ khởi động lại một cách vô điều kiện chương trình đang chạy từ đầu:

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

Một trong những lợi thế của nó so với các đề xuất còn lại cho đến nay là chính chương trình sẽ được đọc lại.

Điều này có thể hữu ích nếu, ví dụ, bạn đang sửa đổi mã của nó trong một cửa sổ khác.

Đã trả lời ngày 14 tháng 5 năm 2015 lúc 20:57May 14, 2015 at 20:57

Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

9

Thử cái này:

while True:
    # main program
    while True:
        answer = str(input('Run again? (y/n): '))
        if answer in ('y', 'n'):
            break
        print("invalid input.")
    if answer == 'y':
        continue
    else:
        print("Goodbye")
        break

Các vòng lặp bên trong trong khi các vòng lặp cho đến khi đầu vào là 'y' hoặc 'n'. Nếu đầu vào là 'y', vòng lặp trong khi bắt đầu lại (từ khóa

os.execl(sys.executable, sys.executable, *sys.argv)
1 bỏ qua mã còn lại và đi thẳng đến lần lặp tiếp theo). Nếu đầu vào là 'n', chương trình kết thúc.

Đã trả lời ngày 16 tháng 2 năm 2013 lúc 4:54Feb 16, 2013 at 4:54

Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

Biến độngVolatility

30.2k10 Huy hiệu vàng79 Huy hiệu bạc88 Huy hiệu Đồng10 gold badges79 silver badges88 bronze badges

0

Sử dụng một trong khi vòng lặp:

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]:

Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

Jason

331 Huy hiệu vàng3 Huy hiệu bạc13 Huy hiệu đồng1 gold badge3 silver badges13 bronze badges

Đã trả lời ngày 16 tháng 2 năm 2013 lúc 5:11Feb 16, 2013 at 5:11

Regrootroot

73.1K25 Huy hiệu vàng105 Huy hiệu bạc119 Huy hiệu đồng25 gold badges105 silver badges119 bronze badges

3

Bạn có thể làm điều này đơn giản với một chức năng. Ví dụ:

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()

Tất nhiên bạn có thể thay đổi rất nhiều thứ ở đây. Những gì được nói, tập lệnh sẽ chấp nhận như một đầu vào hợp lệ, các tên biến và chức năng. Bạn có thể chỉ cần tổ toàn bộ chương trình trong chức năng do người dùng xác định (tất nhiên bạn phải cung cấp mọi thứ bên trong một thụt lề thêm) và bắt đầu khởi động lại bất cứ lúc nào bằng cách sử dụng dòng mã này:

os.execl(sys.executable, sys.executable, *sys.argv)
3. Thêm về điều này ở đây.

retnikt

5766 Huy hiệu bạc18 Huy hiệu Đồng6 silver badges18 bronze badges

Đã trả lời ngày 10 tháng 6 năm 2015 lúc 15:34Jun 10, 2015 at 15:34

Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

Đó là Willemit's WillemIt's Willem

4963 Huy hiệu vàng5 Huy hiệu bạc14 Huy hiệu đồng3 gold badges5 silver badges14 bronze badges

1

Đây là một cách thú vị để làm điều đó với một người trang trí:

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()

Cuối cùng, tôi nghĩ rằng bạn cần 2 vòng trong khi. Bạn cần một vòng lặp khung phần mà nhắc câu trả lời để bạn có thể nhắc lại nếu người dùng đưa ra đầu vào xấu. Bạn cần một giây sẽ kiểm tra xem câu trả lời hiện tại là 'y' và tiếp tục chạy mã cho đến khi câu trả lời không phải là 'y'.

Đã trả lời ngày 16 tháng 2 năm 2013 lúc 4:54Feb 16, 2013 at 4:54

Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

Biến độngmgilson

30.2k10 Huy hiệu vàng79 Huy hiệu bạc88 Huy hiệu Đồng63 gold badges610 silver badges677 bronze badges

Sử dụng một trong khi vòng lặp:

while True:

       #do something

       again = input("Run again? ")

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

Jason

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

331 Huy hiệu vàng3 Huy hiệu bạc13 Huy hiệu đồng

Đã trả lời ngày 16 tháng 2 năm 2013 lúc 5:11Apr 15, 2021 at 6:22

Hướng dẫn is there a restart command in python? - có lệnh khởi động lại trong python không?

RegrootPrabhavDevo

73.1K25 Huy hiệu vàng105 Huy hiệu bạc119 Huy hiệu đồng6 silver badges22 bronze badges

1