2016-06-15 12 views
-1

学校プロジェクトの一環として、トラブルシューティングプログラムを作成しています。リスト内の項目のテスト - Python 3

begin=['physical','Physical','Software','software',] 
answer=input() 
if answer in begin[2:3]: 
    print("k") 
    software() 
if answer in begin[0:1]: 
    print("hmm") 
    physical() 

私はソフトウェア/ソフトウェアを入力しようとすると出力が作成されません。誰も私のコードの穴をそのまま見ることができますか?

+1

あなたの入力は何ですか?サンプル入力と期待される出力を提供する。 「[mcve]とは何か」を参照してください。 –

+0

ソフトウェア/ソフトウェアを入力しようとすると –

+0

また、入力は回答 –

答えて

3

Pythonでは、スライスの終了値はです。

>>> begin=['physical','Physical','Software','software',] 
>>> begin[2:3] 
['Software'] 
>>> begin[0:1] 
['physical'] 

使用begin[2:4]begin[0:2]あるいはbegin[2:]begin[:2]が最後まで第三からすべての要素を取得するには、最初から(包括的)第2回まで:あなたはあなたが思うよりも小さいリストをスライスされています。

いっそ
>>> begin[2:] 
['Software', 'software'] 
>>> begin[2:4] 
['Software', 'software'] 
>>> begin[:2] 
['physical', 'Physical'] 
>>> begin[0:2] 
['physical', 'Physical'] 

、あなたが提供する必要がある入力数を制限するstr.lower()を使用します。

if answer.lower() == 'software': 

テストする文字列が1つだけなので、関数を辞書に入れることができます。

options = {'software': software, 'physical': physical} 

while True: 
    answer = input('Please enter one of the following options: {}\n'.format(
     ', '.join(options)) 
    answer = answer.lower() 
    if answer in options: 
     options[answer]() 
     break 
    else: 
     print("Sorry, {} is not a valid option, try again".format(answer)) 
0

リストのスライスが間違っているため、次のスクリプトを試してみてください。

begin=['physical','Physical','Software','software',] 
answer=input() 
if answer in begin[2:4]: 
    print("k") 
    software() 
if answer in begin[0:2]: 
    print("hmm") 
    physical() 
関連する問題