Python:每次函数运行时如何增加数字和存储变量

时间:2017-12-07 15:03:33

标签: python python-3.x

(我是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,使用全局范围读取不是一个好习惯。

我不太了解的部分是你如何在一个变量中存储计数,它会在每次运行函数时记住最后一个值。

这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:2)

调整this答案,您可以使用自己的__dict__函数。注意:如果您没有遇到@语法,则会搜索" python"," decorator":

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 :(得分: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 :(得分:0)

您对此解决方案有何看法?

如果您在循环中放置此处,则会强制用户输入正确的答案。

我也在if / elif / else语句输入函数之间放置。

count - 该变量计算错误的选项

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)