web-dev-qa-db-ja.com

cs50の読みやすさpset6 pythonこのコードは、Word、文、文字の数をカウントする必要がありますが、カウントしませんでした

from cs50 import get_string
letter=0
sentence=0
Word=0
text = get_string("Text: ")
n = len(text)
for i in range(n):
    if text[i].isalnum()==True:
        letter=letter+1
for i in range(n):
    if text[i].isspace()==True and text[i+1].isalnum()==True:
        Word=word+1
for i in range(n):
    if text[i]=="?" or text[i]=="." or text[i]=="!":
        sentence=sentence+1
grade = round (0.0588 * ((100 * letter) / Word) - 0.296 * ((100 * sentence) / Word) - 15.8)
if grade<1:
    print("Before Grade 1")
Elif grade < 16:
    print(f"Grade {grade}")
else :
    print("Grade 16+");

https://submit.cs50.io/check50/d3897b249b2ca6ea937d023c25c1607af52ea5cd チェックが不良

私はそれで何か間違ったことをするかもしれません

1
adel

1)Wordを1に初期化。 2)文字が任意の小文字/大文字であると想定するために次を追加しました:for i in range(n):if text [i] .isalnum()またはtext [i] .isupper()またはtext [i] .islower ()== True:レター= letter + 1 3)Word count:およびtext [i + 1] .isalnum()== Trueから削除されました:

今あなたのコードは10/10です!

0
New to

プログラムが単語を数える方法にはいくつかの問題があります。それはスペースを数えることによってそうしています(良い計画)が、

  1. 最後の単語はどのようにカウントされますか?それはしません(スペースが「後に続く」わけではないため)。 Wordを(0ではなく)1に初期化することを検討できます。
  2. 次の文章の単語を正しく数えますか?繰り返しますが、違います。このif text[i].isspace()==True and text[i+1].isalnum()==True:は、a-z、A-Z、または0-9が後に続くスペースのみをカウントします。この場合、「アリス」の後のスペースはカウントされないため、ワードカウントは正しくありません。

アリスは「絵も会話もなしで?」と思った。

補足:iループでi + 1にアクセスすることは、一般的に非常に悪い考えです。最大に達すると範囲外になります。テストされたテキストがスペースで終わっていないため、テストに失敗していません。失敗する場合は、スペースで終わるテキストを入力してください。

0
DinoCoderSaurus

Wordを1に初期化して、CLIの前の「丸め」を削除し、最後から2番目の印刷ステートメントに丸めを追加します。例:{round(grade)}

私は同様のコードを持っていて、私のために働いた。

0
mattthew_james

すばらしい仕事です。ここに最後の部分を追加するだけで修正しました。

if text[i]=="?" or text[i]=="." or text[i]=="!" or text[i]==":":
0
Rakel