defcheck_loop(head):faster=headslower=headwhilefasterisnotNoneandfaster.next_nodeisnotNone:faster=faster.next_node.next_nodeslower=slower.next_nodeiffasterisslower:break# there is a loop!iffasterisNoneorfaster.next_nodeisNone:return(False,None)slower=headwhileslowerisnotfaster:slower=slower.next_nodefaster=faster.next_nodereturn(True,slower)