Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I wrote a function that works fine but when I write an assertion code for it, it gives an assertion error. My only problem with this code is to fix the assertion error.

def frequency(x, y):
    '''Get the frequency (the number of occurrences) of an element in a sequence.
     : param sequence: the sequence in which the element must be counted
     : param element: the element whose frequency we want to obtain
     : return: the frequency of the element in the sequence'''
    a = list(x)
    print(a.count(y))

def test_frequency():
    # Tests
    assert frequency('texts', 'e') == 1
    assert frequency('texts', 'a') == 0
    assert frequency('texts', 's') == 1
    assert frequency('texts', 't') == 2
    # limit tests
    assert frequency('ttt', 't') == 3
    assert frequency('', 'x') == 0

    print('test_frequency: ok')

test_frequency()
frequency(x = input("Enter a word: "), y = input("Enter a letter(symbol): "))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
237 views
Welcome To Ask or Share your Answers For Others

1 Answer

The trivial problem is that the function prints it's values, rather than returning them.

Python has some rather dubious behavior of returning None whenever a function end with no return statement which leads to such unfortunate bugs.

The solution would be to end on return a.count(y) rather than on print(a.count(y)).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...