chengjie 4 mesi fa
parent
commit
00aeb04702

+ 0 - 1
src/api/yjbdc/routes.js

@@ -15,7 +15,6 @@ router.get('/api/GetYJBDCArticleList',yjbdcController.GetYJBDCArticleList);
15 15
 router.get('/api/BuildYJBDCQRCode',yjbdcController.BuildYJBDCQRCode);
16 16
 router.get('/api/DeleteYJBDCArticleList',yjbdcController.DeleteYJBDCArticleList);
17 17
 router.get('/api/UpdateYJBDCArticleReadCount',yjbdcController.UpdateYJBDCArticleReadCount);
18
-router.get('/api/GetMiaoguoTodayAllWords',yjbdcController.GetMiaoguoTodayAllWords);
19 18
 router.get('/api/GetWordChinese',yjbdcController.GetWordChinese);
20 19
 router.get('/api/AddOrDeleteYJBDCUserCollect',yjbdcController.AddOrDeleteYJBDCUserCollect);
21 20
 router.get('/api/DeleteYJBDCUserCollect',yjbdcController.DeleteYJBDCUserCollect);

+ 0 - 88
src/api/yjbdc/yjbdcController.js

@@ -397,94 +397,6 @@ export async function GetYJBDCGenerateConfig(ctx) {
397 397
     ctx.body = {"errcode": 10000, result:result};
398 398
 }
399 399
 
400
-//获得秒过当天任务完成后的英语单词
401
-export async function GetMiaoguoTodayAllWords(ctx) {
402
-    const param = {
403
-        UserID: ctx.query.UserID || 0,
404
-    };
405
-
406
-    const url = `https://www.kylx365.com/api/GetMiaoguoCardList2?UserID=${param.UserID}&IsToday=2&CardType=0&OrderType=ac.LastTime%20desc`;
407
-
408
-    let result = await axios.get(url)
409
-        .then(res => {
410
-            let list = res.data.result.List;
411
-            if (list && list.length>0) {
412
-                let arr=[],arrNew=[];
413
-                const today=moment().format("YYYY-MM-DD 00:00:00");
414
-                for(let i=0;i<list.length;i++){
415
-                    // console.log("问题:"+list[i].Content[1].Content);
416
-                    // console.log("标签:"+list[i].Content[0].Content);
417
-                    // console.log("答案:"+list[i].Content[2].Content);
418
-                    
419
-                    let str1=fun1(list[i].Content[1].Content);
420
-                    if (str1){
421
-                        if (list[i].FirstTime>today){
422
-                            arrNew.push(str1)
423
-                        }
424
-                        else{
425
-                            arr.push(str1);
426
-                        }
427
-                    }
428
-                    else{
429
-                        let str2=fun1(list[i].Content[2].Content);
430
-                        if (str2){
431
-                            if (list[i].FirstTime>today){
432
-                                arrNew.push(str2)
433
-                            }
434
-                            else{
435
-                                arr.push(str2);
436
-                            }
437
-                        }
438
-                    }
439
-                }
440
-                let arr2=stringUtils.extractEnglishWords(arr);
441
-                let arr3=stringUtils.extractEnglishWords(arrNew);
442
-                let arr4=arr3.concat(arr2); 
443
-                
444
-                return {"errcode": 10000, result:arr4.join(",")}
445
-            }
446
-            else{
447
-                return {errcode: 101};
448
-            }
449
-        })
450
-        .catch(err => {
451
-            debugger;
452
-            return {errcode: 101, errStr: err};
453
-        });
454
-
455
-   
456
-    ctx.body = result;
457
-
458
-    function fun1(str){
459
-        let result="";
460
-        if (str.length>100)
461
-            result="";
462
-        else if (str.indexOf("[特")>=0){
463
-            let str3=str.substring(str.indexOf("[特")+2);
464
-            str3=str3.substring(str3.indexOf("]")+1,str3.indexOf("[/特]"));
465
-            result=str3;
466
-        }
467
-        else if (str.indexOf("[线]")>=0){
468
-            let str3=str.substring(str.indexOf("[线]")+3,str.indexOf("[/线]"));
469
-            result=str3;
470
-        }
471
-        else if (str.indexOf("[光]")>=0){
472
-            let str3=str.substring(str.indexOf("[光]")+3,str.indexOf("[/光]"));
473
-            result=str3;
474
-        }
475
-        else {
476
-            if (isValidString(str))
477
-                result=str;
478
-        }
479
-        return result;
480
-    }
481
-
482
-    function isValidString(str) {
483
-    // 正则表达式:允许大小写字母(a-zA-Z)、单引号(')、减号(-)和空格(\s)
484
-        return /^[a-zA-Z'\-\s]+$/.test(str);
485
-    }
486
-}
487
-
488 400
 //获得文章列表或具体文章
489 401
 export async function GetYJBDCArticleList(ctx) {
490 402
     const param = {

+ 97 - 0
src/test/build.test3.js

@@ -0,0 +1,97 @@
1
+import commonModel from '../model/commonModel.js';
2
+import fs from 'fs';
3
+import { stringUtils } from '../util/stringClass.js';
4
+import aiController from '../api/yjbdc/aiController.js';
5
+
6
+async function runScript(){
7
+    let id,word;
8
+    try {
9
+        
10
+        const sql="select * from Words where BookID=110 and ExampleSentence is not null order by ID;;"
11
+        let list = await commonModel.RunSql(null,sql);
12
+        let count=list.length;
13
+
14
+        const start=3630;
15
+        //const start=0;
16
+        //count=1;
17
+
18
+        // 添加延时函数,确保每分钟只发送9次请求(约每6.67秒一次请求)
19
+        // const delay = (ms ) => new Promise(resolve => setTimeout(resolve, ms));
20
+        // const requestDelay = 300; // 7秒,确保每分钟最多9次请求
21
+        
22
+        for(let i=start;i<count;i++){
23
+            let item=list[i];
24
+
25
+            id=item.ID;
26
+            //获得单词
27
+            word=item.Word;
28
+            let exampleSentence=item.ExampleSentence;
29
+            if (exampleSentence){
30
+                exampleSentence=JSON.parse(exampleSentence);
31
+                //console.log(exampleSentence);
32
+                let sql2="select * from MiaoguoLiteracy where Word='"+word+"';";
33
+                let list2= await commonModel.RunSql(null,sql2);
34
+
35
+                for(let j=0;j<list2.length;j++){
36
+                    let json=list2[j].JSONString;
37
+                    json=JSON.parse(json);
38
+
39
+                    //console.log(json);
40
+                    
41
+                    if (json.ENG){
42
+                        let arrSentence=[];
43
+                        
44
+                        for(let k=0;k<exampleSentence.Sentences.length;k++){
45
+                            let obj=[];
46
+                            let sentence1=exampleSentence.Sentences[k].Sentence;
47
+                            
48
+                            sentence1=stringUtils.ReplaceAllString(sentence1,word,"[线]"+word+"[/线]");
49
+                            
50
+                            if (sentence1.substring(0,word.length).toLowerCase()==word.toLowerCase()){
51
+                                let word1=sentence1.substring(0,word.length);
52
+                                sentence1=sentence1.replace(word1,"[线]"+word1+"[/线]");
53
+                            }
54
+                            
55
+                            //console.log(sentence1);
56
+                            
57
+                            obj.push(sentence1);
58
+                            obj.push(exampleSentence.Sentences[k].Translate);
59
+                            arrSentence.push(obj);
60
+                        }
61
+                        if (!json.ENG.ExamplesSentences)
62
+                            json.ENG.ExamplesSentences=[];
63
+                        
64
+                        json.ENG.ExamplesSentences=arrSentence;
65
+                    }
66
+                    json.ENG.CEFR_Level=exampleSentence.CEFR_Level;
67
+
68
+                    json=JSON.stringify(json);
69
+                    let sql3="update MiaoguoLiteracy set JSONString=? where ID="+list2[j].ID+";";
70
+                    //console.log(sql3);
71
+                    //console.log(json);
72
+                    await commonModel.RunSql(json,sql3);
73
+                }
74
+            }
75
+            console.log(i +"/"+ list.length+" "+word);
76
+            
77
+            // 在每次请求后添加延时,除非是最后一个请求
78
+            // if (i < count - 1) {
79
+            //     console.log(`等待 ${requestDelay/1000} 秒后继续下一个请求...`);
80
+            //     await delay(requestDelay);
81
+            // }
82
+        }
83
+        
84
+        console.log("完成");
85
+        process.exit(1);
86
+
87
+    } catch (error) {
88
+        console.log(id + " " +word);
89
+        console.error('Error executing script:', error);
90
+        throw new Error('终止程序');
91
+         process.exit(1);
92
+    }
93
+}
94
+
95
+runScript().catch(error => {
96
+    console.error('Error in runScript:', error);
97
+});

+ 52 - 0
src/test/build.人教版单词.js

@@ -0,0 +1,52 @@
1
+import commonModel from '../model/commonModel.js';
2
+import { stringUtils } from '../util/stringClass.js';
3
+import fs from 'fs';
4
+
5
+async function runScript(){
6
+    try {
7
+        var data = fs.readFileSync('data.txt', 'utf8');
8
+        let arr=data.split("\n")
9
+
10
+
11
+        for(var i=0;i<arr.length;i++){
12
+            if (arr[i].indexOf("/")<0){
13
+                arr[i]=arr[i].replace("\t","\t\t");
14
+            }
15
+        }
16
+
17
+        for(var i=0;i<arr.length;i++){
18
+            var item=arr[i].split("\t");
19
+            if (item[0]){
20
+                let obj={};
21
+                obj.Word=stringUtils.Trim(stringUtils.ReplaceAllString(item[0],"'","ˈ"));
22
+                obj.Word=obj.Word.replace("*","");
23
+                
24
+                if (item[1]){
25
+                    obj.Soundmark="["+stringUtils.Trim(stringUtils.ReplaceAllString(item[1],"/",""))+"]";
26
+                    if (obj.Soundmark=="[]")
27
+                        delete obj.Soundmark;
28
+                }
29
+                    
30
+                obj.Translate=stringUtils.Trim(item[2]);
31
+                obj.BookID=211;
32
+                obj.LessonID=stringUtils.Trim(item[3].replace("Unit",""));
33
+                obj.LessonName="Unit "+obj.LessonID;
34
+                console.log(JSON.stringify(obj));
35
+
36
+                const sql = "INSERT INTO Words SET ?";
37
+                await commonModel.RunSql(obj,sql);
38
+                
39
+            }
40
+        }
41
+        console.log("完成");
42
+        process.exit(1);
43
+    } catch (error) {
44
+        console.error('Error executing script:', error);
45
+        process.exit(1);
46
+    }
47
+}
48
+
49
+// 处理Promise并添加错误捕获
50
+runScript().catch(error => {
51
+    console.error('Error in runScript:', error);
52
+});

+ 37 - 0
src/test/build.人教版常用表达法.js

@@ -0,0 +1,37 @@
1
+import commonModel from '../model/commonModel.js';
2
+import { stringUtils } from '../util/stringClass.js';
3
+import fs from 'fs';
4
+
5
+async function runScript(){
6
+    try {
7
+        var data = fs.readFileSync('data2.txt', 'utf8');
8
+        let arr=data.split("\n")
9
+        for(var i=0;i<arr.length;i++){
10
+            var item=arr[i].split("|");
11
+            if (item[1]){
12
+                let obj={};
13
+                obj.Word=stringUtils.Trim(item[1]);
14
+                obj.Word=stringUtils.ReplaceAllString(obj.Word,"'","ˈ");
15
+                obj.Translate=stringUtils.Trim(item[2]);
16
+                obj.Translate=stringUtils.ReplaceAllString(obj.Translate,"'","ˈ");
17
+                obj.BookID=206;
18
+                obj.LessonID=stringUtils.Trim(item[3].replace("Unit",""));
19
+                console.log(JSON.stringify(obj));
20
+
21
+                const sql = "INSERT INTO Words SET ?";
22
+                await commonModel.RunSql(obj,sql);
23
+                
24
+            }
25
+        }
26
+        console.log("完成");
27
+        process.exit(1);
28
+    } catch (error) {
29
+        console.error('Error executing script:', error);
30
+        process.exit(1);
31
+    }
32
+}
33
+
34
+// 处理Promise并添加错误捕获
35
+runScript().catch(error => {
36
+    console.error('Error in runScript:', error);
37
+});

+ 73 - 48
src/test/data.txt

@@ -1,48 +1,73 @@
1
-('上海市上海中学',711.0,422.0,148,126,145);
2
-('上海田家炳中学',643.0,384.0,123,125,117);
3
-('上海戏剧学院附属高级中学(艺术班)',599.5,355.5,121,108,107);
4
-('上海安生学校',NULL,NULL,NULL,NULL,NULL);
5
-('上海音乐学院附属安师实验中学(艺术班)',591.5,363.5,110,124,92);
6
-('上海交通大学附属中学',707.5,419.5,141,132,141);
7
-('复旦大学附属中学',708.0,417.0,147,126,144);
8
-('上海市民办燎原双语高级中学',567.5,330.5,108,107,99);
9
-('上海闵行区诺达双语学校',NULL,NULL,NULL,NULL,NULL);
10
-('上海民办行中中学',520.0,289.0,100,109,92);
11
-('上海存志高级中学',572.5,325.5,110,108,110);
12
-('上海创艺高级中学',538.5,310.5,75,108,93);
13
-('上海市宝山华曜高级中学',602.0,352.0,110,112,109);
14
-('上海市同洲模范学校',534.5,303.5,116,109,95);
15
-('上海金瑞学校',NULL,NULL,NULL,NULL,NULL);
16
-('上海宝山区世外学校',675.0,401.0,134,125,129);
17
-('上海市民办远东学校',561.0,316.0,130,112,105);
18
-('上海华旭双语学校',NULL,NULL,NULL,NULL,NULL);
19
-('上海嘉定区民办华盛怀少学校',NULL,NULL,NULL,NULL,NULL);
20
-('华东师范大学第二附属中学',707.0,420.0,145,129,142);
21
-('上海师范大学附属中学',699.0,411.0,135,132,142);
22
-('上海市浦东新区民办浦实高级中学',563.0,332.0,110,113,102);
23
-('上海市民办丰华高级中学',563.0,336.0,106,116,104);
24
-('上海浦东新区民办东鼎外国语学校',574.5,339.5,96,118,100);
25
-('上海市民办尚德实验学校',611.0,351.0,121,116,119);
26
-('上海市民办交大南洋中学',563.5,333.5,113,118,96);
27
-('上海市民办永昌中学',540.5,291.5,114,111,115);
28
-('上海金山区世外学校',620.5,370.0,124,116,112);
29
-('上海市松江区科德高级中学',602.0,367.0,117,117,99);
30
-('上海市松江九峰实验学校',664.0,398.0,129,125,125);
31
-('上海领科双语学校',662.5,384.5,121,120,134);
32
-('上海市西外外国语学校',548.5,318.0,100,113,102);
33
-('上海赫贤学校',523.0,294.5,87,100,92);
34
-('上海松江区爱菊学校',530.0,305.0,114,91,104);
35
-('上海市青浦高级中学',668.5,396.5,128,123,126);
36
-('复旦大学附属中学青浦分校',689.5,403.5,135,127,141);
37
-('上海市朱家角中学',656.0,376.0,109,125,131);
38
-('上海市青浦区第二中学',570.5,341.0,103,117,100);
39
-('上海市青浦区东湖中学',603.0,355.0,114,113,114);
40
-('上海市青浦区第一中学',631.0,373.0,123,121,121);
41
-('上海青浦区世外高级中学',518.5,283.5,78,121,95);
42
-('上海青浦区宏润博源高级中学',557.5,337.5,97,109,94);
43
-('上海宋庆龄学校',593.0,351.0,105,123,100);
44
-('上海青浦区协和双语学校',536.5,322.0,97,114,80);
45
-('上海美达菲双语高级中学',NULL,NULL,NULL,NULL,NULL);
46
-('上海奉贤区博华高级中学',552.5,319.5,118,105,106);
47
-('上海市崇明区城桥中学',532.5,310.5,87,104,93);
48
-('上海民办民一中学',499.5,267.5,122,104,108);
1
+{==================== 参数设置(需手动修改)====================}
2
+BLK1 := '880001';   { 将此处改为您的板块代码1 }
3
+BLK2 := '880002';   { 将此处改为您的板块代码2 }
4
+BLK3 := '880003';   { 将此处改为您的板块代码3 }
5
+BUY_PRICE := 10;    { 修改为您的买入均价 }
6
+STOP_PROFIT := 5;   { 修改为止盈百分比(%) }
7
+STOP_LOSS := 3;     { 修改为止损百分比(%) }
8
+
9
+{==================== 自动识别大盘 ====================}
10
+IS_SH := IF(INBLOCK('上证A股'), 1, 0);
11
+INDEX_CODE := IF(IS_SH, 'SH000001', 'SZ399001');
12
+
13
+{==================== 板块强弱计算 ====================}
14
+BLK1_C := STKINDI(BLK1, 'C', 0, 0);
15
+BLK1_REF := REF(STKINDI(BLK1, 'C', 0, 1), 1);
16
+BLK1_ZDF := IF(BLK1_C > 0, (BLK1_C - BLK1_REF) / BLK1_REF * 100, -1000);
17
+
18
+BLK2_C := STKINDI(BLK2, 'C', 0, 0);
19
+BLK2_REF := REF(STKINDI(BLK2, 'C', 0, 1), 1);
20
+BLK2_ZDF := IF(BLK2_C > 0, (BLK2_C - BLK2_REF) / BLK2_REF * 100, -1000);
21
+
22
+BLK3_C := STKINDI(BLK3, 'C', 0, 0);
23
+BLK3_REF := REF(STKINDI(BLK3, 'C', 0, 1), 1);
24
+BLK3_ZDF := IF(BLK3_C > 0, (BLK3_C - BLK3_REF) / BLK3_REF * 100, -1000);
25
+
26
+BEST_BLK_ZDF := MAX(MAX(BLK1_ZDF, BLK2_ZDF), BLK3_ZDF);
27
+
28
+{==================== 大盘强弱计算 ====================}
29
+INDEX_C := STKINDI(INDEX_CODE, 'C', 0, 0);
30
+INDEX_REF := REF(STKINDI(INDEX_CODE, 'C', 0, 1), 1);
31
+INDEX_ZDF := (INDEX_C - INDEX_REF) / INDEX_REF * 100;
32
+
33
+{==================== 止盈止损价格 ====================}
34
+STOP_PROFIT_PRICE := BUY_PRICE * (1 + STOP_PROFIT / 100);
35
+STOP_LOSS_PRICE := BUY_PRICE * (1 - STOP_LOSS / 100);
36
+
37
+{==================== 策略决策函数 ====================}
38
+STRATEGY := FUNCTION(OPEN_PRICE) {
39
+    IF OPEN_PRICE >= STOP_PROFIT_PRICE THEN RETURN 1;
40
+    IF OPEN_PRICE <= STOP_LOSS_PRICE THEN RETURN -1;
41
+    IF BEST_BLK_ZDF < 0 AND INDEX_ZDF < 0 THEN RETURN -1;
42
+    IF BEST_BLK_ZDF < 0 OR INDEX_ZDF < 0 THEN RETURN 0;
43
+    RETURN 2;
44
+};
45
+
46
+{==================== 模拟开盘情景 ====================}
47
+SIM_HIGH1 := STRATEGY(C * 1.01);
48
+SIM_HIGH2 := STRATEGY(C * 1.02);
49
+SIM_HIGH3 := STRATEGY(C * 1.03);
50
+SIM_LOW1 := STRATEGY(C * 0.99);
51
+SIM_LOW2 := STRATEGY(C * 0.98);
52
+SIM_LOW3 := STRATEGY(C * 0.97);
53
+
54
+{==================== 策略说明 ====================}
55
+STR_TXT := FUNCTION(X) {
56
+    IF X = -1 THEN RETURN '全出';
57
+    IF X = 0 THEN RETURN '减仓';
58
+    IF X = 1 THEN RETURN '止盈全出';
59
+    RETURN '持有';
60
+};
61
+
62
+DRAWTEXT_FIX(1, 0.00, 0.10, 0, '高开+1%: ' + STR_TXT(SIM_HIGH1)), COLORWHITE;
63
+DRAWTEXT_FIX(1, 0.00, 0.15, 0, '高开+2%: ' + STR_TXT(SIM_HIGH2)), COLORWHITE;
64
+DRAWTEXT_FIX(1, 0.00, 0.20, 0, '高开+3%: ' + STR_TXT(SIM_HIGH3)), COLORWHITE;
65
+DRAWTEXT_FIX(1, 0.00, 0.25, 0, '低开-1%: ' + STR_TXT(SIM_LOW1)), COLORWHITE;
66
+DRAWTEXT_FIX(1, 0.00, 0.30, 0, '低开-2%: ' + STR_TXT(SIM_LOW2)), COLORWHITE;
67
+DRAWTEXT_FIX(1, 0.00, 0.35, 0, '低开-3%: ' + STR_TXT(SIM_LOW3)), COLORWHITE;
68
+
69
+{==================== 画止盈止损线 ====================}
70
+DRAWLINE(CURRBARSCOUNT = 1, STOP_PROFIT_PRICE, ISLASTBAR, STOP_PROFIT_PRICE, 0), COLORGREEN, LINETHICK2;
71
+DRAWLINE(CURRBARSCOUNT = 1, STOP_LOSS_PRICE, ISLASTBAR, STOP_LOSS_PRICE, 0), COLORRED, LINETHICK2;
72
+DRAWTEXT(ISLASTBAR, STOP_PROFIT_PRICE, '止盈:' + NUMTOSTR(STOP_PROFIT_PRICE, 2)), COLORGREEN;
73
+DRAWTEXT(ISLASTBAR, STOP_LOSS_PRICE, '止损:' + NUMTOSTR(STOP_LOSS_PRICE, 2)), COLORRED;

+ 37 - 0
src/test/data2.txt

@@ -0,0 +1,37 @@
1
+| That's the tallest dinosaur in this hall. | 那是这个厅里最高的恐龙。 | Unit1 |
2
+| It's taller than both of us together. | 它比我俩加起来还高。 | Unit1 |
3
+| How tall are you? | 你有多高? | Unit1 |
4
+| I'm 1.65 metres. | 我身高1.65米。 | Unit1 |
5
+| What size are your shoes, Mike? | 迈克,你穿多大号的鞋? | Unit1 |
6
+| Your feet are bigger than mine. My shoes are size 37. | 你的脚比我的大。我穿37号的鞋。 | Unit1 |
7
+| How heavy are you? | 你体重多少? | Unit1 |
8
+| I'm 48 kilograms. | 我体重48公斤。 | Unit1 |
9
+| How was your weekend? | 你周末过得怎么样? | Unit2 |
10
+| It was good, thank you. | 很好,谢谢。 | Unit2 |
11
+| What did you do? | 你(周末)干什么了? | Unit2 |
12
+| I stayed at home with your grandma. We drank tea in the afternoon and watched TV. | 我和你外婆待在家里。我们喝了下午茶,还看了电视。 | Unit2 |
13
+| Did you do anything else? | 你还做了其他什么事吗? | Unit2 |
14
+| Yes, I cleaned my room and washed my clothes. | 是的,我打扫了房间,还洗了衣服。 | Unit2 |
15
+| I want to buy the new film magazine. | 我想买期新的电影杂志。 | Unit2 |
16
+| What did you do last weekend? Did you see a film? | 你上周末干什么了?你看电影了吗? | Unit2 |
17
+| No, I had a cold. I stayed at home all weekend and slept. | 没有,我感冒了。整个周末都待在家里睡觉。 | Unit2 |
18
+| What happened? | 怎么了? | Unit3 |
19
+| Are you all right? | 你还好吧? | Unit3 |
20
+| I'm OK now. | 我现在没事了。 | Unit3 |
21
+| Where did you go? | 你去哪儿了? | Unit3 |
22
+| It looks like a mule! | 它看起来像头骡子! | Unit3 |
23
+| Did you go to Turpan? | 你们去吐鲁番了吗? | Unit3 |
24
+| Yes, we did. | 是的,去了。 | Unit3 |
25
+| How did you go there? | 你们怎么去的? | Unit3 |
26
+| We went there by plane. | 我们坐飞机去的。 | Unit3 |
27
+| Sounds great! | 听上去不错! | Unit3 |
28
+| There was no library in my old school. | 我以前的学校里没有图书馆。 | Unit4 |
29
+| Tell us about your school, please. | 请给我们讲讲您的学校吧。 | Unit4 |
30
+| How do you know that? | 你怎么知道的? | Unit4 |
31
+| There were no computers or Internet in my time. | 我那时候没有电脑也没有网络。 | Unit4 |
32
+| Before, I was quiet. Now, I'm very active in class. | 以前我很安静。现在我在课堂上很活跃。 | Unit4 |
33
+| I was short, so I couldn't ride my bike well. Now, I go cycling every day. | 我以前个子小,自行车骑得不好。现在我天天骑车。 | Unit4 |
34
+| Less is more. | 少即是多。 | Unit1 |
35
+| All work and no play makes Jack a dull boy. | 只工作不玩耍,聪明杰克也变傻。 | Unit2 |
36
+| All's well that ends well. | 结果好,一切都好。 | Unit3 |
37
+| Life is what you make it. | 生活是自己创造出来的。 | Unit4 |