Python TypeError:格式字符串的参数不足-使用While循环

Python TypeError:格式字符串的参数不足-使用While循环,python,Python,我正在做老99瓶歌曲,并试图用一个While循环,以帮助我继续更好地学习循环类型 我想知道为什么在下面的代码中会出现TypeError,我到底缺少了哪些参数 这是我的密码: # Get number of beers bottles = int(raw_input("How many bottles of beer? ")) # return invalid response if bottles < 1: print "That's not a good number"

我正在做老99瓶歌曲,并试图用一个While循环,以帮助我继续更好地学习循环类型

我想知道为什么在下面的代码中会出现TypeError,我到底缺少了哪些参数

这是我的密码:

# Get number of beers
bottles = int(raw_input("How many bottles of beer? "))

# return invalid response
if bottles < 1:
    print "That's not a good number"

    if bottles == 1:
        s1 = "bottle" 
        s2 = "bottles" 

    elif bottles == 2:
        s1 = "bottles" 
        s2 = "bottles" 

# sing verses
while bottles > 0:
    print "%d %s of beer on the wall," % bottles, s1
    print "%d %s of beer." % bottles, s1
    print "You take one down, pass it around,"
    print "%d %s of beer on the wall." % (bottles - 1), s2
    print
    bottles -= 1
#获取啤酒数量
瓶子=整数(原始输入(“多少瓶啤酒?”)
#返回无效响应
如果瓶子<1:
打印“这不是一个好数字”
如果瓶子==1:
s1=“瓶子”
s2=“瓶子”
elif瓶==2:
s1=“瓶子”
s2=“瓶子”
#吟诗
当瓶子>0时:
在墙上打印“%d%s啤酒,”%瓶,s1
打印“%d%s啤酒”。%s瓶,s1
打印“你拿下一个,传给别人”
在墙上打印“%d%s啤酒。”%(瓶-1),s2
打印
瓶子-=1瓶
下面是错误:

Traceback (most recent call last):
    File "beer.py", line 47, in <module>
          print "%d %s of beer on the wall," % bottles, s1
TypeError: not enough arguments for format string
回溯(最近一次呼叫最后一次):
文件“beer.py”,第47行,在
在墙上打印“%d%s啤酒,”%瓶,s1
TypeError:格式字符串的参数不足

我尝试在%后面的“瓶子,s1”周围使用括号,但仍然没有帮助。有什么建议吗?

您必须将多个参数指定为元组,例如

print "%d %s of beer on the wall," % (bottles, s1)

使用
(瓶子,s1)
对我很有效。如果瓶子的输入是10怎么办。
s1
s2
在哪里定义?如果将
设置为大于2的值,则代码将生成一个名称错误,因为在这种情况下,if/elif都不会执行。您应该将elif更改为if。另外,看起来您有缩进问题。if/elif不应位于
if瓶子<1
下。它也不会更新
s1
s2
字符串,因为它们只从用户输入中计算一次。while循环将一直旋转,直到完成为止。您需要将它们移动到
while
循环中,以便每次都能正确设置它们。我想我还是不知道应该如何定义
s1
s2
的条件,然后在歌曲中如何调用它们。谢谢您的帮助。在将这些参数指定为元组的同时,我还意识到1.)While
循环位于错误的位置,应该位于拐角处2.)我没有
else
子句来允许大于2的数字。干杯