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