質問するログイン新規登録

回答編集履歴

1

追記1

2021/07/08 08:00

投稿

BeatStar
BeatStar

スコア4962

answer CHANGED
@@ -2,4 +2,93 @@
2
2
 
3
3
  『**プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一支持されながら処理しているだけの代物である**』です。
4
4
 
5
- つまり**現実世界でならどうするか**を考えるだけです。
5
+ つまり**現実世界でならどうするか**を考えるだけです。
6
+
7
+ ----------------------
8
+
9
+ [追記1]
10
+
11
+ (上のものはケータイからだったので追記&修正)
12
+
13
+ 解決済みになっていますが、一応書いておきます。
14
+
15
+ プログラミングは「こう書けばいい」ではないことは上で書いた通りです。
16
+
17
+ まずはプログラミングとかは置いといて『現実世界でなら』と考えてみてください。
18
+
19
+ 言い換えると、
20
+
21
+ ```ここに言語を入力
22
+ [依頼]
23
+ ある人(Aさん)が数字(1~10) を言うので、それをローマ数字(Ⅰ~Ⅹ)にして書いてください。
24
+ ただし、その範囲(Ⅰ~Ⅹ)にない場合は『無いぞ?』と言ってください。
25
+ ```
26
+
27
+ のような感じでしょうか。
28
+
29
+ そうすると、単純に考えると、
30
+
31
+ 1 -> Ⅰ
32
+ 2 -> Ⅱ
33
+ 3 -> Ⅲ
34
+ ...
35
+ 9 -> Ⅸ
36
+ 10 -> Ⅹ
37
+
38
+ というような表(じゃなくてもいいが)とかを用意して、
39
+ 『参照しながら考える』ですね。
40
+
41
+ で、数字を読み取る時に たとえば 10 なら "1" と "0" と読みますか?
42
+ (二進数とかならともかく、今回は十進数としてですから)
43
+
44
+ 普通に 10 ですよね。
45
+
46
+ で、変換前は数字で、変換後はどっちかっていうと文字ですよね。
47
+ (文章内にあったら)
48
+
49
+ ということは、{変換前,変換後} の組み合わせは**{数字,文字}**と読めますね。
50
+
51
+ ※ ただし、プログラミングとかでの文字と文字列は別物なので区別しないといけない場合もあります。
52
+ (場合によっては使える・使えないが変わるので)
53
+
54
+ という事で、Pythhonでのdictionary のキーとかは **{数字,文字}**ですね。
55
+
56
+ {文字,文字} でもいいですが、これはちょっと工夫が必要なので。
57
+
58
+ > ②11以上の入力で特定のエラーを出す
59
+
60
+ に関しても上と同じです。
61
+
62
+ 質問者さんはどのようにやりますか?
63
+
64
+ 私なら、
65
+
66
+ ```ここに言語を入力
67
+ 1. まずAさんが言う数字を聞く
68
+ 2. (1)で得た数字が( 0以下 or 11以上 ) かどうかを考える
69
+ 2.1. 数字が条件(範囲外であること) に一致するなら『無いぞ?』と言う
70
+ 2.2. 終了
71
+ 3. 表をもとに考える
72
+ 4. (3)でわかった文字を書く
73
+ ```
74
+
75
+ のような感じになりますかね。
76
+ (場合によってはちょっと変わるが)
77
+
78
+ これを実装するだけです。
79
+
80
+ 質問のコードを見ると、
81
+
82
+ { (1), (3), (4) } はそれぞれ出来ています。(厳密にはできていないが一応修正したと仮定して)
83
+
84
+ 後は(2)や(2.1)~(2.2) ですね。
85
+
86
+ これを実装すればいいだけです。
87
+
88
+ ただし、「数字以外(文字とか)を入力したら例外が飛んでくる」ので今回の仕様には合わないですね……
89
+
90
+ 今、考えるとやっぱり数字よりも『文字列』がいいのかな?
91
+
92
+ その場合は、(1) と (2) の間で、『文字列を整数に変換する』系の処理が必要になります。
93
+
94
+ 後は[公式リファレンス](https://docs.python.org/ja/3/reference/index.html)やらなんやらで調べたりとかして実装すればいいだけです。