मैं पायथन सीखने में नया हूँ। और मैंने एक कोड लिखने के बारे में सोचा।

मैं चाहता हूं कि उपयोगकर्ता कुछ शब्दों को इनपुट करे, और मैं चाहता हूं कि प्रोग्राम आउटपुट के रूप में शब्दों की लंबाई दे।

words = [raw_input("Enter a name: ")]

def len_name(words):
    for x in words:
        print(x, len(x))

len_name(words)

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

Enter a name: aeroplane
('aeroplane', 9)

लेकिन अगर उपयोगकर्ता आउटपुट के रूप में दो शब्द देता है, तो यह निम्नलिखित देता है:

Enter a name: aeroplane, fish
('aeroplane, fish', 15)

मैं अलग-अलग शब्दों और उनकी लंबाई देने के लिए कोड ढूंढ रहा था।

मैंने क्या बिगाड़ा है?

0
Mayank Srivastava 4 अक्टूबर 2018, 18:45

3 जवाब

सबसे बढ़िया उत्तर

आपके वर्तमान कोड का एक सरल समाधान यह होगा कि आप एकाधिक शब्दों के लिए एक सूची न बनाएं क्योंकि वे सभी एक प्रविष्टि हैं, और फिर .split(', ') उस प्रविष्टि को जब len_name() पर पास किया गया और फिर जैसा आप कर रहे थे वैसा ही करें। for i in x. इसके अलावा कार्यों को एक मूल्य वापस करना चाहिए न कि केवल प्रिंट करना। एक संशोधित संस्करण होगा:

def len_name(x):
    lista = []
    for i in x.split(', '):
        lista.append((i, len(i)))
    return lista

words = input('Enter a name: ')
word_len = len_name(words)
for i in word_len:
    print(*i)
Enter a name: vash, the, stampede
vash 4
the 3
stampede 8

या सूची समझ और प्रिंट करने के लिए एक लूप का उपयोग कर रहे हैं

word_len = [(i, len(i)) for i in input('Enter a name: ').split(', ')]
for i in word_len:
    print(i[0], i[1])
0
vash_the_stampede 4 अक्टूबर 2018, 16:24

आप वर्तमान में एक पंक्ति में पढ़ रहे हैं, इसलिए यह इस बात की परवाह नहीं करता है कि रिक्त स्थान, या सामान्य अलग-अलग शब्दों आदि के संदर्भ में क्या है।

तो आपको स्प्लिट का उपयोग करके रीड इन लाइन को शब्दों में विभाजित करने की आवश्यकता है

0
lostbard 4 अक्टूबर 2018, 15:50

words = [raw_input("Enter a name: ")] इनपुट लेता है और उसे list में एकल तत्व के रूप में रखता है: ['aeroplane, fish']['aeroplane', 'fish'] प्राप्त करने के लिए, आपको split उपयुक्त सीमांकक के साथ इनपुट:

words = raw_input("Enter a name: ").split(', ')
# or a little more robustly wrt white space:
words = [w.strip() for w in raw_input("Enter a name: ").split(',')]
2
schwobaseggl 4 अक्टूबर 2018, 15:57