質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

552閲覧

文字列の末尾に文字を追加

syota44

総合スコア7

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/01 22:54

文字列のリスト sentence を引数に取り、そのリストに含まれるすべての文字列の末尾に ed を追加してできる文字列のリストを返す関数 past(sentence) を定義せよ
動作例

past(['look', 'play', 'open', 'visit'])

['looked', 'played', 'opened', 'visited']

自分の解答
def past(sentence):
for i in sentence:
print([i+"ed"])
これを実行すると答えが縦に表示されます。
どうしたら動作例のようにひとつのリストで表示できますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/10/01 23:49

表示は考えなくて大丈夫です。 問題はリストを返す関数を定義せよなので、その通り作ればいいだけです。 返ってきたリストを表示すると、自然と例のような表示になります。
meg_

2021/10/02 01:51

> どうしたら動作例のようにひとつのリストで表示できますか? リスト作成部分が抜けています。 またコードは「コードの挿入」で記入してください。
guest

回答3

0

ベストアンサー

pppp.py

python3

1def my_task0(data): 2 ans = [] 3 for x in data: 4 ans.append(x + 'ed') 5 return ans 6 7def my_task1(data): 8 return [x + 'ed' for x in data] 9 10def my_task2(data): 11 return list(map(lambda x: x + 'ed', data)) 12 13data = ['look', 'play', 'open', 'visit'] 14print(my_task0(data)) 15print(my_task1(data)) 16print(my_task2(data))

イメージ説明

参考情報:

正しい動詞の過去形を得たいなら、こんなライブラリーもあるようです。
https://ja.stackoverflow.com/questions/68645/文中の動詞で過去形にする方法について

投稿2021/10/03 06:34

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

間違っている点は、
「文字列のリストを返す関数」を書かないといけないのに、「文字列をプリントする関数」を作ってしまっているからです。
「リストを返す」ためには、まずリストを作って、それをreturnに指定します。

投稿2021/10/02 02:05

otn

総合スコア84806

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syota44

2021/10/02 07:19

s=[i+"ed"] return s ということですか?
otn

2021/10/02 11:00

やってみましたか? それだと、["looked"]だけになりますね。
syota44

2021/10/02 11:34

どうしたらいいですか?
otn

2021/10/02 12:00

「[2,4,5,1,1] の数値の合計を求める」とか、わかりますか? それと同じです。 最初、ループの前に s = [] にしておいて、 ループごとに s.append(i+"ed") で継ぎ足してけば、 ループが終わった時点では、s は ['looked', 'played', 'opened', 'visited'] になります。
syota44

2021/10/03 06:18

分からないので応えを教えてください。
guest

0

宿題っぽい感じがしますのですべて書かずに答えにつながるヒントを書きます。

答えが縦に表示されます。

print(何か文字列)とすると、どうしてもprint()の中身が終わった時点で改行してしまうので、繰り返しただけ縦に表示されます。

past(['look', 'play', 'open', 'visit'])
['looked', 'played', 'opened', 'visited']

つまり、past(略)と入力されたときに、回答が1つのprint()の中にすべて収まっていてほしいわけです。

past()で帰ってくる答えにある[]は、リストを示します。
複数の要素を1くくりにしてすべてしまってしまう機能があります。
['looked', 'played', 'opened', 'visited']で一塊になるわけです。

だとすれば、

  1. これまでprint([i+"ed"])としてprintの中に吐き出していた**計算結果を1つ1つリストに追加(append)**して
  2. 最後にまとめてリストをprint

したらいいですね!

ほぼ答えになってしまいましたが、まだわからなければコメントをください。

投稿2021/10/01 23:38

編集2021/10/01 23:42
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問