0

一人の男が草刈りに行った童謡のようなプログラムを書かなければなりません。リストを使用してこれを行う必要があります。私の先生は男性と男性の正しい英語についてはあまり心配していません。

これは韻のリンクですhttp://www.kididdles.com/lyrics/o105.html

これは私がこれまでに持っているものです...

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'
4

6 に答える 6

1

あなたはこのようにかなり遠いです。一部の詳細は間違っていますが、テスト中に発見されます。欠けているのは、「一人の男と彼の犬」という行の正しい実装です。これは、カプレットごとに変更する必要があります。

できることは、One man、Two man などを出力する 2 番目のループを作成することです。ヒント:print "text",テキストは出力されますが、改行は抑制されます。

別の方法として、for ループを使用してテキストをリストとして作成し、それを出力することもできます。メインループと同様に、カウンターを保持str(counter) + " man"してリストに追加できます。このリストを文字列として出力するには、 を使用します' '.join(list)

于 2012-09-16T18:14:48.320 に答える
1

まず、無限ループがあります (while ループは終了しません)。

于 2012-09-16T18:12:44.037 に答える
0
  • ループとオブジェクトwhileを使用するだけで、ループを単純化できます。forrange()
  • 関数を使用します。彼らはあなたの友達です。
  • を使用してリストの内容を結合します', '.join(your_list)

これが私が問題に取り組む方法です:

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'
于 2012-09-16T18:23:37.617 に答える
0

私は問題を見て、それを試してみることにしました。これが私が思いついたものです。
ユーザー入力は数字である必要があるため、数字を数字にマップするための辞書を作成する必要があります(つまり、1は1になります。また、辞書を作成するには、ユーザーが入力する最大値を知る必要があります。
または
単語の数字の代わりに、そのような数字を使用します。
2番目のオプションを選択しました。これがコードです。お気軽にご利用ください。

def one_man():
    戻る """
            一人の男が刈りに行きました、\ n
            牧草地を刈りに行きました、\ n
            一人の男と彼の犬、\ n
            牧草地を刈りに行きました。\n

      """;

def many_men(num_of_men、collat​​ed_men): 戻る """ {0}男性は刈り取りに行きました\n 牧草地を刈りに行きました、\ n {1} 1人の男性と彼の犬、\ n 牧草地を刈りに行きました。\n "" ".format(num_of_men、collat​​ed_men);

def collat​​e_men(num_of_men): 結果=""; num_of_men> 1: 結果+="{0}男性、"。format(num_of_men); num_of_men-= 1; 結果を返します。

名前=="メイン"の場合: preamble = "" "このプログラムを終了するには、プロンプトが表示されたらyまたはnと入力します" ""; 前文を印刷します。

loop = True; while loop: preamble = raw_input("""Want to exit the program? y/n : """); if preamble == "y": loop = False; break; else: num_of_men_value = raw_input("""Enter the number of men you would like to mow the meadow with?: """); try: num_of_men = int(num_of_men_value); if num_of_men < 1: print "Digit must be greater than 0"; elif num_of_men == 1: print one_man(); else: collated_men = collate_men(num_of_men); print many_men(num_of_men, collated_men); continue; except: print "Number must be a valid digit"; continue;

于 2012-09-16T20:02:03.213 に答える
0

Python 2.x を使用している場合、input()関数は Python コードであるかのようにステートメントを実行します。それはおそらくあなたが望むものではありません。menmow < menまた、 int と String の間の無効な比較となるを実行しようとします。

入力ステートメントを次のように変更します。

men = int(raw_input ('enter how many men you would like to mow the meadow'))

ループを終了するステートメントも必要です。ループ条件は気にしないため、無期限に実行されますmenlist

最後に、menlist.insert [0.2]有効な構文ではありません。リストに値を挿入する方法を確認してください。

于 2012-09-16T18:13:43.930 に答える
0

menlist.insert[0.2]無効です; のような不可解なエラーが発生します'builtin_function_or_method' object has no attribute '__getitem__'

関数と同様insertに、関数呼び出し構文を使用します:リストの先頭 (インデックス)menlist.insert(0, 2)に挿入します。20

于 2012-09-16T18:18:47.027 に答える