나는 범위에서 두 개의 숫자를 무작위로 선택하고 그 숫자에서 곱셈 문제를 묻는 프로그램을 만들었습니다. 매우 지저분하고 반복적으로 보입니다.
내가 도움을 원하는 것은 "내 코드를 덜 반복적이고 이해하기 쉽게 만드는 방법"입니다. 여기 내 코드가 있습니다... https://gist.github.com/anonymous/fa95b8493ef4d495f49a
답변1
반복을 제거하기 위해 루프를 사용할 수 있습니다 for
. 바라보다https://www.gnu.org/software/bash/manual/html_node/Looping-Constructs.html
이것이 내가 생각해낸 것입니다:
#!/bin/bash
read -p "Input the range you want to practice. For example: 1-12, 4-9, 9-11: " range
QUESTIONS=0
CORRECT=0
for i in {1..5}; do
let QUESTIONS++
n1=$(shuf -i $range -n 1)
n2=$(shuf -i $range -n 1)
realans=$((n1 * n2))
read -p "${n1} x ${n2}? " ans
if [[ $ans -eq $realans ]]; then
let CORRECT++
echo "Correct! ${n1} x ${n2} is ${realans}."
else
echo "Incorrect. ${n1} x ${n2} is ${realans}."
fi
done
echo "You got ${CORRECT} out of ${QUESTIONS} questions correct!"
read
단순화를 위해 프로그램을 단순화하고 zentity
입력과 출력을 모두 터미널에 유지하기로 결정했습니다. 또한 let var++
카운터를 증가시키는 보다 깔끔하고 현대적인 방법인 사용법을 시연했습니다 .