non conosco python (l'avrò detto? ) ma per esempio in pascal si mette begin...end all'inizio e alla fine di ogni ciclo. Sarebbe:

codice:
while risposta=="si": *****BEGIN****
    while lunghezza<=0: *****BEGIN****
        lunghezza = input('Dammi la lunghezza del rettangolo:')******END******
    while larghezza<=0:*****BEGIN****
        larghezza = input('Dammi la larghezza del rettangolo:')******END******
    area = lunghezza * larghezza
    print "L'area del rettangolo è",area
    risposta=raw_input("Vuoi continuare?")
    ******END******
(ovviamente con diversa formattazione)
così riconosce le cose da ripetere, può essere che c'è da mettere qualcosa di simile?