汎用性を持たせつつ、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 ドキュメント