[Tutor] First script

Tesla Coil tescoil@irtc.net
Tue, 16 Jan 2001 16:51:40 -0600


On 16 Jan 2001, John Precedo replied to Robert L Hicks:
> You've been quite clever using 'len(answer)' as a decider
> for what you want to do. But what happens if the user
> (mis)types 'ye'? Or types 'noo'? Sticky keys can be a real
> pain!
>
> Well, this I'd how I'd implement it:
>
> r = "kill -HUP `ps cax|grep inetd|awk '{print $1}'`"
> # restarts the daemon
> n = "Inetd not restarted"
> w = "Answer needs to be 'yes' or 'no'. Try again!"
>
> yesAnswers = ["yes", "YES", "Y", "y"]
> noAnswers = ["no", "NO", "N", "n"]
> validAnswers = yesAnswers + noAnswers
> answer = ""
>
> answer = raw_input("Do you want to restart the INETD daemon?
> (yes/no): ")
>
> while answer not in validAnswers:
>    print w; print
>    answer = raw_input("Do you want to restart the INETD daemon? (yes/no): ")
>
> if answer in yesAnswers:
>    print r
> else:
>    print n

Here's a more compact recursive approach
that, um, doesn't look like it blows up...

def pester():
    yesAnswers = ["yes", "YES", "Y", "y"]
    noAnswers = ["no", "NO", "N", "n"]
    validAnswers = yesAnswers + noAnswers
    answer = raw_input("Restart the INETD daemon? (yes/no): ")
    if answer not in validAnswers:
        print "Answer needs to be 'yes' or 'no'. Try again!"
        pester()
    elif answer in yesAnswers:
        print "kill -HUP `ps cax|grep inetd|awk '{print $1}'`"
    else:
        print "Inetd not restarted"

pester()