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

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

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

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

Q&A

解決済

3回答

1321閲覧

【python】returnを用いた際の表示について

TON-B

総合スコア21

Python

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

1グッド

0クリップ

投稿2018/06/21 11:43

編集2018/06/21 12:06

前提・実現したいこと

・Python3
・ATOM
・コマンドプロンプトでの表示に関する疑問
・インスタンスメゾット

発生している問題

returnを用いたprintを実行した際に()と,が表示されてしまう。
これを消したい。

該当のソースコード

python

1class Pokemon: 2 def pokemon_list(self): 3 return self.name,"の素早さは",self.speed,"である" 4 5pokemon1=Pokemon() 6pokemon1.name="ピカチュウ" 7pokemon1.speed=90 8 9pokemon2=Pokemon() 10pokemon2.name="リザードン" 11pokemon2.speed=100 12 13 14print(pokemon1.pokemon_list()) 15print(pokemon2.pokemon_list())

試したこと

python

1class Pokemon: 2 def pokemon_list(self): 3 print(self.name,"の素早さは",self.speed,"である") 4 5pokemon1=Pokemon() 6pokemon1.name="ピカチュウ" 7pokemon1.speed=90 8 9pokemon2=Pokemon() 10pokemon2.name="リザードン" 11pokemon2.speed=100 12 13 14pokemon1.pokemon_list() 15pokemon2.pokemon_list()

補足情報(FW/ツールのバージョンなど)

・試したことの場合
ピカチュウ の素早さは 90 である
リザードン の素早さは 100 である
と表示される。

・該当のソースコードの場合
("ピカチュウ", "の素早さは", 90, "である")
("リザードン", "の素早さは", 100, "である")
と表示される。

YouheiSakurai👍を押しています

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

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

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

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

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

hayataka2049

2018/06/21 11:48

コードが見づらいので、質問文の編集画面を開き、コード部分を選択して<code>ボタンを押し、「ここに言語を入力」を「python」に書き換えてください
YouheiSakurai

2018/06/21 13:36 編集

ピカチュウがリザードンにスピードで劣るわけがないと脊髄反射しそうになりましたが、調べてみるとなるほどの数値を設定しているのだなぁと感心しました。この質問は非常に勉強になりました。
TON-B

2018/06/21 22:56

90、100はゲームでポケモンごとに設定されている「種族値」を反映させたものですね。勉強のモチベーション維持のためにコードを書く際はこれを使うことが多いです。すばしっこいイメージのピカチュウですがぶっちゃけポケモン全体でみると「やや早い」くらいです。運動会の徒競走で3位の子のイメージ。
YouheiSakurai

2018/06/21 23:31

「速いぞピカリ!」に代表されるイメージですね。ありがとうございます。
guest

回答3

0

ベストアンサー

python

1return self.name,"の素早さは",self.speed,"である"

これは複数の値のreturnですが、実際にはtupleという型として返される仕組みになっています。tupleは複数の要素を持てるコレクション型です。

python

1>>> def f(): 2... return "A","B","C" # ('A', 'B', 'C')と書いたのと同じこと。tupleはカンマによって作られます(普通は丸かっこで囲みますが) 3... 4>>> f() 5('A', 'B', 'C') 6>>> type(f()) 7<class 'tuple'>

まるごと文字列として返したければ、

python

1return self.name+"の素早さは"+str(self.speed)+"である"

としてください。あるいは、str.formatを使って

python

1return "{0}の素早さは{1}である".format(self.name, self.speed)

でも良いでしょう。

追記

「試したこと」の方で一見それっぽく動くのは、printに複数の引数を渡すとそれぞれをprintしてくれるからです。間に半角スペースは入りますが(それもオプション引数の設定で消せなくはない。sepを指定すれば良い(デフォルトは半角スペース))。

python

1>>> print(1, 2, 3) 21 2 3 3>>> print(1, 2, 3, sep="") 4123

投稿2018/06/21 11:52

編集2018/06/21 12:09
hayataka2049

総合スコア30933

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

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

TON-B

2018/06/21 12:11

丁寧な回答ありがとうございました。 「複数の要素になっている」という説明で納得できました。 formatを用いた書き方も試してみます。
TON-B

2018/06/21 12:16

なるほど。とてもわかりやすいです。 「試したこと」の文章は1つの文ではなくいくつかの要素に分かれているのですね。
hayataka2049

2018/06/21 12:27

printの方は「それぞれがprintの引数」という扱いですね。
guest

0

以下の回答は誤りです。失礼しました。
『試したこと』のコードが上手く動作しないと思い込んでいました。

Python2.7が起動してしまっています。起動の仕方を再度ご確認ください。

追記

完全に無価値な回答になってしまうのもなんとも虚しいので、別のアプローチを紹介します。

Python

1class Pokemon: 2 def __str__(self): 3 return f'{self.name}の素早さは{self.speed}である' 4 5pokemon1=Pokemon() 6pokemon1.name="ピカチュウ" 7pokemon1.speed=90 8 9pokemon2=Pokemon() 10pokemon2.name="リザードン" 11pokemon2.speed=100 12 13print(pokemon1) 14print(pokemon2)

投稿2018/06/21 11:47

編集2018/06/21 12:05
LouiS0616

総合スコア35658

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

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

hayataka2049

2018/06/21 11:58

python3でも同様の結果になります
LouiS0616

2018/06/21 11:59

ですね。『試したこと』の方のコードが上手く動作しないのだと勘違いしていました。
TON-B

2018/06/21 12:13

LouiS0616さんありがとうございました。 紹介してくださったアプローチの方も参考に勉強します。
guest

0

次の例を研究してみてください。
イメージ説明

投稿2018/06/21 12:19

katoy

総合スコア22324

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

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

TON-B

2018/06/21 22:59

関連問題のご提示ありがとうございます。 取り組んでみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問