2017-12-07 7 views
3

を実行します(私はあなたが知っているだけのようにPythonで初心者です)Pythonの:どのように変数に数値や店舗をインクリメントするたびに機能が

私が何をしようとしている:私はどのようにカウントを維持したいです多くの場合、ユーザーは間違ったオプションを選択し、回数を超えた場合、彼は失敗します。

私のアプローチは、関数内の変数にカウントを格納し、回数を超えた場合はif/else文でチェックしました。コードの

パート:

choice = int(input("> ")) 

if choice == 1: 
    print("This is the wrong hall.") 
    increment() 
elif choice == 2: 
    print("This is the wrong hall.") 
    increment() 
elif choice == 3: 
    hall_passage() 
else: 
    end("You failed") 

COUNT = 0 
def increment(): 
    global COUNT 
    COUNT += 1 

increment() 

print(COUNT) 

インクリメント部分がthis threadからのものであり、グローバルスコープを使用して読み取るには、良い習慣ではありません。

私が実際に理解していない部分は、変数にカウントを格納する方法で、関数が実行されるたびに最後の値が記憶されます。

これを行うにはどのような方法が最適ですか?このような

+1

なぜ 'COUNT'が関数にする必要がありますか。 – DavidG

+2

状態を保持したい場合は、 'Class' –

+0

を使用してください。より高度なトピックである自分自身の' class'を書くことで、あなたが求めている質問に最もよく答えることができます。グローバル変数を使用することは悪いことですが、それはおそらくあなたが望むことをやり遂げる方法でしょう。 –

答えて

0

多分何か...

class Counter(): 
    def __init__(self): 
     self.counter = 0 

    def increment(self): 
     self.counter += 1 

    def reset(self): 
     self.counter = 0 

    def get_value(self): 
     return self.counter 


mc = Counter() 

while mc.get_value() < 3: 
    v = int(input('a number: ')) 
    if v == 1: 
     print('You won!') 
     mc.counter = 3 
    else: 
     print('Wrong guess, guess again...') 
     if mc.counter == 2: 
      print('Last guess...') 
     mc.increment() 
2

適応this答えあなたは関数が__dict__を所有して利用することができます。注:@構文に遭遇しなかった場合は、まだ「パイソン」、「デコレータ」を検索:

import functools as ft 

def show_me(f): 
    @ft.wraps(f) 
    def wrapper(*args, **kwds): 
     return f(f, *args, **kwds) 
    return wrapper 

@show_me 
def f(me, x): 
    if x < 0: 
     try: 
      me.count += 1 
     except AttributeError: 
      me.count = 1 
     print(me.count, 'failures') 

f(0) 
f(-1) 
f(1) 
f(-2) 

出力:

1 failures 
2 failures 
+1

これはおそらくかなりのユーザーには役に立ちますが、 Pythonの初心者です。私はラッパーがちょっと理解しにくいかもしれないと思う。 –

+1

@Coal_私はあなたの意見を取ります。それでも、初心者に適切な方法を見せてもらうことは害ではありません。そしてあなたが言うように、それは他の人に役立つかもしれません。 –

0

は、あなたがこのソリューションについてどう思いますか?

ここにループを置くと、ユーザーは正しい答えを入力する必要があります。

また、if/elif/else文の入力機能の間に配置しました。

数 - その変数がカウントされ、間違ったオプション

choice = int(input("> ")) 
count =0 
while choice !=3: 
    if choice == 1: 
     print("This is the wrong hall.") 
     count += 1 
     choice = int(input("> ")) # Also i place in the if/elif/else statements input function 
    elif choice == 2: 
     print("This is the wrong hall.") 
     count +=1 
     choice = int(input("> ")) 
    elif choice == 3: 
     hall_passage() 
    else: 
     end("You failed") 
     count += 1 
     choice = int(input("> ")) 

print(count) 
関連する問題