2014-06-16 12 views
9

का उपयोग कर यह मेरा कोडलेखन त्रुटि: प्रारूप स्ट्रिंग के लिए पर्याप्त तर्क नहीं% s

import sys 
name = input("Enter your name:") 
last_name = input("Enter your last name:") 
gender = input("Enter your gender:") 
age = input("Enter your age:") 
print ("So your name is %s, your last name is %s, you are %s and you are %s years old" % name, last_name, gender, age) 

है मैं विषय की खोज की है, लेकिन मुझे समझ नहीं आता।

उत्तर

18

आप स्ट्रिंग कोष्टक में फ़ॉर्मेट करने के लिए अपने तर्क रखना होगा:

print (... % (name, last_name, gender, age)) 

अन्यथा, अजगर केवल स्ट्रिंग स्वरूपण के लिए एक तर्क और print समारोह के लिए तर्क के रूप में बाकी के रूप में name देखेंगे।


नोट तथापि स्ट्रिंग स्वरूपण कार्यों के लिए % का उपयोग कर इन दिनों पर सिकोड़ी है कि। आधुनिक दृष्टिकोण str.format उपयोग करने के लिए है:

>>> '%s %s' % 'a', 'b' # what you have 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: not enough arguments for format string 
>>> 
>>> 
>>> '%s %s' % ('a', 'b') # correct solution 
'a b' 

'%s %s' % 'a', 'b'('%s %s' % 'a'), 'b' के रूप में मूल्यांकन किया जाता है, जो '%s %s' % 'a' में एक त्रुटि पैदा करता है जब से तुम प्रारूप विनिर्देशक से कम तर्क है:

print ("So your name is {}, your last name is {}, you are {} and you are {} years old".format(name, last_name, gender, age)) 
+0

यह एक अच्छा विकल्प अजगर से पुराने स्ट्रिंग प्रारूप विधि पीछे छोड़, और इस दृष्टिकोण :) का उपयोग करने के लिए,। यह बहुत सारे सिरदर्द से बचाता है और उदाहरण के लिए डेटा के कॉलम बनाने के लिए आउटपुट को बेहतर स्वरूपित करने के लिए रिक्त स्थान डालने पर आपको अधिक लचीलापन देता है। यहां आधिकारिक दस्तावेज़ है, जिसमें कई उदाहरण हैं :) -> https://pyformat.info/ – ivanleoncz

6

आप कोष्ठक का एक सेट की जरूरत है।


print("So your name is %s, your last name is %s, you are %s and you are %s years old" % (name, last_name, gender, age)) 
संबंधित मुद्दे