2016-11-23 10 views
0

私はプログラミングの初心者です。私はユーザーが文を入力できるプログラムを作成しようとしており、プログラムはその文の中にいくつの文字があるかをユーザに伝える。Pythonプログラミングの文字列処理関数

counter=0 

wrd=raw_input("Please enter a short sentence.") 

if wrd.isalpha(): 
counter=counter+1 
print "You have" + str(counter) +"in your sentence." 

これを入力すると、出力は空白になります。このプログラムの私の間違いは何ですか?

+0

あなたは私が考える1 'インデント 'カウンタ=カウンタを持っていません+。これ以外にも、ループを使っているわけではありません。 – martianwars

+0

'len()'を使用できますか?これは、あなたが何を記述するのが最も簡単で最速の方法です。もちろん、あなたの文章のすべての非文字をフィルタリングする必要があります。 –

答えて

0

まず、@ kalpeshが述べたように、counter=counter+1は字下げする必要があります。

第2に、入力した文字列全体を繰り返し処理し、必要なロジックの文字数を数えなければなりません。

counter=0 

wrd=raw_input("Please enter a short sentence.") 

for i in wrd: 
    if i.isalpha(): 
     counter = counter+1 

print "You have " + str(counter) +"in your sentence." 

あなたは、あなたは以下のコードを使用することができ、より多くの学習を開始すると

、私はちょうどそれがアルファであるかどうかをチェックし、反復するリスト内包を使用してその単語を分割しています

counter=[] 
count = 0 
wrd=raw_input("Please enter a short sentence.") 

counter = [len(i) for i in wrd.split() if i.isalpha()] 

print "You have " + str(sum(counter)) +"in your sentence." 

入力された文字列に対して

0

wrd.isalpha()はブール値(trueまたはfalse)を返します。したがって、関数がtrueを返すと、counter = counter + 1が1回呼び出されます(1回のみ)。 wrdのすべての文字を繰り返し処理し、各文字にisalpha()を呼び出す必要があります。

1

ifブロック内にインデントする必要があります。あなたが提供したコードでは、インデントを忘れたcounter = counter + 1

wrdのすべての文字にループがありません。代わりにこれを試してみてください。

counter = 0 
wrd = raw_input("Please enter a short sentence.") 
# Iterate over every character in string 
for letter in wrd: 
    # Check if the letter is an alphabet 
    if letter.isalpha(): 
    # Increment counter only in this condition 
    counter += 1 

print "You have " + str(counter) + " in your sentence." 
0

replace()を使用して文章からスペースを削除してからlen()を使用して、文章中の文字数を取得することができます。例えば

sentence = input("Type in a sentence: ") # Ask the user to input a sentence 
sentence = sentence.replace(" ", "") # Replace the spaces in the sentence with nothing 
print("Your sentence is " + str(len(sentence)) + " characters long") # Use len() to print out number of letters in the sentence 
関連する問題