内容正文:
少儿编程课
1
自创出题器
小测验
出一份试卷,题目全部为单项选择题:每道选择题共四个选项,答对一题得20分,答错一题不得分;答题结束后,打印分数。
打印试题
利用海龟先生的write函数将题目“写”在屏幕上
移动画笔到屏幕的左上角,准备“写”题目
写题干
将选项构建成列表
移动画笔,准备“写”选项
每个选项由英文字母和选项内容组成,字母和选项内容之间有一个空格
每“写”一个选项都要将画笔下移一段距离
打印试题
import turtle
t=turtle.Turtle()
t.up()
t.goto(-160,100) #挪笔
t.write('我们学习的是什么语言?',font=('楷体',16)) #打印题干
ops=['python','java','scratch','c++’] #选项
m='ABCD'
for x in range(4):
t.goto(-160,60-40*x) #调整每次打印选项的位置
t.write(m[x]+' '+ops[x],font=('楷体',16))
输入并判断答案
利用input函数获得输入,比较用户的输入和正确答案
如果回答正确增加得分,如果不正确则不得分
将本道题的回答结果和目前得分告知用户
6
输入并判断答案
s=0 #记录得分
a=input('答案: ') #输入答案
if a=='a' or a=='A': #若输入a或者A
s+=20 #回答正确,加20分
print('回答正确,目前得分:',s)
else:
print('回答错误,目前得分:',s)
7
如何改变每次的选项顺序
如果每次“写”题目时,选项顺序都是一模一样的会大大降低题目的复杂性和趣味性,如何让每次选项顺序都不相同呢?
很简单,只要每次“写”选项前都使用random.shuffle对选项做一次乱序即可
判断答案
选项顺序改变了,也就意味着不能以ABCD作为答案正确与否的依据了。因为每一次ABCD对应的选项内容都是不断变化的。该怎么办?
判断答案
要记录正确答案的内容而非标号
根据用户输入的标号,找到标号在ABCD中的位置
根据这个位置,到乱序后的选项列表中找到对应的内容
比较1和3,如果内容一致则答对,如果不一致则错误
判断答案
判断答案
判断答案
如何改变每次的选项顺序
from random import shuffle
ops=['python','java','scratch','c++']#选项
shuffle(ops)
m='ABCD'
for x in range(4):
t.goto(-160,60-40*x) #调整每次打印选项的位置
t.write(m[x]+' '+ops[x],font=('楷体',16))
记录正确答案(而非标号)
from random import shuffle
ops=['python','java','scratch','c++']#选项
shuffle(ops)
answer='python' #记录题目的正确答案
m='ABCD' #选项
for x in range(4):
t.goto(-160,60-40*x) #调整每次打印选项的位置
t.write(m[x]+' '+ops[x],font=('楷体',16))
找到输入的答案位置
upper():将所有的英文字符转为大写
find():查找相应的位置
s=0 #记录得分
a=input('答案: ') #输入的答案
n=m.find(a.upper()) #找到用户输入的答案在m中的位置
找到答案并比对
if ops[n]==answer: #如果ops中对应位置的内容与answer一样
s+=20 #回答正确,加20分
print('回答正确,目前得分:',s)
else:
print('回答错误,目前得分:',s)
$$