Quick Overview
The issue is that Python asks the user to provide the same data each time you use input() (or a method that includes input()). Your software becomes tedious, sluggish, and repetitive as a result.
The Fix (One Simple Rule): Make a single call to input(), store the value in a variable, and then pass that variable to each function that requires it.
The issue is that the program to fix for the names and ratings multiple times because I'm calling get_ratings() inside other functions.
4-Step Quick Fix You Can Follow Right Now:
- Find every input() in your code.
- Move the input() call to the top and save it in a variable.
- Update your functions to accept the value as a parameter (remove input() from inside them).
- Call your functions using the saved variable.
That’s it! Your program becomes cleaner, faster, and user-friendly. Keep reading for full examples, bad vs good code, real world demo, and bonus tips.
The Problem (Bad Code Example)
Here’s what not to do:
Python
# BAD - input() called multiple times
def greet(name):
print(f"Hello, {name}!")
def get_user_info(name):
print(f"Your name has {len(name)} letters.")
# User has to type the name TWICE!
greet(input("Enter your name: "))
get_user_info(input("Enter your name: "))
What happens:
text
Enter your name: Alice
Hello, Alice!
Enter your name: Alice ←←← Annoying second prompt!
Your name has 5 letters.
The Correct Solution (Good Code)
Follow the 4 steps above:
Python
# GOOD - input() called only ONCE
def greet(name):
print(f"Hello, {name}!")
def get_user_info(name):
print(f"Your name has {len(name)} letters.")
# Step 2: Get input once and store it
user_name = input("Enter your name: ")
# Step 4: Pass the stored value
greet(user_name)
get_user_info(user_name)
Clean output:
text
Enter your name: Alice
Hello, Alice!
Your name has 5 letters.
Step-by-Step Guide (Follow These 4 Steps Every Time)
Step 1: Identify every input() Scan your entire script for input() or any function that calls input() inside it.
Step 2: Move input() to the top and store the result Use a clear variable name:
Python
user_name = input("Enter your name: ")
user_age = int(input("Enter your age: "))
choice = input("Choose 1-3: ")
Step 3: Refactor functions to accept parameters Remove input() from inside functions.
Before (bad):
Python
def calculate_total():
price = int(input("Enter price: ")) # ← remove this
...
After (good):
Python
def calculate_total(price): # ← now accepts the value
...
Step 4: Pass the stored variable to your functions You can now call the same function multiple times safely:
Python
price = int(input("Enter price: ")) # only once
total1 = calculate_total(price)
total2 = calculate_total(price * 1.1) # reuse safely
Real-World Example: Simple Menu Program
Python
def show_menu():
print("1. Start Game")
print("2. Settings")
print("3. Quit")
def handle_choice(choice):
if choice == "1":
print("Game started!")
elif choice == "2":
print("Opening settings...")
elif choice == "3":
print("Goodbye!")
else:
print("Invalid choice.")
# Correct way (follow the 4 steps)
show_menu()
user_choice = input("Enter your choice: ") # ← only ONE input()
handle_choice(user_choice) # can call this many times if needed
Tips for Professional Code
- Never put input() inside a reusable function unless the function’s only job is to get input.
- For multiple inputs, collect them all at the top before calling any logic functions.
- Add simple validation in a separate function that takes the value as a parameter:
Add simple validation in a separate function that takes the value as a parameter:
def is_valid_age(age_str):
return age_str.isdigit() and int(age_str) > 0
- Use descriptive variable names so it’s obvious the value came from the user.
Summary (One More Time)
- Problem → Repeated input() calls = repeated prompts.
- Solution → Call input() once, store the value, pass the variable around.
- Result → Clean, fast, professional program.
You now have a complete, copy-paste-ready fix that you can apply to any script in under 2 minutes.

