Hướng dẫn how do i run a python program again and again? - làm cách nào để chạy đi chạy lại một chương trình python?

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ỏi ngày 16 tháng 2 năm 2013 lúc 4:47Feb 16, 2013 at 4:47

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

jlliagrejlliagrejlliagre

Phù bằng vàng 29k658 Huy hiệu bạc70 Huy hiệu đồng6 gold badges58 silver badges70 bronze badges

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

Biến độngVolatility

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

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

72.3K25 Huy hiệu vàng104 Huy hiệu bạc119 Huy hiệu đồng25 gold badges104 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

5666 Huy hiệu bạc17 Huy hiệu đồng6 silver badges17 bronze badges

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

Đó là Willemit's WillemIt's Willem

4863 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

Biến độngmgilson

30.1k10 Huy hiệu vàng79 Huy hiệu bạc88 Huy hiệu Đồng60 gold badges605 silver badges676 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

RegrootPrabhavDevo

72.3K25 Huy hiệu vàng104 Huy hiệu bạc119 Huy hiệu đồng6 silver badges21 bronze badges

1

Làm thế nào để bạn lặp lại một chương trình Python?

Đặt toàn bộ mã trong một vòng lặp thực sự và cuối cùng hỏi người dùng nếu họ muốn lặp lại.Nếu không, hãy phá vỡ vòng lặp.. If not, break the loop.

Làm thế nào để bạn lặp lại một chương trình nhiều lần trong Python?

Cách lặp lại một chuỗi nhiều lần trong Python..
Xây dựng vấn đề và tổng quan về giải pháp ..
Phương pháp 1: Sử dụng toán tử print [] và phép nhân ..
Phương pháp 2: Sử dụng một vòng lặp và phạm vi [].
Phương pháp 3: Sử dụng hàm đầu vào [] ..
Phương pháp 4: Sử dụng itertools.repeat [].
Phương pháp 5: Sử dụng DataFrame ..
Summary..
Regex hài hước ..

Bài Viết Liên Quan

Chủ Đề