ఇన్‌పుట్ & అవుట్‌పుట్ ఫార్మాటింగ్ (print, input & f-strings)

🐍 Modern Python (Python 3.12+) 🎯 Chapter 4 of 25 🚀 Phase 01: పైథాన్ ఫండమెంటల్స్ & బేసిక్స్ 📅 2026 Edition
📌 Covered in this chapter: Standard I/O ఆర్కిటెక్చర్ · print() పారామీటర్లు (sep, end, flush, file) · input() & టైప్ సేఫ్టీ · split() & map() సింగిల్-లైన్ ఇన్‌పుట్స్ · Legacy % & str.format() · Modern f-strings & PEP 498 · నంబర్ అలైన్‌మెంట్, ప్యాడింగ్ & కరెన్సీ ఫార్మాటింగ్ · Competitive Programming Fast I/O · Bank ATM Passbook Printer ప్రాజెక్ట్!
ఏ సాఫ్ట్‌వేర్ అప్లికేషన్ అయినా విజయవంతం కావాలంటే అది యూజర్ల నుండి సరైన ఇన్‌పుట్‌ను స్వీకరించగలగాలి మరియు ఫలితాన్ని స్పష్టంగా, ఆకర్షణీయంగా అవుట్‌పుట్ రూపంలో ప్రదర్శించగలగాలి. పైథాన్‌లో కేవలం print() మరియు input() ఫంక్షన్లను ప్రాథమికంగా వాడటం మాత్రమే కాదు; తెరవెనుక Standard I/O Streams (stdin, stdout) ఎలా పనిచేస్తాయి, బఫర్ ఫ్లషింగ్ ఎలా జరుగుతుంది, మరియు Python 3.6+ లో వచ్చిన గేమ్-చేంజర్ f-strings (Formatted String Literals) తో డేటాను ఎలా అందంగా టేబుల్స్ లాగా తీర్చిదిద్దాలో అర్థం చేసుకోవడం చాలా ముఖ్యం. ఈ నాల్గవ అధ్యాయంలో — కస్టమ్ సెపరేటర్లు, లైవ్ ప్రోగ్రెస్ బార్లు, మల్టీ-వేరియబుల్ ఫాస్ట్ రీడింగ్, కరెన్సీ అలైన్‌మెంట్, మరియు ఒక పూర్తి స్థాయి Bank ATM Mini-Statement & Dynamic Passbook Printer ప్రాజెక్ట్ ద్వారా పైథాన్ I/O లో పరిపూర్ణ నైపుణ్యాన్ని సాధిద్దాం!

1 పైథాన్ I/O ఆర్కిటెక్చర్ అంటే ఏమిటి? (Standard Streams: stdin, stdout, stderr)

పైథాన్ ప్రోగ్రామ్ రన్ అవుతున్నప్పుడు ఆపరేటింగ్ సిస్టమ్ దానికి మూడు ప్రామాణిక కమ్యూనికేషన్ చానెల్స్ (Standard Streams) ను కేటాయిస్తుంది. ఇవి sys మాడ్యూల్ ద్వారా లభిస్తాయి:

స్ట్రీమ్ పేరు ఫైల్ డిస్క్రిప్టర్ పైథాన్ ఆబ్జెక్ట్ సాధారణ ప్రవర్తన (Default Behavior)
Standard Input (stdin) 0 sys.stdin కీబోర్డ్ నుండి యూజర్ టైప్ చేసే అక్షరాలను రీడ్ చేస్తుంది (ఇది input() కు మూలాధారం).
Standard Output (stdout) 1 sys.stdout కన్సోల్ లేదా టెర్మినల్ స్క్రీన్‌పై సాధారణ ఫలితాలను ప్రింట్ చేస్తుంది (ఇది print() కు మూలాధారం).
Standard Error (stderr) 2 sys.stderr ఎర్రర్స్ మరియు వార్నింగ్ లాగ్స్‌ను ప్రదర్శిస్తుంది. ఇది బఫర్ లేకుండా (Unbuffered) వెంటనే స్క్రీన్‌పై పడుతుంది.
💡 I/O బఫరింగ్ అంటే ఏమిటి? (Line Buffering):

కంప్యూటర్ ప్రతి అక్షరాన్ని నేరుగా మానిటర్‌పై లేదా డిస్క్‌పై రాయడానికి చాలా CPU సమయం పడుతుంది. అందుకే పైథాన్ అక్షరాలను ముందుగా మెమరీలోని ఒక తాత్కాలిక డబ్బాలో (Buffer) నిల్వ చేస్తుంది. ఒక న్యూలైన్ క్యారెక్టర్ (\n) వచ్చినప్పుడు లేదా బఫర్ నిండిపోయినప్పుడు మాత్రమే మొత్తం డేటాను ఒకేసారి స్క్రీన్‌పైకి నెడుతుంది. దీనినే Line Buffering అంటారు.

2 print() ఫంక్షన్ ఇంటర్నల్స్ — sep, end, file & flush పారామీటర్లు

చాలామంది బిగినర్స్ print("Hello World") అని మాత్రమే రాస్తారు. కానీ పైథాన్ అఫీషియల్ డాక్యుమెంటేషన్‌లో print() ఫంక్షన్ యొక్క పూర్తి సిగ్నేచర్ ఇలా ఉంటుంది:

print(*objects, sep=' ', end='\n', file=None, flush=False)

ఈ 4 ఐచ్ఛిక పారామీటర్లు ప్రొడక్షన్ కోడింగ్‌లో ఎంతో శక్తివంతమైనవి:

3 కోడ్ డెమో 1: అడ్వాన్స్‌డ్ print() ఫీచర్లు & క్యారేజ్ రిటర్న్ (\r)

క్రింది కోడ్‌ను గమనించండి. ఇందులో sep, end మరియు క్యారేజ్ రిటర్న్ (\r) ఉపయోగించి ఒకే లైన్‌లో అప్‌డేట్ అయ్యే లైవ్ ప్రోగ్రెస్ ఎఫెక్ట్‌ను చూద్దాం:

01_advanced_print_parameters.py
# అడ్వాన్స్‌డ్ print() పారామీటర్ల డెమో
import time

print("=" * 50)
print("     1. కస్టమ్ సెపరేటర్లు (Custom Separators)")
print("=" * 50)

# URL నిర్మాణం
protocol = "https"
domain = "www.ourcompiler.com"
path = "blog-python"
print(protocol, "://", domain, "/", path, sep="")

# తేదీ మరియు సమయం ఫార్మాటింగ్
day, month, year = 2, 11, 2026
print("నేటి తేదీ:", day, month, year, sep="/")

# బహుళ విలువల మధ్య బాణం గుర్తులు
steps = ["ఇన్‌పుట్ తీసుకోండి", "డేటాను ప్రాసెస్ చేయండి", "ఫలితాన్ని ప్రింట్ చేయండి"]
print(*steps, sep=" ──▶ ")

print("\n" + "=" * 50)
print("     2. లైన్ బ్రేక్ నియంత్రణ (end parameter)")
print("=" * 50)

# ఒకే లైన్‌లో ప్రింట్ చేయడం
print("కౌంట్‌డౌన్ మొదలైంది: ", end="")
for i in [3, 2, 1]:
    print(f"{i}.. ", end="", flush=True)
print("🚀 BLAST OFF!")

# క్యారేజ్ రిటర్న్ (\r) తో ఇన్-ప్లేస్ అప్‌డేట్
print("\nడౌన్‌లోడ్ సిమ్యులేషన్:")
for percent in [25, 50, 75, 100]:
    # \r కర్సర్‌ను లైన్ ప్రారంభానికి తెస్తుంది
    print(f"\rడౌన్‌లోడ్ అవుతోంది: [{percent}%]", end="", flush=True)
print("  ✅ పూర్తి అయ్యింది!")

4 input() ఫంక్షన్ — యూజర్ డేటా సేకరణ & టైప్ సేఫ్టీ

పైథాన్‌లో యూజర్ నుండి కీబోర్డ్ ద్వారా డేటాను స్వీకరించడానికి input() ఫంక్షన్‌ను ఉపయోగిస్తాము.

user_input = input("ప్రాంప్ట్ మెసేజ్ ఇక్కడ ఇవ్వండి: ")
⚠️ బిగినర్స్ పడే నెంబర్ 1 ట్రాప్ (The input() Type Trap):

యూజర్ నంబర్ టైప్ చేసినప్పటికీ (ఉదా: 25), input() ఎల్లప్పుడూ దాన్ని స్ట్రింగ్ (str) రూపంలోనే రిటర్న్ చేస్తుంది!

age = input("మీ వయస్సు ఎంత? ") # యూజర్ 20 టైప్ చేశాడు
next_year = age + 1
# ❌ TypeError: can only concatenate str (not "int") to str!

పరిష్కారం: గణిత లెక్కలు చేయడానికి ముందే స్పష్టంగా టైప్ కాస్టింగ్ చేయాలి: age = int(input("మీ వయస్సు: ")).

అలాగే యూజర్ పొరపాటున చివరలో కొట్టే అనవసరమైన ఖాళీలను తొలగించడానికి .strip() వాడటం ప్రొడక్షన్ బెస్ట్ ప్రాక్టీస్:
email = input("ఈమెయిల్ ఎంటర్ చేయండి: ").strip().lower()

5 మల్టిపుల్ ఇన్‌పుట్స్ ఒకే లైన్‌లో తీసుకోవడం (split() & map())

కాంపిటేటివ్ ప్రోగ్రామింగ్ (LeetCode, HackerRank) లేదా ఫాస్ట్ డేటా ఎంట్రీలో యూజర్లు ఒకే లైన్‌లో స్పేస్ ఇచ్చి బహుళ విలువలను టైప్ చేస్తారు (ఉదా: 10 20 30). వీటిని వేర్వేరు వేరియబుల్స్‌లోకి ఎలా విడగొట్టాలో చూద్దాం:

6 కోడ్ డెమో 2: మల్టీ-ఇన్‌పుట్ రీడింగ్ & డేటా శానిటైజేషన్

ఒకే లైన్‌లో బహుళ ఇన్‌పుట్స్‌ను చదవడం, ఖాళీలను శుభ్రం చేయడం మరియు భద్రంగా టైప్ కాస్టింగ్ చేసే విధానాన్ని క్రింది స్క్రిప్ట్‌లో పరిశీలించండి:

02_multi_input_and_sanitization.py
# మల్టిపుల్ ఇన్‌పుట్ పద్ధతులు & డేటా క్లీనింగ్ డెమో

# 1. ఒకే లైన్‌లో రెండు పేర్లు తీసుకోవడం
raw_input_data = "  రమేష్    కుమార్  "
first_name, last_name = raw_input_data.split()
print(f"మొదటి పేరు: [{first_name}], ఇంటిపేరు: [{last_name}]")

# 2. ఒకే లైన్‌లో బహుళ సంఖ్యలను చదివి కూడిక చేయడం
numbers_str = "10 25 40 85 100"
# map(int, ...) ద్వారా అన్నింటినీ పూర్ణాంకాలుగా మారుస్తున్నాము
num_list = list(map(int, numbers_str.split()))

print(f"\nస్వీకరించిన సంఖ్యలు: {num_list}")
print(f"మొత్తం సంఖ్యల కూడిక (Sum): {sum(num_list)}")
print(f"గరిష్ట సంఖ్య (Max): {max(num_list)}")
print(f"కనిష్ట సంఖ్య (Min): {min(num_list)}")

# 3. సేఫ్ న్యూమరిక్ ఇన్‌పుట్ ఫంక్షన్ (Exception Handling)
def safe_read_integer(val_str):
    clean_val = val_str.strip()
    if clean_val.isdigit():
        return int(clean_val)
    return 0

test_val = " 4500 "
result = safe_read_integer(test_val)
print(f"\nశానిటైజ్ చేయబడిన పూర్ణాంకం: {result} (Type: {type(result).__name__})")

7 స్ట్రింగ్ ఫార్మాటింగ్ చరిత్ర: % ఆపరేటర్ నుండి str.format() వరకు

పైథాన్‌లో స్ట్రింగ్స్‌లో వేరియబుల్స్‌ను పొందుపరచడానికి కాలక్రమేణా మూడు పద్ధతులు అభివృద్ధి చెందాయి:

తరగతి / యుగం సింటాక్స్ శైలి ఉదాహరణ కోడ్ పరిమితులు & సమస్యలు
1. C-Style % Formatting
(Python 1.0+)
"%s is %d" % (a, b) "ధర: ₹ %.2f" % 199.5 బహుళ వేరియబుల్స్ ఉన్నప్పుడు రీడబిలిటీ ఘోరంగా ఉంటుంది. టైప్ మిస్-మ్యాచ్ జరిగితే క్రాష్ అవుతుంది.
2. str.format()
(Python 2.7 / 3.0+)
"{} is {}".format(a, b) "హలో {name}, బిల్లు {amt}".format(name="రాము", amt=500) సింటాక్స్ చాలా పొడవుగా ఉంటుంది (Verbose). కోడ్ చదవడానికి కష్టంగా మారుతుంది.
3. Modern f-strings
(Python 3.6+ PEP 498)
f"{a} is {b}" f"ధర: ₹ {price:.2f}" అత్యుత్తమ వేగం, సులభమైన సింటాక్స్ & నేరుగా ఎక్స్‌ప్రెషన్లను రన్ చేసే సౌలభ్యం!

8 Modern Python f-strings — సింటాక్స్ & ఎక్స్‌ప్రెషన్ ఇవాల్యుయేషన్

Python 3.6 లో ప్రవేశపెట్టబడిన f-strings (Formatted String Literals) పైథాన్ చరిత్రలోనే అత్యంత ప్రజాదరణ పొందిన ఫీచర్లలో ఒకటి. స్ట్రింగ్ ముందు చిన్న లేదా పెద్ద అక్షరం f లేదా F పెట్టి, కర్లీ బ్రేసెస్ {...} లోపల వేరియబుల్స్ లేదా ఏ పైథాన్ ఎక్స్‌ప్రెషన్‌నైనా నేరుగా ఉంచవచ్చు:

9 f-strings ఫార్మాట్ స్పెసిఫైయర్స్ — నంబర్స్, అలైన్‌మెంట్, ప్యాడింగ్ & కరెన్సీ

కర్లీ బ్రేసెస్ లోపల వేరియబుల్ పక్కన కోలన్ : పెట్టి ఫార్మాటింగ్ నియమాలను (Format Specifiers) నిర్దేశించవచ్చు:

స్పెసిఫైయర్ అర్థం ఇన్‌పుట్ విలువ ఫలితం (Output)
{x:.2f} ఖచ్చితంగా 2 దశాంశ స్థానాలకు రౌండ్ చేస్తుంది 199.6666 199.67
{x:,} వేల స్థానాల్లో కామా (Thousands separator) 1500000 1,500,000
{x:08d} ఎడమవైపు సున్నాలతో 8 అంకెల ప్యాడింగ్ (Zero-padding) 452 00000452
{x:<15} ఎడమవైపు సర్దుబాటు (Left-align with 15 spaces) "ల్యాప్‌టాప్" "ల్యాప్‌టాప్ "
{x:>15} కుడివైపు సర్దుబాటు (Right-align with 15 spaces) "₹ 45,000" " ₹ 45,000"
{x:^15} మధ్యలోకి సర్దుబాటు (Center-align with 15 spaces) "హెడర్" " హెడర్ "
{x:.1%} శాతంగా మార్చడం (Percentage formatting) 0.185 18.5%

10 కోడ్ డెమో 3: f-strings ఫార్మాటింగ్ మాస్టరీ & ప్రొఫెషనల్ టేబుల్

అలైన్‌మెంట్, డెసిమల్ ప్రెసిషన్ మరియు కామా సెపరేటర్లు వాడి అందమైన బిజినెస్ రిపోర్ట్ టేబుల్‌ను ఎలా తయారుచేయాలో క్రింది కోడ్ ద్వారా చూద్దాం:

03_fstrings_table_formatting.py
# ప్రొఫెషనల్ f-strings ఫార్మాటింగ్ & టేబుల్ జనరేషన్ డెమో

products = [
    ("సోనీ హెడ్‌ఫోన్స్", 2, 4999.00),
    ("లాజిటెక్ వైర్‌లెస్ మౌస్", 5, 849.50),
    ("శామ్‌సంగ్ 4K మానిటర్", 1, 28990.00),
    ("మెకానికల్ కీబోర్డ్", 3, 3450.00)
]

print("=" * 66)
print(f"{'వస్తువు పేరు':<24} {'పరిమాణం':^10} {'ధర (₹)':>12} {'మొత్తం (₹)':>16}")
print("=" * 66)

grand_total = 0.0

for title, qty, price in products:
    total = qty * price
    grand_total += total
    # అలైన్‌మెంట్ మరియు నంబర్ ఫార్మాటింగ్
    print(f"{title:<22} {qty:^10} {price:>12,.2f} {total:>16,.2f}")

print("-" * 66)
print(f"{'మొత్తం చెల్లించవలసిన మొత్తం:':<44} {grand_total:>20,.2f}")
print("=" * 66)

# Python 3.8+ Debugging syntax demo
status = "SUCCESS"
latency_ms = 14.825
print(f"\nడెబగ్ అవుట్‌పుట్: {status=} | {latency_ms=:.2f}ms")

11 Competitive Programming Fast I/O — sys.stdin.readline vs input()

మీరు CodeChef, LeetCode, Codeforces వంటి ప్లాట్‌ఫామ్‌లలో కోడింగ్ చేస్తున్నప్పుడు పెద్ద సంఖ్యలో టెస్ట్ కేసులు (ఉదా: $10^5$ లేదా $10^6$ లైన్లు) ఉన్నప్పుడు సాధారణ input() వాడితే TLE (Time Limit Exceeded) ఎర్రర్ వస్తుంది!

దీనికి కారణం: input() ఫంక్షన్ ప్రతి లైన్ రీడ్ చేయడానికి ముందు ప్రాంప్ట్ చెక్ చేయడం, చివర ఉన్న న్యూలైన్ \n ను తొలగించడం వంటి అంతర్గత ఓవర్‌హెడ్‌ను కలిగి ఉంటుంది.

import sys

# Fast I/O ట్రిక్: input ను sys.stdin.readline కు రీ-అసైన్ చేయండి
input = sys.stdin.readline

# ఫాస్ట్ అవుట్‌పుట్: print() కంటే sys.stdout.write 2x వేగవంతమైనది
sys.stdout.write("ఫలితం: 100\n")
⚡ Fast I/O ముఖ్యాంశాలు:
  • sys.stdin.readline() చివర ఉన్న \n ను తొలగించదు; కాబట్టి స్ట్రింగ్స్ కోసం sys.stdin.readline().strip() వాడాలి.
  • సంఖ్యల కోసం int(sys.stdin.readline()) నేరుగా పనిచేస్తుంది ఎందుకంటే int() ఆటోమేటిక్‌గా ఖాళీలను ఇగ్నోర్ చేస్తుంది.
  • లక్ష లైన్ల ఇన్‌పుట్ ఉన్నప్పుడు sys.stdin.readline సాధారణ input() కంటే దాదాపు 4 రెట్లు వేగంగా పనిచేస్తుంది!

12 కామన్ బిగినర్స్ మిస్టేక్స్ & ప్రొడక్షన్ బెస్ట్ ప్రాక్టీసెస్

13 రియల్-వరల్డ్ ప్రాజెక్ట్: "Bank ATM Mini-Statement & Dynamic Passbook Printer"

ఈ నాల్గవ అధ్యాయంలో నేర్చుకున్న అన్ని కాన్సెప్ట్‌లను (కస్టమ్ సెపరేటర్లు, లైవ్ ప్రోగ్రెస్ ఎఫెక్ట్స్, f-strings అలైన్‌మెంట్, ప్యాడింగ్, వేల స్థానాల్లో కామాలు, కరెన్సీ రౌండింగ్) కలగలిపి — ఒక పూర్తి స్థాయి Bank ATM Mini-Statement & Passbook Printer ప్రాజెక్ట్‌ను నిర్మిద్దాం!

04_bank_atm_passbook_printer.py
# =====================================================================
# చాప్టర్ 04 మినీ ప్రాజెక్ట్: Bank ATM Mini-Statement & Passbook Engine
# కాన్సెప్ట్స్: f-strings Alignment, Currency Formatting, Zero-Padding,
#             Multi-column Ledger, Date Stamps & Account Masking
# =====================================================================

def print_atm_mini_statement(account_holder: str, acc_number: str, raw_transactions: list):
    """
    ఖాతాదారుని వివరాలు మరియు లావాదేవీలను స్వీకరించి అందమైన ATM రసీదును ముద్రిస్తుంది.
    """
    masked_acc = "XXXX-XXXX-" + acc_number[-4:] # చివరి 4 అంకెలు మాత్రమే
    header_title = "మన బ్యాంక్ ఆఫ్ ఇండియా — ATM డిజిటల్ పాస్‌బుక్"

    print("\n" + "=" * 68)
    print(f"{header_title:^68}")
    print("=" * 68)
    print(f"ఖాతాదారుని పేరు : {account_holder:<28} తేదీ : 2026-11-02")
    print(f"ఖాతా నంబరు      : {masked_acc:<28} సమయం : 10:30:15 AM")
    print("-" * 68)
    print(f"{'Txn ID':<10} {'వివరణ':<22} {'రకం':^8} {'మొత్తం (₹)':>12} {'నిల్వ (₹)':>12}")
    print("-" * 68)

    running_balance = 50000.00 # ప్రారంభ నిల్వ (Opening Balance)

    for txn_id, desc, txn_type, amount in raw_transactions:
        if txn_type == "CR": # Credit (జమ)
            running_balance += amount
            type_label = "[+CR]"
        else: # Debit (ఖర్చు)
            running_balance -= amount
            type_label = "[-DR]"

        formatted_id = f"TXN{txn_id:04d}"
        print(f"{formatted_id:<10} {desc:<20} {type_label:^8} {amount:>12,.2f} {running_balance:>12,.2f}")

    print("=" * 68)
    print(f"{'తుది ఖాతా నిల్వ (Available Balance):':<42} ₹ {running_balance:>20,.2f}")
    print("=" * 68)
    print(f"{'మన బ్యాంక్ ఎంచుకున్నందుకు ధన్యవాదాలు! భద్రంగా ఉండండి.':^68}")
    print("=" * 68 + "\n")

# లైవ్ రన్ డెమో
sample_txns = [
    (1, "జీతం డిపాజిట్", "CR", 45000.00),
    (2, "ఫ్లిప్‌కార్ట్ షాపింగ్", "DR", 4599.50),
    (3, "కరెంట్ బిల్లు చెల్లింపు", "DR", 1250.00),
    (4, "UPI ద్వారా స్నేహితుని జమ", "CR", 2000.00),
    (5, "పెట్రోల్ బంక్ ఖర్చు", "DR", 500.00)
]

print_atm_mini_statement("బాలాజీ రావు", "987654321098", sample_txns)

★ ఈ అధ్యాయంపై ప్రాక్టీస్ క్విజ్ (Knowledge Check)

1. print() ఫంక్షన్‌లో 'sep' మరియు 'end' పారామీటర్ల మధ్య వ్యత్యాసం ఏమిటి?
సమాధానం: sep అనేది కామాతో ఇచ్చిన బహుళ ఆబ్జెక్టుల మధ్యలో ఏ అక్షరం రావాలో నిర్ణయిస్తుంది (డిఫాల్ట్: స్పేస్ ' '). end అనేది అన్ని ఆబ్జెక్టులు ప్రింట్ అయిన తర్వాత లైన్ చివరలో ఏ అక్షరం రావాలో నిర్దేశిస్తుంది (డిఫాల్ట్: న్యూలైన్ '\n').
2. యూజర్ నుండి input() తీసుకున్న తర్వాత నంబర్ల కూడిక ఎందుకు చేయలేము?
సమాధానం: పైథాన్‌లో input() ఫంక్షన్ యూజర్ టైప్ చేసిన డేటాను ఎల్లప్పుడూ స్ట్రింగ్ (str) రూపంలోనే అందిస్తుంది. మీరు int() లేదా float() ద్వారా టైప్ కాస్టింగ్ చేయకుండా కూడిక చేస్తే TypeError వస్తుంది లేదా రెండు స్ట్రింగ్స్ కలిసిపోతాయి (ఉదా: "10" + "20" = "1020").
3. ఒకే లైన్‌లో 3 సంఖ్యలను స్పేస్ ఇచ్చి తీసుకుని వేరియబుల్స్‌లోకి ఎలా నింపవచ్చు?
సమాధానం: a, b, c = map(int, input().split()) అని రాయడం ద్వారా సులభంగా చేయవచ్చు. split() స్పేస్ ఆధారంగా స్ట్రింగ్‌ను 3 ముక్కలుగా చేస్తుంది; map(int, ...) ప్రతి ముక్కను పూర్ణాంకంగా మారుస్తుంది.
4. f-strings లో {amount:,.2f} అని రాస్తే ఫలితం ఎలా వస్తుంది?
సమాధానం: కామా , అనేది ప్రతి వెయ్యి స్థానానికి కామాను ఉంచుతుంది, మరియు .2f అనేది ఖచ్చితంగా రెండు దశాంశ స్థానాలకు రౌండ్ చేస్తుంది. ఉదాహరణకు 1250000.456 అనేది 1,250,000.46 గా మారుతుంది.
5. Competitive Programming లో input() కంటే sys.stdin.readline ఎందుకు మెరుగైనది?
సమాధానం: input() ఫంక్షన్ ప్రతి లైన్‌కు ప్రాంప్ట్ హ్యాండ్లింగ్ చేయడం మరియు అదనపు శానిటైజేషన్ చేయడం వల్ల నెమ్మదిగా ఉంటుంది. కానీ sys.stdin.readline() నేరుగా C-లెవల్ ఫైల్ బఫర్ నుండి లైన్‌ను రీడ్ చేస్తుంది కాబట్టి $10^5$ కంటే ఎక్కువ లైన్లను రీడ్ చేసేటప్పుడు ఇది దాదాపు 4 రెట్లు వేగంగా ఎగ్జిక్యూట్ అవుతుంది.
← మునుపటి అధ్యాయం: 3. వేరియబుల్స్ & డేటా టైప్స్ తర్వాతి అధ్యాయం: 5. ఆపరేటర్లు & ఎక్స్‌ప్రెషన్స్ →

ఈ Bank ATM Passbook ప్రాజెక్ట్‌ను లైవ్‌గా మన కంపైలర్‌లో రన్ చేయండి!

ఎటువంటి సాఫ్ట్‌వేర్ డౌన్‌లోడ్ చేయకుండా, మీ బ్రౌజర్‌లోనే Modern Python 3 ఇంటరాక్టివ్ కంపైలర్‌లో ఈ కోడ్‌ను రన్ చేసి అవుట్‌పుట్ తనిఖీ చేయండి.