从11月开始,小编终于如愿以偿地开始了在高中的支教生活,目前在带高一的信息课,使用2019年国家教材委员会专家委员会审核通过的新版教材。很喜欢新版的教材,简明而又不失深度。
我目前在讲第二章算法的内容,为了方便学生理解,我更多地以数学问题举例子,许多是教材上的经典问题,每个问题我都用算法的四种描述方式—自然语言、流程图、伪代码、程序设计语言(主要用Python)—分别进行说明,比如用辗转相除法求任意两个正整数的最大公约数、求一元二次方程ax²+bx+c=0的根等等,课上还是以前三种描述方式为主,也写了简单的Python代码,在课堂的后半段让学生提前感受一下。
#辗转相除法求最大公约数m = int(input("输入第一个数m:"))print("m = ",m)n = int(input("输入第二个数n:"))print("n = ",n)if m < n: m,n = n,mr = m % nwhile True: if r == 0: print("最大公约数为:",n) break else: m = n n = r r = m % n
#求一元二次方程ax²+bx+c=0的根,为了方便演示要求根为整数def fun(): print("求一元二次方程的根") while True: a = int(input("请输入系数a:")) if a == 0: print("a是二次项系数,不能为0") break b = int(input("请输入系数b:")) c = int(input("请输入系数c:")) print(f"该一元二次方程为:{a}x**2+{b}x+{c}=0 ") Δ = b**2 - 4*a*c #print("Δ的值为:",Δ) if Δ < 0: print("该方程无实数根") elif Δ == 0: x = -b/2*a print("该方程有两个相同的根,是:",int(x)) else: x1 = (-b+Δ**0.5)/2*a x2 = (-b-Δ**0.5)/2*a print("该方程有两个不同的实数根,分别是:",int(x1),"和",int(x2))fun()
昨天晚上设计了一款结合了概率的猜数字游戏,觉得还蛮有意思,等学生考完试后打算用它来讲解一下,这里把流程图和Python代码贴一下,大家也可以玩一下,点原文链接可直接下载文件,提取码1116。
猜数字(Bulls and Cows)是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩。
import randomisGameover = ""while True: a = random.randint(0,99) for i in range(10): b = int(input("你有10次机会,在[0,100)的范围内,输入猜测数:")) if b < 0 or b >= 100: print("不在指定范围内") break if a == b: print("猜中了,一共{}次\n".format(i+1)) isGameover = input("按q结束,r重玩 /") break else: print("不对") c = abs(a - b) if c < 10: d = c**2 print(d) else: d = (c//10)+(c%10) if d < 10: e = d**2 print(e) else: e = (d//10)+(d%10) f = e**2 print(f) else: print("遗憾,机会用完了。") print("正确答案:",a) break if isGameover == "q": break elif isGameover == "r": continue else: break
希望大家能找到以最少的次数猜中目标数字的方法!:)