How to generalize a function by adding arguments?

Question:

I am completing a beginner’s Python book.
I think I understand what the question is asking.

Encapsulate into a function, and generalize it so that it accepts the string and the letter as arguments.

fruit = "banana"
count = 0
for char in fruit:
    if char == 'a':
        count += 1
print count

My answer is:

def count_letters(letter, strng):
    fruit = strng
    count = 0
    for char in fruit:
        if char == letter:
            count += 1
    print count

count_letters(a, banana)

But it is wrong: name ‘a’ is not defined. I don’t know where I’m going wrong.
I thought the interpreter should know that ‘a’ is the argument for ‘letter’, and so on.

So I must be missing something fundamental.

Can you help?

Asked By: BBedit

||

Answers:

a and banana are variable names. Since you never defined either of them (e.g. a = 'x'), the interpreter cannot use them.

You need to wrap them in quotes and turn them into strings:

count_letters('a', 'banana')

Or assign them beforehand and pass the variables:

l = 'a'
s = 'banana'

count_letters(l, s)
Answered By: Blender
#!/usr/bin/python2.7

word = 'banana'

def count(word, target) :
    counter = 0
    for letter in word :
        if letter == target :
            counter += 1
    print 'Letter', letter, 'occurs', counter, 'times.'

count(word, 'a')
Answered By: noobninja

this is with Python 3:

def count_letters(letter, strng):
count = 0
for char in letter:
    if char == strng:
        count += 1
print(count)
a = input("Enter the word: ")
b = input("Enter the letter: ")
count_letters(a, b)
def count_letters(letter, strng):
   fruit = strng
   count = 0
   for char in fruit
      if char == letter:
         count = count + 1
         print(count)
         count_letters('a', 'banana')    
Answered By: Sharad Saini
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.