質問編集履歴

4

インデントを直しました

2020/08/07 15:00

投稿

KentaIrie
KentaIrie

スコア8

test CHANGED
File without changes
test CHANGED
@@ -16,21 +16,15 @@
16
16
 
17
17
  ```
18
18
 
19
- import re
20
-
21
- import random
22
-
23
-
24
-
25
19
  source = 'noun01.txt'
26
20
 
27
21
  with open (source, encoding='utf-8') as f:
28
22
 
29
23
 
30
24
 
31
- data = f.read()
25
+ data = f.read()
32
26
 
33
-
27
+
34
28
 
35
29
  english_words = re.findall('[a-z]+',data)
36
30
 
@@ -46,13 +40,13 @@
46
40
 
47
41
  for word in japanese_words:#for文で回す
48
42
 
49
- m = re.sub('\t|\n', '', word)#.sub('変化前','変化後',どこから)
43
+ m = re.sub('\t|\n', '', word)#.sub('変化前','変化後',どこから)
50
44
 
51
- meanings.append(m)#初めのからのリストに入れていく
45
+ meanings.append(m)#初めのからのリストに入れていく
52
46
 
47
+
53
48
 
54
-
55
- words_dict =dict(zip(english_words, meanings))
49
+ words_dict =dict(zip(english_words, meanings))
56
50
 
57
51
 
58
52
 
@@ -64,51 +58,49 @@
64
58
 
65
59
  for test_num in range(n_tests):
66
60
 
67
- with open ('英単語テスト_{:02d}.txt'.format(test_num + 1), 'w') as f:#'w'を付けることで、もしそのファイルがなかったら作ってくれるし、かける
61
+ with open ('英単語テスト_{:02d}.txt'.format(test_num + 1), 'w') as f:#'w'を付けることで、もしそのファイルがなかったら作ってくれるし、かける
68
62
 
69
- f.write('出席番号:\n'
63
+ f.write('出席番号:\n'
70
64
 
71
- '名前:\n\n'
65
+ '名前:\n\n'
72
66
 
73
- '第{}回英単語テスト\n\n'.format(test_num + 1))
67
+ '第{}回英単語テスト\n\n'.format(test_num + 1))
74
68
 
75
- for question_num in range(n_questions):
69
+ for question_num in range(n_questions):
76
70
 
77
- question_word = random.choice(english_words)
71
+ question_word = random.choice(english_words)
78
72
 
79
- correct_answer = words_dict[question_word]#辞書型やから英語に対する日本語を抽出
73
+ correct_answer = words_dict[question_word]#辞書型やから英語に対する日本語を抽出
80
74
 
75
+
81
76
 
77
+ meanings_copy = meanings.copy()#meaningsのままでやるとだんだん選択肢が減っていく
82
78
 
83
- meanings_copy = meanings.copy()#meaningsのままでやるとだんだん選択肢が減って
79
+ meanings_copy.remove(correct_answer)#ダミーの選択肢を作る、正解ではなものを作る
84
80
 
85
- meanings_copy.remove(correct_answer)#ダミーの選択肢を作る、正解ではないものを作る
81
+ wrong_answer = random.sample(meanings_copy,3)#<-リスト型
86
82
 
87
- wrong_answer = random.sample(meanings_copy,3)#<-リスト型
83
+
88
84
 
85
+ answer_options = [correct_answer] + wrong_answer#correct_answerをリスト型に、足し算はリスト型のみ
89
86
 
87
+
90
88
 
91
- answer_options = [correct_answer] + wrong_answer#correct_answerリスト型に、足し算はリスト型のみ
89
+ random.shuffle(answer_options)#順番入れ替える
92
90
 
91
+
93
92
 
93
+ f.write('問{}. {}\n\n'.format(question_num + 1, question_word))
94
94
 
95
- random.shuffle(answer_options)#順番を入れ替える
95
+
96
96
 
97
+ for i in range(4):
97
98
 
99
+ f.write('{}. {}\n'.format(i + 1, answer_options[i]))
98
100
 
99
- f.write('問{}. {}\n\n'.format(question_num + 1, question_word))
101
+
100
102
 
101
-
102
-
103
- for i in range(4):
104
-
105
- f.write('{}. {}\n'.format(i + 1, answer_options[i]))
106
-
107
-
108
-
109
- f.write('\n\n')
103
+ f.write('\n\n')
110
-
111
- ```
112
104
 
113
105
 
114
106
 

3

import re が記入漏れしていたので、編集しました

2020/08/07 15:00

投稿

KentaIrie
KentaIrie

スコア8

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,9 @@
14
14
 
15
15
  ####上記のような形式で問題を出そうと考え、for文で50回分のテストを新たなテキストに書き出そうと考えました。しかし、KeyError: 'weight'というエラーが出てきたので、調べたのですが、このエラーの意味と解決方法がわからなかったので、ご教示いただきたいです。下にコードを張り付けておきます。
16
16
 
17
+ ```
18
+
17
- ```import re
19
+ import re
18
20
 
19
21
  import random
20
22
 

2

コードを打ち込む欄に再度記入しました

2020/08/07 14:13

投稿

KentaIrie
KentaIrie

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- # サイトからテキストにコピーしてきたものから英単語テストを作ろうとしました。
1
+ `# サイトからテキストにコピーしてきたものから英単語テストを作ろうとしました。
2
2
 
3
3
 
4
4
 
@@ -14,9 +14,7 @@
14
14
 
15
15
  ####上記のような形式で問題を出そうと考え、for文で50回分のテストを新たなテキストに書き出そうと考えました。しかし、KeyError: 'weight'というエラーが出てきたので、調べたのですが、このエラーの意味と解決方法がわからなかったので、ご教示いただきたいです。下にコードを張り付けておきます。
16
16
 
17
-
18
-
19
- import re
17
+ ```import re
20
18
 
21
19
  import random
22
20
 
@@ -108,6 +106,10 @@
108
106
 
109
107
  f.write('\n\n')
110
108
 
109
+ ```
110
+
111
+
112
+
111
113
  ![イメージ説明](caed2d409ad27cdf6ecc4aab3aca7f2d.png)
112
114
 
113
115
  ![イメージ説明](f39e2ecd59655a22e25bda4ccc73cfbc.png)

1

編集してコードを追記しました。

2020/08/07 14:11

投稿

KentaIrie
KentaIrie

スコア8

test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,100 @@
14
14
 
15
15
  ####上記のような形式で問題を出そうと考え、for文で50回分のテストを新たなテキストに書き出そうと考えました。しかし、KeyError: 'weight'というエラーが出てきたので、調べたのですが、このエラーの意味と解決方法がわからなかったので、ご教示いただきたいです。下にコードを張り付けておきます。
16
16
 
17
+
18
+
19
+ import re
20
+
21
+ import random
22
+
23
+
24
+
25
+ source = 'noun01.txt'
26
+
27
+ with open (source, encoding='utf-8') as f:
28
+
29
+
30
+
31
+ data = f.read()
32
+
33
+
34
+
35
+ english_words = re.findall('[a-z]+',data)
36
+
37
+ print (english_words)
38
+
39
+
40
+
41
+ japanese_words = re.findall('\s.*\n', data)
42
+
43
+
44
+
45
+ meanings = []#空のリスト
46
+
47
+ for word in japanese_words:#for文で回す
48
+
49
+ m = re.sub('\t|\n', '', word)#.sub('変化前','変化後',どこから)
50
+
51
+ meanings.append(m)#初めのからのリストに入れていく
52
+
53
+
54
+
55
+ words_dict =dict(zip(english_words, meanings))
56
+
57
+
58
+
59
+ n_tests =50
60
+
61
+ n_questions = len(words_dict)
62
+
63
+
64
+
65
+ for test_num in range(n_tests):
66
+
67
+ with open ('英単語テスト_{:02d}.txt'.format(test_num + 1), 'w') as f:#'w'を付けることで、もしそのファイルがなかったら作ってくれるし、かける
68
+
69
+ f.write('出席番号:\n'
70
+
71
+ '名前:\n\n'
72
+
73
+ '第{}回英単語テスト\n\n'.format(test_num + 1))
74
+
75
+ for question_num in range(n_questions):
76
+
77
+ question_word = random.choice(english_words)
78
+
79
+ correct_answer = words_dict[question_word]#辞書型やから英語に対する日本語を抽出
80
+
81
+
82
+
83
+ meanings_copy = meanings.copy()#meaningsのままでやるとだんだん選択肢が減っていく
84
+
85
+ meanings_copy.remove(correct_answer)#ダミーの選択肢を作る、正解ではないものを作る
86
+
87
+ wrong_answer = random.sample(meanings_copy,3)#<-リスト型
88
+
89
+
90
+
91
+ answer_options = [correct_answer] + wrong_answer#correct_answerをリスト型に、足し算はリスト型のみ
92
+
93
+
94
+
95
+ random.shuffle(answer_options)#順番を入れ替える
96
+
97
+
98
+
99
+ f.write('問{}. {}\n\n'.format(question_num + 1, question_word))
100
+
101
+
102
+
103
+ for i in range(4):
104
+
105
+ f.write('{}. {}\n'.format(i + 1, answer_options[i]))
106
+
107
+
108
+
109
+ f.write('\n\n')
110
+
17
111
  ![イメージ説明](caed2d409ad27cdf6ecc4aab3aca7f2d.png)
18
112
 
19
113
  ![イメージ説明](f39e2ecd59655a22e25bda4ccc73cfbc.png)