# 311159023徐若曦_程式設計期中考試
## Python
### midterm_113.py
#### All
##### 驗證程式
```
def is_positive_int(value):
try:
num=int(value)
if num>0:
return True
else:
return False
except ValueError:
return False
```
#### 1.
##### 程式設計
```
# 1
print("第1題")
list1=list(range(1001, 1, -5))
# 1.1
print("第1.1題")
print(sorted(list1))
print(max(list1))
print(min(list1))
print(sum(list1))
# 1.2
print("第1.2題")
list1.pop(18)
list1.pop(91) # index應為91
print(list1)
# 1.3
print("第1.3題")
list2=[25, 173, 411]
print(list2)
# 1.4
print("第1.4題")
for i in range(len(list2)):
list2[i]=list2[i]*3
list3=list1+list2
print(list3)
# 1.5
print("第1.5題")
list3.sort(reverse=True)
print(list3)
```
##### 執行結果
```
第1題
第1.1題
[6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76, 81, 86, 91, 96, 101, 106, 111, 116, 121, 126, 131, 136, 141, 146, 151, 156, 161, 166, 171, 176, 181, 186, 191, 196, 201, 206, 211, 216, 221, 226, 231, 236, 241, 246, 251, 256, 261, 266, 271, 276, 281, 286, 291, 296, 301, 306, 311, 316, 321, 326, 331, 336, 341, 346, 351, 356, 361, 366, 371, 376, 381, 386, 391, 396, 401, 406, 411, 416, 421, 426, 431, 436, 441, 446, 451, 456, 461, 466, 471, 476, 481, 486, 491, 496, 501, 506, 511, 516, 521, 526, 531, 536, 541, 546, 551, 556, 561, 566, 571, 576, 581, 586, 591, 596, 601, 606, 611, 616, 621, 626, 631, 636, 641, 646, 651, 656, 661, 666, 671, 676, 681, 686, 691, 696, 701, 706, 711, 716, 721, 726, 731, 736, 741, 746, 751, 756, 761, 766, 771, 776, 781, 786, 791, 796, 801, 806, 811, 816, 821, 826, 831, 836, 841, 846, 851, 856, 861, 866, 871, 876, 881, 886, 891, 896, 901, 906, 911, 916, 921, 926, 931, 936, 941, 946, 951, 956, 961, 966, 971, 976, 981, 986, 991, 996, 1001]
1001
6
100700
第1.2題
[1001, 996, 991, 986, 981, 976, 971, 966, 961, 956, 951, 946, 941, 936, 931, 926, 921, 916, 906, 901, 896, 891, 886, 881, 876, 871, 866, 861, 856, 851, 846, 841, 836, 831, 826, 821, 816, 811, 806, 801, 796, 791, 786, 781, 776, 771, 766, 761, 756, 751, 746, 741, 736, 731, 726, 721, 716, 711, 706, 701, 696, 691, 686, 681, 676, 671, 666, 661, 656, 651, 646, 641, 636, 631, 626, 621, 616, 611, 606, 601, 596, 591, 586, 581, 576, 571, 566, 561, 556, 551, 546, 536, 531, 526, 521, 516, 511, 506, 501, 496, 491, 486, 481, 476, 471, 466, 461, 456, 451, 446, 441, 436, 431, 426, 421, 416, 411, 406, 401, 396, 391, 386, 381, 376, 371, 366, 361, 356, 351, 346, 341, 336, 331, 326, 321, 316, 311, 306, 301, 296, 291, 286, 281, 276, 271, 266, 261, 256, 251, 246, 241, 236, 231, 226, 221, 216, 211, 206, 201, 196, 191, 186, 181, 176, 171, 166, 161, 156, 151, 146, 141, 136, 131, 126, 121, 116, 111, 106, 101, 96, 91, 86, 81, 76, 71, 66, 61, 56, 51, 46, 41, 36, 31, 26, 21, 16, 11, 6]
第1.3題
[25, 173, 411]
第1.4題
[1001, 996, 991, 986, 981, 976, 971, 966, 961, 956, 951, 946, 941, 936, 931, 926, 921, 916, 906, 901, 896, 891, 886, 881, 876, 871, 866, 861, 856, 851, 846, 841, 836, 831, 826, 821, 816, 811, 806, 801, 796, 791, 786, 781, 776, 771, 766, 761, 756, 751, 746, 741, 736, 731, 726, 721, 716, 711, 706, 701, 696, 691, 686, 681, 676, 671, 666, 661, 656, 651, 646, 641, 636, 631, 626, 621, 616, 611, 606, 601, 596, 591, 586, 581, 576, 571, 566, 561, 556, 551, 546, 536, 531, 526, 521, 516, 511, 506, 501, 496, 491, 486, 481, 476, 471, 466, 461, 456, 451, 446, 441, 436, 431, 426, 421, 416, 411, 406, 401, 396, 391, 386, 381, 376, 371, 366, 361, 356, 351, 346, 341, 336, 331, 326, 321, 316, 311, 306, 301, 296, 291, 286, 281, 276, 271, 266, 261, 256, 251, 246, 241, 236, 231, 226, 221, 216, 211, 206, 201, 196, 191, 186, 181, 176, 171, 166, 161, 156, 151, 146, 141, 136, 131, 126, 121, 116, 111, 106, 101, 96, 91, 86, 81, 76, 71, 66, 61, 56, 51, 46, 41, 36, 31, 26, 21, 16, 11, 6, 75, 519, 1233]
第1.5題
[1233, 1001, 996, 991, 986, 981, 976, 971, 966, 961, 956, 951, 946, 941, 936, 931, 926, 921, 916, 906, 901, 896, 891, 886, 881, 876, 871, 866, 861, 856, 851, 846, 841, 836, 831, 826, 821, 816, 811, 806, 801, 796, 791, 786, 781, 776, 771, 766, 761, 756, 751, 746, 741, 736, 731, 726, 721, 716, 711, 706, 701, 696, 691, 686, 681, 676, 671, 666, 661, 656, 651, 646, 641, 636, 631, 626, 621, 616, 611, 606, 601, 596, 591, 586, 581, 576, 571, 566, 561, 556, 551, 546, 536, 531, 526, 521, 519, 516, 511, 506, 501, 496, 491, 486, 481, 476, 471, 466, 461, 456, 451, 446, 441, 436, 431, 426, 421, 416, 411, 406, 401, 396, 391, 386, 381, 376, 371, 366, 361, 356, 351, 346, 341, 336, 331, 326, 321, 316, 311, 306, 301, 296, 291, 286, 281, 276, 271, 266, 261, 256, 251, 246, 241, 236, 231, 226, 221, 216, 211, 206, 201, 196, 191, 186, 181, 176, 171, 166, 161, 156, 151, 146, 141, 136, 131, 126, 121, 116, 111, 106, 101, 96, 91, 86, 81, 76, 75, 71, 66, 61, 56, 51, 46, 41, 36, 31, 26, 21, 16, 11, 6]
```
#### 2.
##### 程式設計
```
# 2
print("第2題") # midterm_110.py
def fac(maxi):
# maxi = input('請輸入一個正整數值: ') # 應為正整數值(優化事項), 缺少)
while is_positive_int(maxi)==False: # 缺少驗證程式(優化事項)
print("請輸入正整數")
maxi = input('請輸入一個正整數值: ') # 應為正整數值(優化事項)
else:
maxi=int(maxi)
fac = 1
i = 1
while (i < maxi): # 應為i, maxi, 應為<(新增)
i += 1
fac = fac*i # 應為*
# print('滿足最小大於整數值', maxi, '的階乘為: ', fac, ', ===> ', i, '! = ', fac, sep="") # 缺少sep=""(優化事項)
return fac
print(fac(9)/(fac(4)*fac(6)))
```
##### 執行結果
```
第2題
21.0
```
#### 3.
##### 程式設計
```
# 3
print("第3題")
import math
ans=pow(abs((math.pi)**((2)**(1/2))+math.log10(253*math.sin(2.1))-3**2.5), 3)
print("%.3f" %ans)
print("{:.3f}".format(ans))
```
##### 執行結果
```
第3題
551.716
551.716
```
#### 4.
##### 程式設計
```
# 4
print("第4題")
# 4.1
print("第4.1題")
dic={"Pig":"豬", "Deer":"鹿", "Cow":"牛", "Dog":"狗"}
for i in dic:
print(i, dic[i])
# 4.2
print("第4.2題")
for _ in range(2):
word=input("請輸入查詢英文: ")
while word not in dic:
print("請輸入正確英文")
word=input("請輸入查詢英文: ")
else:
print(dic[word])
# 4.3
print("第4.3題")
dic["Cat"]="鼠"
dic["Rabbit"]="兔"
print(dic)
# 4.4
print("第4.4題")
dic["Cat"]="貓"
print(dic)
# 4.5
print("第4.5題")
dic.pop("Deer")
print(dic)
```
##### 執行結果
```
第4題
第4.1題
Pig 豬
Deer 鹿
Cow 牛
Dog 狗
第4.2題
請輸入查詢英文: Pig
豬
請輸入查詢英文: Deer
鹿
第4.3題
{'Pig': '豬', 'Deer': '鹿', 'Cow': '牛', 'Dog': '狗', 'Cat': '鼠', 'Rabbit': '兔'}
第4.4題
{'Pig': '豬', 'Deer': '鹿', 'Cow': '牛', 'Dog': '狗', 'Cat': '貓', 'Rabbit': '兔'}
第4.5題
{'Pig': '豬', 'Cow': '牛', 'Dog': '狗', 'Cat': '貓', 'Rabbit': '兔'}
```
#### 5.
##### 程式設計
```
# 5
print("第5題")
# python program to find H.C.F. of two numbers # 缺少.(優化事項)
# define a function
def compute_hcf(x, y):
# choose the smaller number # 缺少縮排(優化事項)
if x > y:
smaller=y # 應為=
else:
smaller=x
for i in range(1, smaller+1): # 缺少in
if x % i == 0 and y % i == 0: # 應為%, 不用()
hcf = i
return hcf
num1 = 54
num2 = 24
print("The H.C.F. is ", compute_hcf(num1, num2), ".", sep="") # 應為compute_hcf, 缺少.(優化事項), 缺少sep=""(優化事項)
```
##### 執行結果
```
第5題
The H.C.F. is 6.
```
## JavaScript
### midterm_113.js
#### All
##### 讀取介面
```
// 讀取介面
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function getInput(question) {
return new Promise((resolve) => {
rl.question(question, (answer) => {
resolve(answer);
});
});
}
```
##### 驗證程式
```
// 驗證程式
function isPositiveInt(value) {
const num = parseInt(value);
return !isNaN(num) && num > 0;
}
```
##### 程式設計
```
// main
async function main() {
rl.close();
}
main();
```
#### 1.
##### 程式設計
```
// 1
console.log("第1題");
let list1 = [];
for (let i = 1001; i > 5; i -= 5) {
list1.push(i)
}
console.log(list1)
// 1.1
console.log("第1.1題");
console.log(list1.sort(function (a, b) {
return a - b;
}));
console.log(Math.max(...list1));
console.log(Math.min(...list1));
sum = 0
for (let i = 0; i < list1.length; i++) {
sum += list1[i]
}
console.log(sum);
// 1.2
console.log("第1.2題");
list1.splice(18, 1);
list1.splice(91, 1);
console.log(list1);
// 1.3
console.log("第1.3題");
let list2 = [25, 173, 411];
console.log(list2);
// 1.4
console.log("第1.4題");
for (let i = 0; i < list2.length; i++) {
list2[i] = list2[i] * 3;
}
let list3 = list1.concat(list2);
console.log(list3);
// 1.5
console.log("第1.5題");
list3 = list3.sort(function (a, b) {
return b - a;
});
console.log(list3);
```
##### 執行結果
```
第1題
[
1001, 996, 991, 986, 981, 976, 971, 966, 961, 956, 951,
946, 941, 936, 931, 926, 921, 916, 911, 906, 901, 896,
891, 886, 881, 876, 871, 866, 861, 856, 851, 846, 841,
836, 831, 826, 821, 816, 811, 806, 801, 796, 791, 786,
781, 776, 771, 766, 761, 756, 751, 746, 741, 736, 731,
726, 721, 716, 711, 706, 701, 696, 691, 686, 681, 676,
671, 666, 661, 656, 651, 646, 641, 636, 631, 626, 621,
616, 611, 606, 601, 596, 591, 586, 581, 576, 571, 566,
561, 556, 551, 546, 541, 536, 531, 526, 521, 516, 511,
506,
... 100 more items
]
第1.1題
[
6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61,
66, 71, 76, 81, 86, 91, 96, 101, 106, 111, 116, 121,
126, 131, 136, 141, 146, 151, 156, 161, 166, 171, 176, 181,
186, 191, 196, 201, 206, 211, 216, 221, 226, 231, 236, 241,
246, 251, 256, 261, 266, 271, 276, 281, 286, 291, 296, 301,
306, 311, 316, 321, 326, 331, 336, 341, 346, 351, 356, 361,
366, 371, 376, 381, 386, 391, 396, 401, 406, 411, 416, 421,
426, 431, 436, 441, 446, 451, 456, 461, 466, 471, 476, 481,
486, 491, 496, 501,
... 100 more items
]
1001
6
100700
第1.2題
[
6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61,
66, 71, 76, 81, 86, 91, 101, 106, 111, 116, 121, 126,
131, 136, 141, 146, 151, 156, 161, 166, 171, 176, 181, 186,
191, 196, 201, 206, 211, 216, 221, 226, 231, 236, 241, 246,
251, 256, 261, 266, 271, 276, 281, 286, 291, 296, 301, 306,
311, 316, 321, 326, 331, 336, 341, 346, 351, 356, 361, 366,
371, 376, 381, 386, 391, 396, 401, 406, 411, 416, 421, 426,
431, 436, 441, 446, 451, 456, 461, 471, 476, 481, 486, 491,
496, 501, 506, 511,
... 98 more items
]
第1.3題
[ 25, 173, 411 ]
第1.4題
[
6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61,
66, 71, 76, 81, 86, 91, 101, 106, 111, 116, 121, 126,
131, 136, 141, 146, 151, 156, 161, 166, 171, 176, 181, 186,
191, 196, 201, 206, 211, 216, 221, 226, 231, 236, 241, 246,
251, 256, 261, 266, 271, 276, 281, 286, 291, 296, 301, 306,
311, 316, 321, 326, 331, 336, 341, 346, 351, 356, 361, 366,
371, 376, 381, 386, 391, 396, 401, 406, 411, 416, 421, 426,
431, 436, 441, 446, 451, 456, 461, 471, 476, 481, 486, 491,
496, 501, 506, 511,
... 101 more items
]
第1.5題
[
1233, 1001, 996, 991, 986, 981, 976, 971, 966, 961, 956,
951, 946, 941, 936, 931, 926, 921, 916, 911, 906, 901,
896, 891, 886, 881, 876, 871, 866, 861, 856, 851, 846,
841, 836, 831, 826, 821, 816, 811, 806, 801, 796, 791,
786, 781, 776, 771, 766, 761, 756, 751, 746, 741, 736,
731, 726, 721, 716, 711, 706, 701, 696, 691, 686, 681,
676, 671, 666, 661, 656, 651, 646, 641, 636, 631, 626,
621, 616, 611, 606, 601, 596, 591, 586, 581, 576, 571,
566, 561, 556, 551, 546, 541, 536, 531, 526, 521, 519,
516,
... 101 more items
]
```
#### 2.
##### 程式設計
```
// 2
console.log("第2題"); // midterm_110.py
function computeFac(maxi) {
if (!isPositiveInt(maxi)) {
console.log("請輸入正整數");
return computeFac(maxi);
}
maxi = parseInt(maxi);
let fac = 1;
for (let i = 2; i <= maxi; i++) {
fac *= i;
}
return fac;
}
console.log(computeFac(9) / (computeFac(4) * computeFac(6)));
```
##### 執行結果
```
第2題
21
```
#### 3.
##### 程式設計
```
// 3
console.log("第3題");
const ans = Math.pow(Math.abs(Math.pow(Math.PI, Math.sqrt(2)) + Math.log10(253 * Math.sin(2.1)) - Math.pow(3, 2.5)), 3);
console.log(ans.toFixed(3));
```
##### 執行結果
```
第3題
551.716
```
#### 4.
##### 程式設計
```
// 4
console.log("第4題");
// 4.1
console.log("第4.1題");
let dic = { "Pig": "豬", "Deer": "鹿", "Cow": "牛", "Dog": "狗" };
for (let word in dic) {
console.log(word, dic[word]);
}
// 4.2
console.log("第4.2題");
for (let i = 0; i < 2; i++) {
let word = await getInput("請輸入查詢英文: ");
while (!(word in dic)) {
console.log("請輸入正確英文");
word = await getInput("請輸入查詢英文: ");
}
console.log(dic[word]);
}
// 4.3
console.log("第4.3題");
dic["Cat"] = "鼠";
dic["Rabbit"] = "兔";
console.log(dic);
// 4.4
console.log("第4.4題");
dic["Cat"] = "貓";
console.log(dic);
// 4.5
console.log("第4.5題");
delete dic["Deer"];
console.log(dic);
```
##### 執行結果
```
第4題
第4.1題
Pig 豬
Deer 鹿
Cow 牛
Dog 狗
第4.2題
請輸入查詢英文: Pig
豬
請輸入查詢英文: Deer
鹿
第4.3題
{ Pig: '豬', Deer: '鹿', Cow: '牛', Dog: '狗', Cat: '鼠', Rabbit: '兔' }
第4.4題
{ Pig: '豬', Deer: '鹿', Cow: '牛', Dog: '狗', Cat: '貓', Rabbit: '兔' }
第4.5題
{ Pig: '豬', Cow: '牛', Dog: '狗', Cat: '貓', Rabbit: '兔' }
```
#### 5.
##### 程式設計
```
// 5
console.log("第5題");
// javascript program to find H.C.F. of two numbers
// define a function
function computeHCF(x, y) {
// choose the smaller number
const smaller = Math.min(x, y);
for (let i = 1; i <= smaller; i++) {
if (x % i === 0 && y % i === 0) {
hcf = i;
}
}
return hcf;
}
const num1 = 54;
const num2 = 24;
console.log(`The H.C.F. is ${computeHCF(num1, num2)}.`);
```
##### 執行結果
```
第5題
The H.C.F. is 6.
```