अजगर में स्ट्रिंग और पूर्णांक को समेटना


136

अजगर में तुम कहते हो

s = "string"
i = 0
print s+i

आपको त्रुटि देगा ताकि आप लिखें

print s+str(i) 

त्रुटि प्राप्त करने के लिए नहीं।

मुझे लगता है कि यह बहुत ही भद्दा तरीका है जो इंट और स्ट्रिंग कॉन्फैक्शन को हैंडल करता है। यहां तक ​​कि जावा को इस तरह के संघटन करने के लिए स्ट्रिंग के लिए स्पष्ट कास्टिंग की आवश्यकता नहीं है। क्या पायथन में स्पष्ट कास्टिंग के बिना इस तरह का कॉन्सैप्टेशन करने का एक बेहतर तरीका है?


8
यह इसलिए है क्योंकि पायथन स्ट्रॉन्ग टाइप किया गया है ( en.wikipedia.org/wiki/Strong_typing ) भाषा (अधिक समझने के लिए Google पर कुछ :))।
मौड

3
यह अस्पष्टता को जन्म देगा। इसका परिणाम क्या होगा "1" + 1, 2या "11"क्यों?
बडी

1
बडी मुझे यकीन नहीं है कि आप क्या सोच रहे हैं लेकिन कृपया बस मान न लें। मेरी समस्या 2 अलग-अलग वस्तु प्रकारों को समेटने की थी और मुझे इसका हल मिल गया। मुझे नहीं पता कि आपने अजगर में कितना प्रोग्राम किया है, लेकिन क्या आपने कभी दो स्ट्रिंग्स को केवल गलती से प्राप्त करने की कोशिश की है जब उनमें से कोई भी प्रकार नहीं है? आप स्पष्ट जांच कर सकते हैं, लेकिन यह केवल अतिरिक्त बिट कोड है। जब आपको त्रुटियों को लॉग करने की आवश्यकता होती है तो इस प्रकार की आवश्यकता होती है।
स्पेशलस्कोप

2
बस s+str(i), और तुम सही हो!

जवाबों:


174

आधुनिक स्ट्रिंग स्वरूपण:

"{} and {}".format("string", 1)

5
बस पोस्टर के लिए, चूंकि चीजें अतीत में बदल गई हैं और भविष्य में बदलने की संभावना है: यह "आधुनिक" किस संस्करण के रूप में है?
jvriesem 23


87

कोई स्ट्रिंग स्वरूपण नहीं:

>> print 'Foo',0
Foo 0

2
यह प्रिंट के साथ अच्छी तरह से काम करेगा लेकिन स्ट्रिंग के रूप में एक चर को नहीं सौंपा जा सकता है। यह सेट ऑब्जेक्ट देता है।
specialscope

2
जब तक आप v3 print() फ़ंक्शन का उपयोग नहीं करते हैं और इसके कुछ मापदंडों को सेट करते हैं, तब तक यह दो वस्तुओं के बीच एक अतिरिक्त रिक्तता में चिपक जाता है ।
लेवोन

34

स्ट्रिंग स्वरूपण, नई शैली .format()पद्धति का उपयोग कर (चूक के साथ .format () प्रदान करता है):

 '{}{}'.format(s, i)

या पुराने, लेकिन "अभी भी चारों ओर चिपके हुए" %-

 '%s%d' %(s, i)

ऊपर के दोनों उदाहरणों में , दो मदों के बीच कोई स्थान नहीं है। यदि स्थान की आवश्यकता है, तो इसे प्रारूप स्ट्रिंग्स में जोड़ा जा सकता है।

ये मदों को कैसे नियंत्रित करें, उनके बीच की जगह आदि के बारे में बहुत सारे नियंत्रण और लचीलापन प्रदान करते हैं। प्रारूप विनिर्देशों के बारे में जानकारी के लिए इसे देखें


14

पायथन एक दिलचस्प भाषा है जिसमें किसी भी कार्य को पूरा करने के लिए आमतौर पर एक (या दो) "स्पष्ट" तरीके होते हैं, फिर भी लचीलापन मौजूद होता है।

s = "string"
i = 0

print (s + repr(i))

उपरोक्त कोड स्निपेट Python3 सिंटैक्स में लिखा गया है, लेकिन प्रिंट के बाद कोष्ठकों को हमेशा अनुमति दी गई (वैकल्पिक) जब तक कि संस्करण 3 ने उन्हें अनिवार्य नहीं बना दिया।

उम्मीद है की यह मदद करेगा।

केटलीन


5

प्रारूप () विधि का उपयोग स्ट्रिंग और पूर्णांक को समतल करने के लिए किया जा सकता है

print(s+"{}".format(i))


0

अजगर 3.6 और नए में, आप इसे इस तरह से प्रारूपित कर सकते हैं:

new_string = f'{s} {i}'
print(new_string)

या केवल:

print(f'{s} {i}')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.