Еще одно хорошее место для начала - поиск общих последовательностей действий и помещение их в отдельную подпрограмму.
# ignore this bit - it's here for compatibility
try:
inp = raw_input # Python 2.x
except NameError:
inp = input # Python 3.x
# this wraps the 'ask for a string, check if all characters are valid' bit in a single call
def GetValidString(msg, validChars):
i = inp(msg)
if all(ch in validChars for ch in i):
return i
else:
return None
def main():
while True:
str1 = GetValidInput('first: ', 'aeiou'):
if str1:
str2 = GetValidInput('second: ', 'rstvy'):
if str2:
break # good! we can leave the loop now
# got valid values for str1 and str2
логика выглядит как «цикл, пока вы не получите string1, и это хорошо, и вы получите string2, и это тоже хорошо».
Надеюсь, это поможет.