質問編集履歴
4
インデントを直しました
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
|
79
|
+
meanings_copy.remove(correct_answer)#ダミーの選択肢を作る、正解ではないものを作る
|
84
80
|
|
85
|
-
meanings_copy
|
81
|
+
wrong_answer = random.sample(meanings_copy,3)#<-リスト型
|
86
82
|
|
87
|
-
|
83
|
+
|
88
84
|
|
85
|
+
answer_options = [correct_answer] + wrong_answer#correct_answerをリスト型に、足し算はリスト型のみ
|
89
86
|
|
87
|
+
|
90
88
|
|
91
|
-
|
89
|
+
random.shuffle(answer_options)#順番を入れ替える
|
92
90
|
|
91
|
+
|
93
92
|
|
93
|
+
f.write('問{}. {}\n\n'.format(question_num + 1, question_word))
|
94
94
|
|
95
|
-
|
95
|
+
|
96
96
|
|
97
|
+
for i in range(4):
|
97
98
|
|
99
|
+
f.write('{}. {}\n'.format(i + 1, answer_options[i]))
|
98
100
|
|
99
|
-
|
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 が記入漏れしていたので、編集しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,7 +14,9 @@
|
|
14
14
|
|
15
15
|
####上記のような形式で問題を出そうと考え、for文で50回分のテストを新たなテキストに書き出そうと考えました。しかし、KeyError: 'weight'というエラーが出てきたので、調べたのですが、このエラーの意味と解決方法がわからなかったので、ご教示いただきたいです。下にコードを張り付けておきます。
|
16
16
|
|
17
|
+
```
|
18
|
+
|
17
|
-
|
19
|
+
import re
|
18
20
|
|
19
21
|
import random
|
20
22
|
|
2
コードを打ち込む欄に再度記入しました
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
編集してコードを追記しました。
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)
|