這就是我想做的:
Correct answers: A C A B D B ...
Student: Answers: Score:
-------- -------- ------
Charlie A. A D A B D C ... 4/6
George B. A C A B D D ... 5/6
如何透過將每個學生的答案與第一行的答案進行比較來計算正確答案?我希望能夠透過輸入答案來計算測驗分數。
答案1
下面是一個 shell 腳本,它只列印相同字元的數量,而不進行任何格式化:
#!/bin/bash
solutions="ACABDB"
input="Charlie A.,ADABDC
George B.,ACABDD"
IFS=$'\n'
for line in $input; do
name=${line%,*}
answers=${line#*,}
correct=0
for i in $(seq ${#solutions}); do
[ ${answers:$i:1} == ${solutions:$i:1} ] && ((correct++))
done
echo "$line,$correct"
done
還有一個將結果格式化為等寬表格的 Ruby 版本:
solutions = "ACABDB"
"Charlie A.,ADABDC
George B.,ACABDD".split("\n").each { |line|
name, answer = line.split(",")
correct = 0
(0...solutions.length).each { |i|
correct += 1 if answer[i] == solutions[i]
}
puts "#{"%-17s" % name}#{"%-20s" % answer.split("").join(" ")}#{correct}/#{solutions.length}"
}
您可以使用 TextEdit(純文字模式)儲存腳本,然後使用類似bash ~/Desktop/script.sh
或 的命令從終端機執行它們ruby ~/Desktop/script.rb
。