GetNumber[prompt_String, predicate_:(True&)] :=
	Block[{answer},
		While[ True,
			answer = Input[prompt];
			If[ NumberQ[answer] && predicate[answer], Break[] ];  (* good   *)
			If[ answer === EndOfFile, Break[] ];                  (* escape *)
			Print["Please enter a number that satisfies ", predicate]
		];
		answer
	]
