基本减量循环 - PYTHON

时间:2012-04-17 13:21:22

标签: python

新手到python并在我的最新程序中遇到麻烦。简单地说,如果可能的话,我正在尝试为用户输入变量编写减量循环。基本上我有一个全局常量值,例如13,每次程序循环时,它会提示用户输入一个值,然后该用户值被削掉13,直到达到0.问题是它确实削减了它但重复时它将值重置为13并且只删除了输入当前迭代值。因此,如果你每次迭代输入2,它就会把它降低到11 ......但是我的目的是再次使用2作为例子,11,8,5等等,或者使用3作为例子10,7, 4 ....任何帮助的人都会非常感激,欢呼:)

a = 13

def main():
    runLoop()

def runLoop():
    while other_input_var > 0: # guys this is my main score accumulator
                               # variable and works fine just the one below
        b=int(input('Please enter a number to remove from 13: '))
        if b != 0:
            shave(a, b)

def shave(a, b):
    a -= b
    print 'score is %d ' % a
    if a == 0:
        print "Win"

main()

2 个答案:

答案 0 :(得分:2)

在我看来如此小的片段中,附加功能最终会使事情复杂化。不过很高兴看到你正在接受这个概念。我没有对此进行测试,但这应该与您正在寻找的相同。注意第5行我确保输入的数字不超过a的当前值。如果他/你不小心输入更高的东西,这应该会有所帮助。如果你还没有尝试过,那么下一步就是放错误处理Python Error Handling。希望这有帮助!

def main():
    a = 13
    while a:
        b = int(input("Please enter a number to remove from " +  str(a) + " : "))
        if b > 0 and b <= a:
            a -= b
            print "Score is ", str(a)
    print "Win"    

main()

答案 1 :(得分:-1)

不是您问题的答案,而是字符串格式的演示。这是旧样式,使用%“字符串插值运算符”。

a = 100
while a:
    shave = int(raw_input("Input a number to subtract from %i:" % a))
    if ( shave > 0 ) and ( shave <= a ):
        a -= shave
    else:
        print ("Number needs to be positive and less than %i." % a)

与此计划的会话:

Input a number to subtract from 100:50
Input a number to subtract from 50:100
Number needs to be positive and less than 50.
Input a number to subtract from 50:30
Input a number to subtract from 20:20

原始字符串中的%i是整数的占位符(整数为i),稍后由字符串上的%运算符填充。

浮点数也有%f,字符串有%s,依此类推。你可以做一些很好的事情,比如指定打印多少小数点数 - %.3f三位小数 - 依此类推。

另一个例子:

>>> "My name is %s and I'm %.2f metres tall." % ('Li-aung',1.83211)
"My name is Li-aung and I'm 1.83 metres tall."

这比阅读更容易:

"My name is " + name + " and I'm " + str(round(age,2)) + " metres tall"

详细了解old waynew way

的字符串格式