Я бы предложил использовать что-то вроде этого:
def info_about(parts):
info = list(parts.values())
print("\n".join(f"{i+1}.\t\t{name}" for i, name in enumerate(parts)))
print()
while True:
part = input("Choose an engine part to show you details about it: ")
if not part.isnumeric():
print("Please enter a valid number")
continue
part = int(part)
if part > len(info) or part < 1:
print("Please enter a valid number")
continue
break
print(info[part-1])
parts = {
"Engine block": "Info about engine block",
"Pistons": "Info about pistons",
"Crankshaft": "Info about crankshaft",
"Camshaft": "Info about camshaft",
"Cylinder head": "Info about cylinder head",
"Connecting Rod": "Info about connecting rod",
}
info_about(parts)
Это теперь проверяет ввод, чтобы убедиться, что он действителен - что это число c, и что это между 1 и количеством частей.