由于某些原因,控制台只显示读取器输入内容的第一个字母。为什么会这样
代码如下:
print ('Welcome to MadLibs')
string1 = input('Noun')
string2 = input('Plural Noun')
string3 = input('Noun')
string4 = input('Place')
string5 = input('Adjective')
string6 = input('Noun')
string='Be kind to your {}-footed {} For a duck may be somebody\'s {}, Be kind to your {} in {} Where the weather is always {}. You may think that this is the {}, Well it is.'
print(string.format(*string1,string2,string3,string4,string5,string6))
在格式调用的开头有一个星号(*),您需要删除它:
星号是将参数解包到函数的方式,在本例中不需要。字符串中也有7个占位符,但仅向format调用传递6个变量。如果您使用的是python3.6及更高版本,那么应该改用
f-strings
(它们非常棒):F字符串使得这种错误更难引入
在
string1
之前的*
将该字符串的元素分散到单独的参数中。所以它相当于:有关函数定义和参数列表中
*
的含义,请参见What does ** (double star/asterisk) and * (star/asterisk) do for parameters?把它扔掉
但是现在您没有足够的字符串来容纳格式字符串中的所有占位符。缺少
Be kind to your {} in
的名词。所以应该是:相关问题 更多 >
编程相关推荐