2016-09-11 19 views
0

私はCourserのコースを通してPythonを学びたいと思っています。今までのところ、私はできないと感じています。Python Coursera Assignement

私は割り当てに答えたくない、私は誰かが正しい方向に私をプッシュしたい。私が立ち往生し、オンラインチューターが既に割り当てに記載されている明白を繰り返すだけの助けがないので。割り当ては非常に簡単ですが、私は何が欠けているのか理解できません。

割り当ては次のとおりです。 ユーザが「完了」を入力するまで、繰り返し整数を入力するように求めるプロンプトを作成します。 「完了」が入力されると、数字のうち最大値と最小値を印刷します。ユーザーが有効な番号以外のものを入力した場合は、try/exceptでキャッチして適切なメッセージを出し、その番号を無視します。問題から5.1の番号を入力し、希望する出力を図のように一致させます。

ここで私のコードですが、ここでは最小値と最大値を得るために表示されるサンプルコードを使ってみましたが、問題はリストを持っていた例です。リストは必要ありません。しかし、numの値が常に新しい入力で変わるたびに、プログラムが格納されていない場合に、特定の数値から選択するようにするにはどうしたらよいですか?またはraw_inputにリストを入力できると思いますか?本から

while True: 
    inpt = raw_input("Enter a number: ") 
    if inpt == "done" : break 

    try: 
     num = int(inpt) 
    except: 
     print "Invalid input" 
    continue 

largest = None 
if largest is None: 
    largest = num 
elif num > largest: 
    largest = num 

smallest = None 
if smallest is None: 
    smallest = num 
elif num < smallest: 
    smallest = num 

print "Maximum is", largest 
print "Minimum is", smallest 

番号は4、5、7、ワード

ありがとうご支援のための誰も、は、私は私がする方法を理解していれば必ず、私がしなければならないものではありません理解していますそこに着いなさい、しかし私は座り、試み続けるつもりです。一方、私はインデントの問題だが、私はこのようなコードを書き直しましたし、whileループ

largest = None 
smallest = None 

while True: 
    inpt = raw_input("Enter a number: ") 
    if inpt == "done" : break 

    try: 
     num = int(inpt) 
    except: 
     print "Invalid input" 
    continue 

への声明文は継続して、内部と同じインデントで始める必要がある場合は場合は追加したいとしましょう 取得しています再びインデントされたの?私がそれをしたときにImがエラーを起こすので

+0

もちろん、何もしないで何とか数字を保存する必要があります。それらを読み込んでリストに挿入するだけです。現在の形であなたの最小最大計算で何が起こっていると思いますか?過去の情報はどこにありますか? **別の方法として、** min、maxの2つの変数を使用し、入力ごとにこれらの変数を更新します。これらの更新はwhileループ内にあります! – sascha

+0

信仰、若い魔法使いがいる。すべての恐るべき情報源は、彼らの呪文を間違ったものにしたり、巨大な巨大爆薬を爆発させたりして始めた。いくつかの呪いのために魔法をあきらめないでください。 –

答えて

0

私は私が思うにそれを考え出した、と私のコードを殺した事がcontinue文だった私は間違っていないよ場合は、ここで

は、私が得たものである、と私は

それは間違って得た場合、コメントを残してください
largest = None 
smallest = None 

while True: 
    inpt = raw_input("Enter a number: ") 
    if inpt == "done" : break 

    try: 
     num = int(inpt) 
    except: 
     print "Invalid input" 

    if largest is None: 
     largest = num 
    elif num > largest: 
     largest = num 

    if smallest is None: 
     smallest = num 
    elif num < smallest: 
     smallest = num 

print "Maximum is", largest 
print "Minimum is", smallest 
0

ループの中で最大と最小の番号を調べるべきです。最初にその番号があるかどうかチェックします。もしそうなら、続けて現在のlargest変数値(0から始まる)よりも大きいかどうかを確認します。はいの場合は交換してください。あなたのsmallestの値より小さい場合は(最初の数字から始まり、0から始める場合や乱数だけの場合は、それより低くならないかもしれません)最初の数字から始めると、 (すべてのループの後で)最小限になるようにしてください)などです。すべてはループ内で実行する必要があります。もちろん、リストを使う必要はありません。

1

あなたは現在の実装で正しい軌道に乗っていますが、操作の順序に問題があり、操作が行われている場所があります。あなたのプログラムを段階的に追跡して、あなたのNone割り当てが他の小さなものの中でいくつかの問題を引き起こしている理由を見てみましょう。

0

ここでヒントを教えてください。whileループが入力を受け取るたびに、largestsmallestの値をNoneに設定します。どこで初期化する必要がありますか?

1

実行中の合計を維持できるのと同じ方法で、実行中の最大実行分を維持するように求められています。実行中のループをループ内で更新した後、ユーザの最新の入力を破棄します。合計を実行する場合、コードはtot = tot + newinputのようになり、newinputを破棄(または、おそらく再利用)し、リストやその他のデータ構造に記録することはできません。

すべての問題が「実行中」のソリューションを許可するわけではありません。たとえば、ユーザーに元に戻す機能を与えたい場合は、先に入力した番号の一部を取り消し、すべての番号の正確な履歴を保持する必要があります。しかし、ここでは、そのデータを保持せずに得ることができます。

0

あなたの混乱は、ユーザーが入力をどのように期待するかによって部分的に生じることがわかりました。命令を2通りの方法で解釈することができます。それが第一の変形した場合

  1. ユーザーが4 5 7 randomword [ENTER]

  2. 書き込みユーザーは、あなたがリストとして全体のことを処理して決定することが予想されるかもしれない、4 [ENTER] 5 [ENTER] 7 [ENTER] randomword [ENTER]

書き込み、その

しかし、「あなたはこの運動のためのリストは必要ありません」と言われたという事実は、彼らが第2のシナリオ。これは、各反復でユーザーからの単一の入力を受け取ることを期待して、何かを行う(つまり、最後のものより大きいか小さいかをチェックする)ように、ループを設計する必要があることを意味します。whileあなたが今持っているループは、 "done"に遭遇するまで、入力された最後の入力を常に保持します。

whileループから外れてしまったら、慎重に収集してループ内で更新した変数を提示するだけで済みます。それだけです。

関連する問題