आउटपुट और इनपुट
दो उपकरण जिनका आप पहली पंक्ति से ही उपयोग करेंगे: print() टर्मिनल में मान दिखाता है, input() उपयोगकर्ता से टेक्स्ट लेता है। ये सरल हैं, लेकिन इनके व्यवहार को जानना आपको शुरुआत में कई आश्चर्यों से बचाता है।
Python आपके कोड को कैसे चलाता है
Python आपके कोड को ऊपर से नीचे, एक समय में एक पंक्ति, ठीक उसी क्रम में चलाता है जिस क्रम में आपने लिखा है। कोई इधर-उधर कूदना नहीं। जिस क्रम में आप चीज़ें लिखते हैं, उसी क्रम में वे चलती हैं। हमेशा।
city = "नई दिल्ली"
print(city)
print("Population: 14 million")city को पहले असाइन किया जाता है। पहला print चलता है। दूसरा print चलता है। हर बार, उसी क्रम में।
यह इसलिए मायने रखता है क्योंकि आप किसी वेरिएबल का उपयोग असाइन करने से पहले नहीं कर सकते। Python ने इसे अभी तक देखा नहीं है और एक त्रुटि उत्पन्न करेगा:
print(country) # NameError: country is not defined yet
country = "India"जैसे-जैसे आपके प्रोग्राम बढ़ते हैं, इसे ध्यान में रखें: जो भी आप उपयोग करते हैं उसे उपयोग करने से पहले परिभाषित किया जाना चाहिए।
आउटपुट प्रिंट करना
print() वह तरीका है जिससे Python आपसे जवाब में बात करता है। इसे कोई भी मान पास करें और यह उस मान को प्रदर्शित करता है। यह आपके द्वारा दी गई किसी भी चीज़ को स्वचालित रूप से टेक्स्ट में बदल देता है।
print("Hello") # Hello
print(42) # 42
print(3.14) # 3.14
print(True) # Trueएकाधिक मान
आप एक साथ कई मानों को कॉमा से अलग करके प्रिंट कर सकते हैं। Python डिफ़ॉल्ट रूप से उनके बीच एक स्पेस डालता है। सेपरेटर को sep के साथ बदलें:
name = "आरव"
age = 28
print(name, age) # आरव 28
print("Name:", name) # Name: आरव
print("2024", "01", "15", sep="-") # 2024-01-15
print("a", "b", "c", sep=", ") # a, b, cलाइन एंडिंग को नियंत्रित करना
प्रत्येक print() कॉल डिफ़ॉल्ट रूप से एक न्यूलाइन के साथ समाप्त होती है, इसलिए अगला आउटपुट एक नई पंक्ति पर शुरू होता है। इसे end के साथ बदलें। end="" सेट करने से अगला प्रिंट उसी पंक्ति पर जारी रहता है:
print("Loading", end="")
print("...")
# Loading...
print("one", end=" | ")
print("two", end=" | ")
print("three")
# one | two | threef-strings के साथ आउटपुट फ़ॉर्मेट करना
संदेश बनाने का सबसे साफ़ तरीका f-strings है। ओपनिंग कोट से पहले f लगाएं, फिर किसी भी वेरिएबल या एक्सप्रेशन को कर्ली ब्रेसेस में लपेटें। Python इसे रनटाइम पर भर देता है। आप {} के अंदर कोई भी मान, गणना, या मेथड कॉल रख सकते हैं।
name = "आरव"
score = 980
# concatenation: clunky, requires str() for numbers
print("Player: " + name + ", Score: " + str(score))
# f-string: readable, no manual conversion
print(f"Player: {name}, Score: {score}")आप {} के अंदर कोई भी एक्सप्रेशन रख सकते हैं: अंकगणित, मेथड कॉल, फ़ॉर्मेट स्पेक्स:
price = 49.99
tax = 0.2
total = price * (1 + tax)
print(f"Total: {total:.2f}") # Total: 59.99
print(f"Name: {name.upper()}") # Name: आरव
print(f"2 + 2 = {2 + 2}") # 2 + 2 = 4: के बाद फ़ॉर्मेट स्पेक नियंत्रित करता है कि मान को कैसे प्रदर्शित किया जाए:
ratio = 0.8765
count = 1234567
label = "revenue"
print(f"{ratio:.1%}") # 87.7%
print(f"{count:,}") # 1,234,567
print(f"{label:>12}") # " revenue":.2f का अर्थ है "दो दशमलव स्थान"। आप इसका उपयोग कीमतों और मापन के लिए लगातार करेंगे। बाकी सब जब आपको ज़रूरत हो तब है। मुख्य बात: {} के अंदर कुछ भी जा सकता है, केवल वेरिएबल नाम नहीं।
उपयोगकर्ता से इनपुट प्राप्त करना
input() आपके प्रोग्राम को रोकता है और उपयोगकर्ता द्वारा कुछ टाइप करने की प्रतीक्षा करता है। जो भी वे टाइप करते हैं (और Enter दबाते हैं) रिटर्न वैल्यू के रूप में वापस आता है। कोष्ठक के अंदर की स्ट्रिंग वह प्रॉम्प्ट है जिसे उपयोगकर्ता देखता है।
name = input("What's your name? ")
print(f"Hello, {name}!")input() हमेशा एक स्ट्रिंग लौटाता है, चाहे उपयोगकर्ता कुछ भी टाइप करे। 42 टाइप करें और आपको "42" मिलता है, संख्या 42 नहीं। इसके साथ अंकगणित करने के लिए, स्पष्ट रूप से परिवर्तित करें:
age = int(input("How old are you? "))
print(f"In ten years you'll be {age + 10}.")क्या होगा यदि उपयोगकर्ता कुछ ऐसा टाइप करता है जिसे परिवर्तित नहीं किया जा सकता? Python एक ValueError उत्पन्न करता है। इसे ठीक से संभालना फ़ाइलें और अपवाद अध्याय में कवर किया गया है।
व्यवहार में
एक क्विज़ जो उपयोगकर्ता इनपुट से खुद को व्यक्तिगत बनाती है:
name = input("What's your name? ")
subject = input("Which subject? ")
print(f"Okay, {name}. Starting your {subject} quiz.")
print("Good luck!")दोनों इनपुट स्ट्रिंग्स के रूप में वापस आते हैं और सीधे f-strings में जाते हैं। कोई कन्वर्ज़न आवश्यक नहीं है क्योंकि आप उन्हें टेक्स्ट के रूप में उपयोग कर रहे हैं, संख्याओं के रूप में नहीं।

