किसी सूची में विशिष्ट वर्ण ढूंढना


11

लक्ष्य उपयोगकर्ता के पैराग्राफ से एक सूची बनाना और पुनरावृत्ति करना है ताकि मैं यह गिन सकूं कि कितने शब्दों में विशेष अक्षर "j, x, q, z" हैं।

उदाहरण इनपुट:
जमीन के एक छेद में एक हॉबी रहता था। न ही गंदा, गंदा, गीला छेद, कीड़ों के सिरों से भरा हुआ और एक गन्दा गंध, और न ही अभी तक एक सूखी, नंगे, रेतीले छेद के साथ इसमें कुछ भी नहीं है या खाने के लिए नहीं; यह एक हॉबी-होल था, और इसका मतलब है कि आराम।

उदाहरण आउटपुट: एक दुर्लभ चरित्र के साथ 1 शब्द

मैंने वह कोड शुरू किया है जहां मैं उपयोगकर्ता के पैराग्राफ को सूची में तोड़ता हूं लेकिन मुझे सूची के माध्यम से पुनरावृत्ति करने और विशेष अक्षरों के प्रत्येक उदाहरण को खोजने में कठिन समय लगता है।

अभी तक मेरे पास इतना ही है:

def rareChar(words):
    rareWords = 0
    rareChars = ['j', 'x', 'q', 'z']
    for astring in words:
        wds = words.split()
        for char in wds:
            if char in rareChars:
                rareWords = rareWords + 1
    return rareWords

def CoolPara(words):
    print(rareChar(words), 'word(s) with a rare character')

    # DO NOT CHANGE CODE BELOW

    print(CoolPara(input("Enter: ")))

यदि मैं उदाहरण इनपुट के साथ चलता हूं, तो मुझे '0 शब्द (ओं) का एक दुर्लभ चरित्र के साथ आउटपुट मिलता है।' मैं इसे कैसे ठीक कर सकता हूं ताकि मुझे अपेक्षित आउटपुट मिल सके। किसी भी मदद की बहुत सराहना की जाएगी क्योंकि मैं अभी भी कोडिंग के लिए अपेक्षाकृत नया हूं

एक त्वरित टिप्पणी: मुझे केवल विभाजन के तरीकों / कार्यों () और लेन () का उपयोग करने की अनुमति है


.indexनौकरी करनी चाहिए
— bigbounty

आपको आउटपुट के माध्यम से चलना चाहिए और बयानों और सशर्तियों को पूरा करने के लिए कुछ प्रिंट स्टेटमेंट जोड़ना चाहिए।
— फॉलनरेपर

टाइपो। आंतरिक लूप के ऊपर की रेखा को wds = astring.split () नहीं होना चाहिए
— abhilb

का उद्देश्य क्या है for astring in words:?
— नोकॉक 2

चर नामों से मुझे लगता है कि आप भ्रमित हैं। "शब्दों में कसैले के लिए:" को शब्दों में शब्द के लिए बदल दें ।plit (): "। फिर "wds में char के लिए:" शब्द में char के लिए: "। और" wds = words.spl.pl () () को हटा दें।
— kantal

जवाबों:


4

शायद यह आपको कुछ अजगर सुविधाओं से परिचित कराने का अवसर हो सकता है:

from typing import List


def rare_char(sentence: str, rare_chars: List[str]=["j", "x", "q", "z"]) -> List[str]:
    return [word for word in sentence.split() if 
            any(char in word for char in rare_chars)]


def cool_para(sentence: str) -> str:
    return f"{len(rare_char(sentence))} word(s) with rare characters"

यह उत्तर उपयोग करता है:

  1. टाइपिंग , जिसका उपयोग तीसरे पक्ष के उपकरण जैसे कि चेकर, आईडीई, लिंटर के रूप में किया जा सकता है, लेकिन अधिक महत्वपूर्ण रूप से अन्य मनुष्यों को आपके इरादे स्पष्ट करने के लिए जो आपके कोड को पढ़ रहे होंगे।
  2. डिफ़ॉल्ट तर्क , फ़ंक्शन के अंदर उन्हें हार्डकोड करने के बजाय। अपने कार्यों का दस्तावेज़ीकरण करना बहुत महत्वपूर्ण है, ताकि एक उपयोगकर्ता परिणाम से आश्चर्यचकित न हो ( प्रिसेंस ऑफ़ लीस्ट एस्टोनमेंट )। आपके कोड को दस्तावेज़ करने के अन्य तरीके ( डॉकस्ट्रिंग्स देखें ) और उस इंटरफ़ेस को डिज़ाइन करने के अन्य तरीके हैं ( उदाहरण के लिए एक वर्ग हो सकता है ), लेकिन यह केवल बिंदु को प्रदर्शित करने के लिए है।
  3. सूची की समझ , जो अनिवार्य होने के बजाय आपके कोड को अधिक घोषणात्मक बना सकती है । अनिवार्य एल्गोरिदम के पीछे के इरादे को निर्धारित करना कठिन हो सकता है।
  4. स्ट्रिंग प्रक्षेप , जो मेरे अनुभव में समवर्ती से कम त्रुटि प्रवण है।
  5. मैंने कार्यों के नाम के लिए pep8 शैली गाइड का उपयोग किया , जो कि अजगर दुनिया में सबसे आम सम्मेलन है।
  6. अंत में, मुद्रण के बजाय मैंने फ़ंक्शन strमें वापस लौटा दिया cool_paraक्योंकि # DO NOT CHANGE CODE BELOWटिप्पणी के नीचे का कोड फ़ंक्शन कॉल के परिणाम को प्रिंट कर रहा है।

1
मेरे द्वारा अब तक देखे गए सबसे अच्छे कार्यान्वयन में से एक। अधिक पायथन नहीं हो सका। :-) मैं सिर्फ नाम बदलने होगा rare_chars()के find_rare_words()बजाय।
— 21

1

आदर्श रूप से आप सूची समझ का उपयोग करना चाहते हैं।

def CoolPara(letters):
  new = [i for i in text.split()]
  found = [i for i in new if letters in i]
  print(new) # Optional
  print('Word Count: ', len(new), '\nSpecial letter words: ', found, '\nOccurences: ', len(found))

CoolPara('f') # Pass your special characters through here

यह आपको देता है:

['In', 'a', 'hole', 'in', 'the', 'ground', 'there', 'lived', 'a', 'hobbit.', 'Not',
 'a', 'nasty,', 'dirty,', 'wet', 'hole,', 'filled', 'with', 'the', 'ends', 'of',
'worms', 'and', 'an', 'oozy', 'smell,', 'no', 'yet', 'a', 'dry,', 'bare,', 'sandy',
'hole', 'with', 'nothing', 'in', 'it', 'to', 'sit', 'down', 'on', 'or', 'to', 'eat;',
'it', 'was', 'a', 'hobbit-hole,', 'and', 'that', 'means', 'comfort']
Word Count:  52
Special letter words:  ['filled', 'of', 'comfort']
Occurences:  3

0
def rareChar(words):
rareWords = 0
rareChars = ['j', 'x', 'q', 'z']

#Split paragraph into words
words.split()
for word in words:
    #Split words into characters
    chars = word.split()
    for char in chars:
        if char in rareChars:
            rareWords = rareWords + 1
return rareWords

def CoolPara(words):
    #return value rather than printing
    return '{} word(s) with a rare character'.format(rareChar(words))


# DO NOT CHANGE CODE BELOW

print(CoolPara(input("Enter: ")))

इनपुट: हैलो यह चिड़ियाघर के बारे में एक वाक्य है

आउटपुट: एक दुर्लभ चरित्र के साथ 1 शब्द


0

निम्नलिखित कोड आपका एक संपादन है जिसके परिणामस्वरूप इसका उचित उत्तर मिलता है 1

def main():

    def rareChar(words):
        rareWords = 0
        rareChars = ['j', 'x', 'q', 'z']

        all_words = list(words.split())

        for a_word in all_words:
            for char in a_word:
                if char in rareChars:
                    rareWords = rareWords + 1
        return rareWords

    def CoolPara(words):
        print(rareChar(words), 'word(s) with a rare character')


    # DO NOT CHANGE CODE BELOW

    print(CoolPara(input("Enter: ")))

main()

उत्तर:

C:\Users\Jerry\Desktop>python Scraper.py
Enter: In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, no yet a dry, bare, sandy hole with nothing in it to sit down on or to eat; it was a hobbit-hole, and that means comfort.

1 word(s) with a rare character

0

यह कोड आपके लिए काम करेगा। शब्दों के इनपुट को अनरेमर्क करें और उन शब्दों के कथनों पर टिप्पणी करें जिन्हें मैंने कोड का परीक्षण करने के लिए उपयोग किया था।

पैरा विधि की जरूरत नहीं है।

def rareChar(words):
    rareWords = 0
    rareChars = ['j', 'x', 'q', 'z']
    for word in words:
        wds = word.split()
        for char in wds:
            if char in rareChars:
                rareWords = rareWords + 1
    return rareWords

words = 'john xray quebec zulu'
# words = (input("Enter: "))

x = rareChar(words)
print(f"There are {x} word(s) with a rare character")

0

एक पत्र के लिए बारब द्वारा दिया गया समाधान काम करता है:

CoolPara ( 'एफ')

लेकिन यह मूल पात्रों द्वारा पूछे गए मूल चरित्रों के साथ काम नहीं करता है। उदाहरण के लिए यह सही परिणाम नहीं लौटाता है:

CoolPara ( "jxqz")

यहाँ बार के समाधान का थोड़ा सुधार संस्करण है:

def CoolPara(letters):
    new = [i for i in text.split()]
    found = list()
    for i in new:
        for x in i:
            for l in letters:
                if x == l:
                    found.append(i)
    print("Special letter words: ", found)
    print("word(s) with rare characters ", len(found))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.