2016-03-30 3 views
-3

これは私のgcseコンピューティングの制御assesmentのためのコードです。私はユーザーが質問に答えるようにしようとすると、Pythonは特定の単語(ファイルに保存されている単語と同じです)を取り出し、それをソリューションにリンクします。forループを使用した後にコードが停止するのはなぜですか

global line 
global userinput 
global word 
def main(): 
    global userinput 
    name=input("What is your name") 
     print("Hello " +name+ " and welcome to our troubleshooting system!") 
    userinput=input("What is the problem with your mobile device?") 
    userinput=userinput.split() 
    if userinput=="": 
     print("Please try again") 
    power_problems() 

def power_problems(): 
    global word 
    global line 
    global userinput 
    with open("keywords_1","r+") as datafile_1: 
    datafile_1.read() 
     for line in datafile_1: 
      if "userinput" in line: 
       print("Hold the restart button for 30 seconds") 
      else: 
       phone_problems() 

def phone_problems(): 
    global word 
    global line 
    global userinput 
    with open("keywords_2", "r+") as datafile_2: 
    datafile_2.read() 
     for line in datafile_2: 
      if "userinput" in line: 
       print("Take the phone to the manufacturer to get a replacement") 
if __name__ == '__main__': 
    main() 

私の問題のコードは、関数の中で使用されるループのための「power_problems」の後、実行を停止して

+0

「停止中」とはどういう意味ですか?エラー出力はありますか? – Querenker

+0

"userinput"の値は実際にファイル内のどの行にもありますか?また、各関数に変数を渡し、必要がない限りそれらをグローバルに使用しないでください。 – Aaron

+0

'power_problems'を呼び出す' main'を呼び出します。 'power_problems'が返ってくると' main'が返ります。今あなたはスクリプトのすべての終わりにいるので、終了します。 – tdelaney

答えて

0
  1. datafile_1.read()datafile_1.read()

  2. であなたのインデントをチェックし、なぜ私にはわからないということです
  3. with open("keywords_1","r+") as datafile_1 - ファイルタイプを指定せずにファイル名を入力したため、このようなファイルやディレクトリがないために機能が停止します。

  4. global変数を使用しないようにしてください。は安全ではありませんです。

+0

ファイルタイプが "r +"だと思いましたか? –

+0

ファイルタイプは.txt、.dat、.docx ....で、 "r +"はオープン関数のモードです。https://docs.python.org/3/library/functions.html?highlight=open #open –

+0

ファイルを( "keywords_1.txt"、r +)に変更しましたが、コードはまだ停止し、エラーメッセージは表示されず、ただ停止して何も印刷されません –

関連する問題