新手到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()
答案 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"
的字符串格式