Python: how to increment number and store in variable every time function runs
(我是Python的初学者,正如你所知)
我要做的是:我要计算用户选择错误选项的次数,如果超过次数,他就会失败。
我的方法是将计数存储在一个函数内的变量中,并检查if/else语句是否超过了次数。
部分代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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) |
增量部分来自这个线程,使用全局范围读取不是一个好的实践。
我真正不理解的部分是如何将计数存储在变量中,并且每次函数运行时它都会记住最后一个值。
最好的方法是什么?
调整这个答案,您可以使用自己的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 2 | 1 failures 2 failures |
你觉得这个解决方案怎么样?
如果您在这里放置while循环,您将强制用户输入正确的答案。
另外,我把它放在if/elif/else语句输入函数之间。
count-该变量正在计算错误的选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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) |
也许像这样…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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() |