C में scanf("%d %d %d", &x, &y, &z) की तरह पायथन में एक लाइन में कई मान लेने के कई तरीके हैं।
विधि 1: कई input() कॉल
>>> x, y, z = input(), input(), input()
40 30 10
>>> x
'40'
>>> y
'30'
>>> z
'10'
नोट: प्रत्येक input() एक नई लाइन पढ़ता है, इसलिए यह वास्तव में "एक लाइन में" नहीं है।
विधि 2: लिस्ट कॉम्प्रिहेंशन के साथ split()
एक ही लाइन से स्पेस-सेपरेटेड मान:
>>> x, y, z = [int(x) for x in input().split()]
9 12 15
>>> x, y, z
(9, 12, 15)
मिश्रित प्रकार के लिए (बिना टाइप कन्वर्जन):
>>> x, y, z = [x for x in input().split()]
40 10 "hello"
>>> x, y, z
('40', '10', '"hello"')
विधि 3: map() फ़ंक्शन (सबसे पायथनिक)
>>> x, y, z = map(int, input().split())
40 54 90
>>> x, y, z
(40, 54, 90)
तुलना
| विधि | सिंटैक्स | उपयोग केस |
|---|---|---|
| कई input() | x, y, z = input(), input(), input() | अलग-अलग लाइन्स, सरल केस |
| लिस्ट कॉम्प्रिहेंशन | [int(x) for x in input().split()] | जटिल प्रोसेसिंग, फ़िल्टरिंग |
| map() | map(int, input().split()) | सिंपल टाइप कन्वर्जन, सबसे तेज़ |
व्यावहारिक उदाहरण
# दो संख्याएं पढ़ें और योग प्रिंट करें
a, b = map(int, input("दो संख्याएं दर्ज करें: ").split())
print(f"योग: {a + b}")
# N संख्याएं पढ़ें (पहले N दें)
n = int(input("कितनी संख्याएं? "))
numbers = list(map(int, input(f"{n} संख्याएं दर्ज करें: ").split()))
print(f"सूची: {numbers}")
print(f"औसत: {sum(numbers)/len(numbers)}")
महत्वपूर्ण नोट्स
input().split()डिफ़ॉल्ट रूप से व्हाइटस्पेस (स्पेस, टैब, न्यूलाइन) से विभाजित करता है।- वेरिएबल्स की संख्या मानों की संख्या से मेल खानी चाहिए, अन्यथा
ValueErrorउठेगा। - त्रुटि संचालन के लिए
try/exceptका उपयोग करें।