";男人去割草了;为我的家庭作业用Python押韵
我们必须写一个程序,就像孩子们押韵一个人去割草一样。我们必须使用列表来实现这一点。我的老师不太担心人与人的正确英语 这是押韵的一个环节 这就是我目前所拥有的";男人去割草了;为我的家庭作业用Python押韵,python,Python,我们必须写一个程序,就像孩子们押韵一个人去割草一样。我们必须使用列表来实现这一点。我的老师不太担心人与人的正确英语 这是押韵的一个环节 这就是我目前所拥有的 men = input ('enter how many men you would like to mow the meadow') menmow = 1 menlist = [] while menmow <men: print str(menmow) + ' man went to mow' print 'went
men = input ('enter how many men you would like to mow the meadow')
menmow = 1
menlist = []
while menmow <men:
print str(menmow) + ' man went to mow'
print 'went to mow a meadow'
print 'one man and his dog'
print 'went to mow a meadow'
menlist.insert [0.2]
if menmow >men:
print 'your meadow has been mowed'
men=input('输入您想在草地上割草的人数')
menmow=1
menlist=[]
而男人们:
打印“你的草地已被修剪”
对于初学者,您有一个无限循环(while循环永远不会终止)。如果您使用的是Python 2.x,那么input()
函数将像执行Python代码一样执行该语句。那可能不是你想要的。此外,您尝试执行menmow
,这将是int和字符串之间的无效比较
将输入语句更改为:
men = int(raw_input ('enter how many men you would like to mow the meadow'))
您还需要一条语句来结束循环。它将无限期运行,因为循环条件不关心menlist
最后,
menlist.insert[0.2]
的语法无效。请务必检查如何将值插入列表。您完全是这样的。有些细节是错误的,您将在测试时发现。缺少的是正确执行“一人一狗”的路线。每个对联都应该改变
您可以创建第二个循环,以输出一人、两人等。提示:打印“text”
将打印文本,但不打印换行符
或者,您可以使用for循环将文本构建为列表,然后输出该列表。就像在主循环中一样,您可以保留一个计数器并将str(counter)+“man”
附加到列表中。
若要将此列表作为字符串输出,请使用
'.join(list)
menlist.insert[0.2]
无效;最终会出现一个神秘的错误,如“内置函数”或“方法”对象没有属性“\uuuu getitem\uuuu”
由于insert
是一个函数,请使用函数调用语法:menlist.insert(0,2)
在列表开头插入2
(在索引0
) - 只需使用
循环和for
对象,就可以简化range()
循环while
- 使用函数。他们是你的朋友
- 使用
,”将列表的内容连接在一起。连接(您的列表)
def lyrics(men):
verses = []
verses.append(str(len(men)) + ' men went to mow,')
verses.append('Went to mow a meadow,')
verses.append(', '.join(reversed(men)) + ' and his dog,')
return '\n'.join(verses)
num_men = int(raw_input('How many men will mow the meadow? '))
song = []
men = []
for man in range(1, num_men + 1):
men.append(str(man) + ' men')
song.append(lyrics(men))
print '\n\n'.join(song)
print
print 'your meadow has been mowed'
要让你的代码说出真正的歌曲(带有拼写出来的数字),请使用字典将数字映射到单词:
num_men = int(raw_input('How many men will mow the meadow? '))
def lyrics(men):
return '{num_men} went to mow,\nWent to mow a meadow,\n{men} and his dog'.format(
num_men=len(men),
men=', '.join(reversed(men)).capitalize()
)
song = []
men = []
numbers = {
1: 'one',
2: 'two',
3: 'three',
4: 'four',
5: 'five',
6: 'six',
7: 'seven',
8: 'eight',
9: 'nine'
}
for man in range(1, num_men + 1):
men.append('{} {}'.format(numbers[man], 'man' if man == 1 else 'men'))
song.append(lyrics(men))
print '\n\n'.join(song)
print
print 'your meadow has been mowed'
我看到了这个问题,决定尝试一下,只是为了见鬼。以下是我的想法。
由于用户输入必须是数字,因此您需要创建一个字典,将数字映射到数字(用文字表示,例如,1变为1)。为了创建字典,您需要知道用户将输入的最大值
或
用那样的数字代替文字中的数字
我选择了第二种选择;这是代码;你可以随意处理它
def one_man(): return """ One man went to mow,\n Went to mow a meadow, \n One man and his dog, \n Went to mow a meadow.\n
定义多人(人数、整理人数): 返回“” {0}人去割草了,\n 去割草,\n {1} 1人和他的狗,\n 去割草了。\n """ . 格式(人数、核对人数) def校对人员(人数): 结果=”; 当人数>1时: 结果+=“{0}人,”。格式(人数); 男子人数-=1; 返回结果 如果name==“main”: 序言=“要退出此程序,请在提示”时键入y或n”; 打印序言""";
loop=True; while循环: 序言=原始输入(“是否要退出程序?”);是/否:“”; 如果前导==“y”: 循环=假; 打破 其他: num_of_men_value=原始输入(“输入您想与多少人一起修剪草地?”:“”); 尝试: num_of_men=int(num_of_men_value); 如果人数小于1: 打印“数字必须大于0”; elif num_of_men==1: 打印一张单子(); 其他: 校对人数=校对人数(人数); 打印多人(人的数量、整理的人); 继续; 除: 打印“数字必须是有效数字”; 继续;
当您运行代码时,可能会出现堆栈跟踪。上面写了什么?@Mat谢谢你的更新。我想我需要经常去梅塔。谢谢你给了我一些其他的东西来消磨我的空闲时间(我希望网络不会丢弃讽刺的信息包。)欢迎!如果您描述您的代码当前正在做什么,它与您希望它做什么有什么不同,以及您在哪里陷入困境,这将很有帮助。在你的问题中给出一个所需输出的简短示例也很有帮助。你链接到的页面将来可能会消失,那么这个问题对未来的读者来说就没什么用处了。实际上,如果他在中输入一个整数,那么input
就是一个整数,所以men
就可以了。(挑剔:字符串类型在Python中称为menmow
)str