मैं अपना होमवर्क खत्म करने की कोशिश कर रहा हूं, लेकिन आवश्यक हिस्टोग्राम फ़ंक्शन को शामिल करने में कठिनाइयों का सामना करना पड़ रहा है।

यह वह कोड है जिसके साथ मुझे काम करना है:

alphabet = "abcdefghijklmnopqrstuvwxyz"
test_dups = ["zzz","dog","bookkeeper","subdermatoglyphic","subdermatoglyphics"]
test_miss = ["zzz","subdermatoglyphic","the quick brown fox jumps over the lazy dog"]

def histogram(s):
     d = dict()
     for c in s:
          if c not in d:
               d[c] = 1
          else:
               d[c] += 1
     return d

मुझे has_duplicates() नामक एक फ़ंक्शन लिखने की आवश्यकता है जो एक स्ट्रिंग पैरामीटर लेता है और True देता है यदि स्ट्रिंग में कोई दोहराए गए वर्ण हैं। अन्यथा, इसे False वापस करना चाहिए।

ऊपर दिए गए histogram() फ़ंक्शन का उपयोग करके हिस्टोग्राम बनाकर has_duplicates() लागू करें। अपनी पाठ्यपुस्तक में दिए गए has_duplicates() के किसी भी कार्यान्वयन का उपयोग न करें। इसके बजाय, आपके कार्यान्वयन को यह तय करने के लिए हिस्टोग्राम में गणनाओं का उपयोग करना चाहिए कि क्या कोई डुप्लिकेट है या नहीं।

दी गई test_dups सूची में स्ट्रिंग्स पर एक लूप लिखें। सूची में प्रत्येक स्ट्रिंग को प्रिंट करें और उस स्ट्रिंग के लिए has_duplicates() के रिटर्न मान के आधार पर उसके पास कोई डुप्लीकेट है या नहीं। उदाहरण के लिए, aaa और abc के लिए आउटपुट निम्न होगा।

aaa has duplicates
abc has no duplicates

Test_dups में प्रत्येक स्ट्रिंग के लिए उपरोक्त में से किसी एक की तरह एक लाइन प्रिंट करें।

missing_letters नामक एक फ़ंक्शन लिखें जो एक स्ट्रिंग पैरामीटर लेता है और वर्णमाला के सभी अक्षरों के साथ एक नया स्ट्रिंग देता है जो तर्क स्ट्रिंग में नहीं हैं। लौटाई गई स्ट्रिंग में अक्षर वर्णानुक्रम में होने चाहिए।

मेरे कार्यान्वयन को histogram() फ़ंक्शन से हिस्टोग्राम का उपयोग करना चाहिए। इसे वैश्विक चर alphabet का भी उपयोग करना चाहिए। इसे इस वैश्विक चर का सीधे उपयोग करना चाहिए, न कि किसी तर्क या स्थानीय प्रति के माध्यम से। इसे alphabet के अक्षरों पर लूप करना चाहिए ताकि यह निर्धारित किया जा सके कि इनपुट पैरामीटर से कौन से गायब हैं।

फ़ंक्शन missing_letters को लापता अक्षरों की सूची को एक स्ट्रिंग में जोड़ना चाहिए और उस स्ट्रिंग को वापस करना चाहिए।

टेस्ट_मिस सूची में स्ट्रिंग्स पर एक लूप लिखें और प्रत्येक स्ट्रिंग के साथ missing_letters पर कॉल करें। लापता अक्षरों को सूचीबद्ध करने वाली प्रत्येक स्ट्रिंग के लिए एक लाइन प्रिंट करें। उदाहरण के लिए, स्ट्रिंग "आआ" के लिए, आउटपुट निम्न होना चाहिए।

Aaa में अक्षर गायब हैं

यदि स्ट्रिंग में alphabet में सभी अक्षर हैं, तो आउटपुट को यह कहना चाहिए कि यह सभी अक्षरों का उपयोग करता है। उदाहरण के लिए, स्ट्रिंग alphabet के लिए आउटपुट स्वयं निम्न होगा।

"abcdefghijklmnopqrstuvwxyz uses all the letters"

Test_miss में प्रत्येक स्ट्रिंग के लिए उपरोक्त में से किसी एक की तरह एक लाइन प्रिंट करें।

यह उतना ही है जितना मुझे मिला...

def has_duplicates(t):
    if histogram(t) > 1:
        return True
    else:
        return False

नतीजा:

'>' not supported between instances of 'str' and 'int'
1
Tyler Davider 23 अक्टूबर 2019, 04:18
मुझे एहसास है कि मुझे निश्चित रूप से यहां सामान्य अवधारणाओं की समझ की कमी है, लेकिन अगर कोई कुछ मार्गदर्शन प्रदान कर सकता है, तो मैं वास्तव में इसकी सराहना करता हूं। आपसे मेरे लिए असाइनमेंट पूरा करने के लिए नहीं कह रहा हूं, क्योंकि मैं वास्तव में सीखना चाहता हूं कि कैसे, लेकिन मैं हिस्टोग्राम मानों को एक int में कैसे परिवर्तित करना शुरू करूं ताकि has_duplicates फ़ंक्शन सफलतापूर्वक निष्पादित हो जाए?
 – 
Tyler Davider
23 अक्टूबर 2019, 04:19
क्या आपने उस कोड का परीक्षण किया है जो उन्होंने आपको पहले दिया था यह देखने के लिए कि यह क्या लौटाता है?
 – 
MyNameIsCaleb
23 अक्टूबर 2019, 04:32
1
मुझे यकीन नहीं है कि आपको वह त्रुटि कैसे मिल रही है। आपके द्वारा पोस्ट किया गया हिस्टोग्राम फ़ंक्शन एक dict देता है
 – 
MyNameIsCaleb
23 अक्टूबर 2019, 04:34
1
आईएमओ आपको अपने प्रश्न को संपादित करें चाहिए और जो आप पूछ रहे हैं उसका दायरा कम करें क्योंकि यह अभी खड़ा है, यह आपके जैसा लगता है पूरे असाइनमेंट के लिए कोड चाहते हैं।
 – 
martineau
23 अक्टूबर 2019, 04:40
आपका हिस्टोग्राम एक शब्दकोश देता है। आपको मानों पर लूप करना होगा और जांचना होगा कि कोई> 1. (उदाहरण के लिए def has_duplicates(t): कोई भी (v> 1 k के लिए, v हिस्टोग्राम (t).items ()) में वापस करें।
 – 
DarrylG
23 अक्टूबर 2019, 04:58

2 जवाब

निम्नलिखित वांछित परिणाम प्रदान करना चाहिए:

alphabet = "abcdefghijklmnopqrstuvwxyz"
test_dups = ["zzz","dog","bookkeeper","subdermatoglyphic","subdermatoglyphics"]
test_miss = ["zzz","subdermatoglyphic","the quick brown fox jumps over the lazy dog"]

def histogram(s):
     d = dict()
     for c in s:
          if c not in d:
               d[c] = 1
          else:
               d[c] += 1
     return d

def has_duplicates(s):
    # Return False if each letter in s is not distinct
    return len(histogram(s)) != len(s)

def missing_letters(s):
    h = histogram(s)
    rv = ''
    # Loop over letters in alphabet, if the letter is not in the histogram then
    # append to the return string.
    for c in alphabet:
        if c not in h:
            rv = rv + c
    return rv

# Loop over test strings as required.
for s in test_miss:
    miss = missing_letters(s)
    if miss:
        print(f"{s} is missing letters {miss}.")
    else:
        print(f"{s} uses all the letters.")

आउटपुट:

zzz is missing letters abcdefghijklmnopqrstuvwxy.
subdermatoglyphic is missing letters fjknqvwxz.
the quick brown fox jumps over the lazy dog uses all the letters.
0
CDJB 22 नवम्बर 2019, 17:06
alphabet = "abcdefghijklmnopqrstuvwxyz"
test_dups = ["zzz", "dog", "bookkeeper", "subdermatoglyphic", "subdermatoglyphics"]
test_miss = ["zzz", "subdermatoglyphic", "the quick brown fox jumps over the lazy dog"]


def histogram(string):
    d = dict()
    for char in string:
        if char not in d:
            d[char] = 1
        else:
            d[char] += 1
    return d


# Part 1
def has_duplicate(string):
    h = histogram(string)
    for k, v in h.items():
        if v > 1:
            return True
    return False


for string in test_dups:
    if has_duplicate(string):
        print(string, "has duplicates")
    else:
        print(string, "has no duplicates")

# Part 2


def missing_letters(string):
    h = histogram(string)
    new_list = []
    for char in alphabet:
        if char not in h:
            new_list.append(char)
    return "".join(new_list)


for string in test_miss:
    new_list = missing_letters(string)
    if len(new_list):
        print(string, "is missing letters", new_list)
    else:
        print(string, "uses all letters")
0
Kasem777 3 जिंदा 2020, 18:26