-1

「コンピュータ科学者のように考える方法」の新しい演習に出くわしました。(ドキュメントを開く@ http://www.openbookproject.net/thinkcs/python/english2e/ch07.html

これに関するいくつかの指示を受け取ることを願っています:

prefix="JKLMNOPQ"
suffix="ack"

for letter in prefix:
    print letter + suffix

ジャック、カック、ラック、マック、ナック、オーク、パック&カックを手に入れます。

OackとQackの代わりにOuackとQuackを取得するには、何を変更する必要がありますか?

学習のために、私が試みたのは次のとおりです。

prefix="JKLMNOPQ"
suffix="ack"

for letter in prefix:
  if letter = "O" or "U":
    print letter + "u" + suffix
  else:
    print letter + suffix

ほとんどの人が一目で気付くように、コミットされた構文エラーは、if関数呼び出しで==の代わりに=を使用することです。

迅速な対応に感謝します。

4

8 に答える 8

5

与えられた例は、繰り返されるとき、文字列がその個々の文字のそれぞれを与えるという事実に依存しています。一部のプレフィックスに2文字を使用する必要があるため、文字列を文字ごとに個別の文字列に分割し、必要な場所に追加するu必要があります。

prefixes=["J", "K", "L", "M", "N", "Ou", "P", "Qu"]
suffix="ack"

for letters in prefixes:
    print letters + suffix
于 2012-05-15T14:13:07.543 に答える
4

私はあなたのためにこれを解決しませんが、あなたにヒントを与えるでしょう:声明if役に立つかもしれません。

于 2012-05-15T14:13:14.193 に答える
2
prefix = "JKLMNOPQ"
suffix = "ack"

for letter in prefix:
    if letter == 'O' or letter == 'Q':
      print "".join((letter, 'u', suffix))
    else:
      print "".join((letter, suffix))



Jack
Kack
Lack
Mack
Nack
Ouack
Pack
Quack
于 2012-05-15T14:15:32.783 に答える
2

2 つのプレフィックス (Q と O) を探し、「u」を追加します。それ以外の場合は、以前と同じように出力します

for letter in prefix:
   if letter in ['Q', 'O']:
      print letter + 'u' + suffix
   else:
      print letter + suffix

収量:

Jack
Kack
Lack
Mack
Nack
Ouack
Pack
Quack
于 2012-05-15T14:18:17.433 に答える
0

map 関数と正規表現の使用

RX = lambda x: re.sub("(O|Q)","\\1u",x)
map(RX,[x+suffix for x in prefix])
于 2013-01-29T09:47:42.797 に答える
0

正規表現ソリューションは次のとおりです。

import re
prefix="JKLMNOPQ"
suffix="ack"
names=[re.sub("([OQ])","\\1u",p) + suffix for p in prefixes]
print "\n".join(names)

指定された問題は入力を修正することだと思います。つまり、入力がどのようにうまくいかないかという問題ではなく、["J","K","L","M","N","Ou "、"P"、"Qu"] または何でも。通常、正規表現の置換は、文字列入力を修正する良い方法です。「コンピューター科学者のように考える」つもりなら、リスト内包表記をできる限り使用してこつをつかみ、出力を別の関心事として扱うこともお勧めします。

于 2012-05-15T15:36:43.277 に答える
-4

質問 (Q/O プレフィックスにのみ u を追加する方法) を理解すると、次のような結果になります。

for letter in prefix:
     word = letter
     if letter in ["O","U"]:
        word += "u"
     print word . suffix
于 2012-05-15T14:17:20.240 に答える