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?
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)
#!/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')
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')
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?
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)
#!/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')
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')