0

文字列を取り込んでリストに分割し、再帰を使用して文字列の逆バージョンを生成し、検索語が出現する回数をカウントする関数を作成して、再帰とリストの使用を練習しようとしています。リストで。つまり、ユーザーが「The quick brown fox」と入力し、その文で「duck」がどのくらいの頻度で出現するかを知りたい場合、プログラムは「fox brown quick The」を出力し、その後に「duck is」の回数が続きます。見つかった (この場合は 0) 私のコードは今のところ動作しているように見えますが、REVERSE 関数と COUNT 関数の結果は出力されません。

この関数は、文字列内の要素の順序を逆にします

def REVERSE(strng):
    new_list=''
#base case
    if len(strng)==0:
        return new_list+""
#recursive call
#returns the first element in the string, and adds it to the end of the rest of the string called recursively from the second element
    else:
        new_list+=REVERSE(strng[1:]) + strng[0]
        return new_list
    print (new_list)

文字列内の部分文字列の出現回数をカウントする関数

def COUNT(strng,srch):
        count=0
    #base case
        if len(strng)==0:
            return count
    #recursive call in event search term found in the first element of the list
        elif strng[0]==srch:
            count+=1
            return COUNT(strng[1:],srch)
    #recursive call in event search term not found in first element of list
        else:
            count+=0
            return COUNT(strng[1:],srch)   
        print ("The term" + srch + "occurs" + count + "times")

これは、これら 2 つの関数を呼び出すプログラムです。インポートなどを練習するために、それらを別々のファイルに保管しています

from functions import *
def main():
        terms = input ("Enter the list of terms:\n").split(" ")
    query = input("Enter a query term:\n")
    print("List in reverse order:")
    REVERSE(terms)
    print()
    COUNT(terms, query)
main()
4

2 に答える 2

0

との両方がこれらの print ステートメントを実行することはありません。実行が s に達する前に常にREVERSE実行されます。COUNTreturnprint

printから不要な を削除し、代わりにそれらの戻り値を出力することをお勧めします。REVERSECOUNTmain

def main():
terms = input ("Enter the list of terms:\n").split(" ")
query = input("Enter a query term:\n")
print("List in reverse order:")
print(REVERSE(terms))
print()
print(COUNT(terms, query))
于 2013-04-28T05:47:11.093 に答える
0

これまでのところ、次のことが役立つようです。

#!/usr/bin/python

def REVERSE(strng):
    new_list=''
    #base case
    if len(strng)==0:
        new_list+=""
    #recursive call
    #returns the first element in the string, and adds it to the end of the rest of the string called recursively from the second element
    else:
        new_list+=REVERSE(strng[1:]) + strng[0] + " "
    return new_list


def COUNT(strng,srch):
        count=0
        #base case
        if len(strng)==0:
            count = 0
        #recursive call in event search term found in the first element of the list
        elif strng[0]==srch:
            count+=1
            COUNT(strng[1:],srch)
        #recursive call in event search term not found in first element of list
        else:
            count+=0
            COUNT(strng[1:],srch)
        return count

if __name__ == '__main__':
    terms = input ("Enter the list of terms:\n").split(" ")
    query = input("Enter a query term:\n")
    print("List in reverse order: %s" % REVERSE(terms))
    print ("The term '%s' occurs %d times." % (query, COUNT(terms, query)))
于 2013-04-28T06:04:22.753 に答える