2017-07-21 7 views
-1

私はPythonを実践するための簡単なスクリプトを作成しています。名前の文字数もカウントし、ハイフンとスペースも検出します。しかし、私は問題
コード例があります:ユーザーがテキストの両方のスペースとハイフンを書きはハイフンとスペースの両方をpythonで入力から検出しますか?

text = input('enter hyphen and space:') 
if '-' in text: 
    print('hyphen in text') 
elif ' ' in text: 
    print('space in text') 
elif ' ' and '-' in text: 
    print('hyphen and space in text') 
else: 
    print('Nothing :(') 

を、それは私がこれを防ぐにはどうすればよいhyphen in text
言いますか?
メインコード:上部に複雑な条件を設定

name = input('Enter your name:') 
from time import sleep 
if ' ' in name: 
    print('Looks like your name contain spaces') 
    sleep(0.6) 
    op1 = input('Count spaces in it? y/n\n') 
    sleep(0.6) 
    if op1.lower() == 'y': 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op1.lower() != 'y': 
     name = name.replace(' ','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
elif '-' in name: 
    print('Looks like your name contain hyphens (-)') 
    sleep(0.6) 
    op = input('Count hyphens in it? y/n\n') 
    sleep(0.6) 
    if op.lower() == 'y': 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op.lower() != 'y': 
     name = name.replace('-','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
if '-' and ' ' in name: 
    print('Looks like your name contain both hyphen/s and space/s') 
    sleep(0.6) 
    print('options:\n') 
    sleep(0.8) 
    print('1) Count hyphen/s') 
    print('2) Count space/s') 
    print('3) Count both') 
    print('4) Skip both') 
    sleep(1) 
    op = input('1/2/3 \nEnter your choice:') 
    op = op.lower() 
    sleep(0.6) 
    if op == '1': 
     name = name.replace(' ','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op == '2': 
     name = name.replace('-','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op == '3': 
     print('Numbers in your name: ',name) 
    if op == '4': 
     name = name.replace('-','') 
     name = name.replace(' ','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
else: 
    name = len(name) 
    print('Numbers in your name: ',name) 
+0

ただ、テストテキスト内のスペースとハイフンの両方の場合のようにする必要があります。私。スペースとハイフンならスペース、そうでなければハイフン。 – SuperShoot

+0

'if 'と' 'in text'のみをテストすると、'ハイフンとスペースが空白になります。 ' –

+0

下記の@ AzatIbrakovの答えをご覧ください。 – SuperShoot

答えて

2

' 'があるので、textで唯一のハイフンがある場合

' ' and '-' in text 

Trueになりますので、またin textをチェック複製することを忘れないでくださいTrueのような文字列の場合は、次のようにします。

' ' in text and '-' in text 

最後に、我々は

if ' ' in text and '-' in text: 
    print('hyphen and space in text') 
elif '-' in text: 
    print('hyphen in text') 
elif ' ' in text: 
    print('space in text') 
else: 
    print('Nothing :(') 
2

のようなものを持つことができ、あなたの入力はif文に流入すると、最初の条件がチェックされています。その条件は'-' in textであり、の場合はTrueと評価され、if文が終了します。私たちが探しているのは、まず最も具体的なケース、つまり' ' and '-' in textを調べることです。だから、正しいプログラムは次のようになります。つまりif '-' in textハイフンとスペースの両方があるあなたの例の場合のように、場合、それは常に最初に入るであろうから、あなたの条件文の

text = input('enter hyphen and space:') 
if ' ' in text and '-' in text: 
    print('hyphen and space in text') 
elif '-' in text: 
    print('hyphen in text') 
elif ' ' in text: 
    print('space in text') 
else: 
    print('Nothing :(') 
+1

最初のステートメントはテキストの 'if 'と' text'の ' - 'であるべきです – SuperShoot

+1

ああ、ありがとう – mattjegan

1

ご注文は、ここで問題です。また、両方のケースをチェックする条件がelifにあるため、決して実行されません。

したがって、最初に " " and "_" in textの条件が必要です。

elif(オプション)はelseが順番に動作し、条件に基づいてブロックの一部だけが実行されることを常に覚えておいてください。

注:非文字列入力が整数のように指定されていると、コードによってエラーがスローされます。だから私はraw_inputを追加しました。あなたはいつもこの型キャストをあなたの望むデータ型に使うことができますし、同じものに対して例外処理を使うことさえできます。

だからあなたの実際のコードは、この、最初

name = raw_input('Enter your name:') 
from time import sleep 
if '-' and ' ' in name: 
    print('Looks like your name contain both hyphen/s and space/s') 
    sleep(0.6) 
    print('options:\n') 
    sleep(0.8) 
    print('1) Count hyphen/s') 
    print('2) Count space/s') 
    print('3) Count both') 
    print('4) Skip both') 
    sleep(1) 
    op = input('1/2/3 \nEnter your choice:') 
    op = op.lower() 
    sleep(0.6) 
    if op == '1': 
     name = name.replace(' ','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op == '2': 
     name = name.replace('-','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op == '3': 
     print('Numbers in your name: ',name) 
    if op == '4': 
     name = name.replace('-','') 
     name = name.replace(' ','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
elif ' ' in name: 
    print('Looks like your name contain spaces') 
    sleep(0.6) 
    op1 = input('Count spaces in it? y/n\n') 
    sleep(0.6) 
    if op1.lower() == 'y': 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op1.lower() != 'y': 
     name = name.replace(' ','') 
     name = len(name) 
     print('Numbers in your name: ',name) 
elif '-' in name: 
    print('Looks like your name contain hyphens (-)') 
    sleep(0.6) 
    op = input('Count hyphens in it? y/n\n') 
    sleep(0.6) 
    if op.lower() == 'y': 
     name = len(name) 
     print('Numbers in your name: ',name) 
    if op.lower() != 'y': 
     name = name.replace('-','') 
     name = len(name) 
     print('Numbers in your name: ',name) 

else: 
    name = len(name) 
    print('Numbers in your name: ',name) 
関連する問題