简体   繁体   中英

How do I count up the number of letter pairs in python?

I am making a program in python that count up the number of letter pairs. For example ------> 'ddogccatppig' will print 3, 'a' will print 0, 'dogcatpig' will print 0, 'aaaa' will print 3, and 'AAAAAAAAAA' will print 9. My teacher told me to use a for loop to get the i and i+1 index to compare. I do not know how to do this, and I am really confused. My code:

def count_pairs( word ):

  pairs = 0
  chars = set(word)

  for char in chars:
      pairs += word.count(char + char)

  return pairs

Please help me.!! Thank you.

The for loop is only to iterate through the appropriate values of i , not directly to do the comparison. You need to start i at 0, and iterate through i+1 being the last index in the string. Work this out on paper.

Alternately, use i-1 and i ; then you want to start i-1 at 0, which takes less typing:

for i in range(1, len(word)):
    if word[i] == word[i-1]:
        ...

Even better, don't use the counter at all -- make a list of equality results and count the True values:

return sum([word[i] == word[i-1] for i in range(1, len(word))])

This is a bit of a "dirty trick" using the fact that True evaluates as 1 and False as 0.

If you want to loop over indices instead of the actual characters, you can do:

for i in range(len(word)):
    # do something with word[i] and/or word[i+1] or word[i-1]

Converting the string to a set first is counterproductive because it removes the ordering and the duplicates, making the entire problem impossible for two different reasons. :)

Here is an answer:

test = "ddogccatppig"

def count_pairs(test):
  counter = 0
  for i in range(0,len(test)-1):
    if test[i] == test[i+1]
      counter+=1
  return counter

print(count_pairs(test))

Here you iterate through the length of the string (minus 1 because otherwise you will get an index out of bounds exception). Add to a counter if the letter is the same as the one in front and return it.

This is another (similar) way to get the same answer.

def charPairs(word):
    word = list(word)
    count = 0

    for n in range(0, len(word)-1):
        if word[n] == word[n+1]:
            count +=1

    return count
       

print(charPairs("ddogccatppig"))
print(charPairs("a"))
print(charPairs("dogcatpig"))
print(charPairs("aaaa"))
print(charPairs("AAAAAAAAAA"))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM