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

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

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

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

Q&A

解決済

4回答

1785閲覧

python プログラム

takahahi929

総合スコア13

Python

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

0グッド

0クリップ

投稿2018/10/17 08:15

編集2018/10/18 01:14

python

1from random import randint 2def dice(): 3 num=randint(1,6) 4 return num 5def dicegame(): 6 dice1=dice() 7 dice2=dice() 8 sum=dice1+dice2 9 if sum%2==0: 10 print(f"合計{sum}、偶数") 11 else: 12 print(f"合計{sum}、奇数") 13for i in range(5): 14 dicegame() 15print("ゲーム終了")

このプログラムを戻り値のある関数にしてprint文を関数の外に出した形にしたいです。わかる方、力を貸して欲しいです。

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

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

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

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

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

hayataka2049

2018/10/17 08:18 編集

質問文を再編集して、ちゃんとコードブロックを閉じてください(print("ゲーム終了")の行の下に```と入れれば良いと思います。あと二行目の「コード」も消しましょう)
mather

2018/10/17 09:07

「このプログラム」とは dicegame のことですか?
takahahi929

2018/10/17 09:26

すみません、書き損じがありました。print文を関数の外に出した形にしたいです。
guest

回答4

0

ベストアンサー

汎用性を持たせつつ、dicegame()と同様の機能を返り値で実現できるような関数にするとしたら、

  • 偶数か奇数かという情報
  • 結果の値

の2つを返せば良さそうに思えます。
(更に推し進めてmatherさんの回答のように関数の外でifを書く、という手もありますが)

python

1def dicegame(): 2 dice1 = dice() 3 dice2 = dice() 4 s = dice1 + dice2 5 if s%2 == 0: 6 return "偶数", s 7 else: 8 return "奇数", s 9

受け取る側では、

python

1even_or_odd, s = dicegame()

あとは文字列を組み立て表示すれば良いです。

最終的なコード。

python

1from random import randint 2 3def dice(): 4 num = randint(1,6) 5 return num 6 7def dicegame(): 8 dice1 = dice() 9 dice2 = dice() 10 s = dice1 + dice2 11 if s%2 == 0: 12 return "偶数", s 13 else: 14 return "奇数", s 15 16for i in range(5): 17 even_or_odd, s = dicegame() 18 print(f"合計{s}{even_or_odd}") 19print("ゲーム終了")

質問文のコードにコメント。

sumという変数名は、組み込み関数sum()を上書きしてしまうので、避けたほうがバグを防げます。

また、コーディングスタイルに改善の余地があるようです。

  • 代入や演算子の前後にはスペースを入れた方が読みやすいです。
  • 半角スペース6つのインデントは変則的です。pythonでは一般的に半角スペース4つが好まれます。

参考:
はじめに — pep8-ja 1.0 ドキュメント

投稿2018/10/17 10:13

hayataka2049

総合スコア30933

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

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

0

def dicegame(): dice1 = dice() dice2 = dice() return dice1 + dice2 for i in range(5): result = dicegame() if result % 2 == 0: print(f"合計{result}、偶数") else: print(f"合計{result}、奇数")

dicegame の返り値を何にしたいか、という指定がなかったので結果の値だけを返すようにしました。

投稿2018/10/17 09:15

mather

総合スコア6753

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

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

0

dice は dict(辞書)と似てたのでdaisuに変えてます。
詳しくは下記のURL読んで下さい。

Python チュートリアル
https://docs.python.jp/3/tutorial/

python

1 2 3# sum() 合計を求める 4l=[2,3] 5print(sum(l)) 6 7 8 9import random 10def daisu(): 11 return random.randint(1,6)# 整数のらんだむ値 12 13def dicegame(): 14 15 users=[daisu(),daisu()] 16 17 if sum(users)%2==0: 18 print("合計"+str(sum(users))+"偶数") 19 #数値と文字列は足せないので、数値を文字列(str)として扱ってます 20 else: 21 print("合計"+str(sum(users))+"奇数") 22 23for i in range(5): 24 dicegame() 25print("ゲーム終了") 26 27 28""" 29関数1 301から6までの乱数を作成する関数 *1 31 32関数2 33ユーザーの値を格納する配列(users)を作成 34*1を呼び出して、配列に登録 35 36 37偶数か奇数かをif文で判定 38 配列に入ってる合計数値を求める。(sum) 39 表示する時に数値を文字列として扱う。(str) 40 41 425回、繰り返す 43 関数2を呼び出す 44 45終了メッセージを表示 46 47""" 48 49

投稿2018/10/17 08:56

Untitled_Sample

総合スコア192

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

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

0

printの代わりにreturnを使いましょう。

投稿2018/10/17 08:23

tachikoma

総合スコア3601

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問