在程序运行时循环

时间:2012-11-30 08:31:45

标签: python for-loop

我正在编写这个程序,我想让它退出。

意思是,当我输入Q或给它输入Q时,它应该显示给我..

Press Q to quit: Q   
And it should show >>> in next line

但到目前为止,我有:

list = ['Approval', 'Range', 'Plurality', 'IRV', 'Borda', 'Q']
input_prompt = prompt_from_list('Select a voting system or Q to quit:', list)
while input_prompt != 'Q':

approval_file = open(APPROVAL_BALLOT_FILENAME, 'r')
approval = approval_file.readlines()
approval_file.close()




if input_prompt == 'Approval':
    print('Running for Approval')
    prompt_riding = prompt_for_riding("Which riding would you like to see results for? (Enter a number between 0 and 307, or all.):",
                      307)

    list = format_approval_list(approval, prompt_riding)
    a = vs.voting_approval(list)

    country = print_country_results(a[1])
elif input_prompt == 'Range':
    print('Running for Range')
    prompt_riding = prompt_for_riding("Which riding would you like to see results for? (Enter a number between 0 and 307, or all.):",
                      307)
         print prompt_riding

现在它应该继续循环..在我们输入提示之后它应该转到prompt_riding,但它不会...... :(

>>>Select a voting system or Q to quit:
 Approval, Range, Plurality, IRV, Borda, Q
Approval
Running for Approval
Which riding would you like to see results for? (Enter a number between 0 and 307, or all.):0
Which riding would you like to see results for? (Enter a number between 0 and 307, or all.):

It should show me.. 
Select a voting system or Q to quit:
  Approval, Range, Plurality, IRV, Borda, Q

有没有办法可以关闭无限循环?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

input_prompt = '' # To get into the loop first time

# Start loop
while input_prompt != 'Q':

    # Now ask for voting system
    input_prompt = prompt_from_list('Select a voting system or Q to quit:', list)
        ...

    if input_prompt == 'Approval':
        ...
        prompt_riding = input("Which riding would you like to see results for? (Enter a number between 0 and 307, or all.):")

        # If the user has selected to Quit
        if prompt_riding == 'Q':
            break # Exit loop

        # Continue checking what prompt_input is
        ...

答案 1 :(得分:0)

我是你,我会用tkinter操纵事件:

# respond to a key without the need to press enter
import Tkinter as tk
def keypress(event):
    if event.keysym == 'Q':
        root.destroy()
    x = event.char

root = tk.Tk()
print "Press Q to Quit:"
print ">>> "
root.bind_all('<Key>', keypress)
# don't show the tk window
root.withdraw()
root.mainloop()