0

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()
4

2 回答 2

2

以我的拙见,对于这么小的片段,附加功能最终会使事情变得复杂。然而很高兴看到你得到了这个概念。我没有对此进行测试,但这应该与您正在寻找的相同。注意第 5 行,我确保输入的数字不超过 a 的当前值。如果他们/您不小心输入了更高的内容,这应该会有所帮助。如果您还没有尝试过,下一步将是进行错误处理,请参阅Python 错误处理。希望这可以帮助!

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()
于 2012-04-17T13:43:23.970 回答
-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"

阅读更多关于旧方式新方式字符串格式化的信息。

于 2012-04-17T14:33:58.777 回答