中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

項目挑戰: 口算批改 課件(17張PPT)

資源下載
  1. 二一教育資源

項目挑戰: 口算批改 課件(17張PPT)

資源簡介

(共17張PPT)
項目挑戰:口算批改
單擊此處添加副標題
項目挑戰:口算批改
為了幫助小學生檢查口算作業,我們計劃開發一款“口算批改”APP,以提高口算批改的效率。該程序的基本設想是:將手機對著作業本拍照,利用OCR(光學字符識別)技術,從圖片中識別出算式,然后逐一計算,判斷答案是否正確。
知識回顧
后綴表達式計算
def op_js(n,m,op):
s=0
if op=='*':
s=n*m
elif op=='/':
s=n/m
elif op=='+':
s=n+m
elif op=='-':
s=n-m
return s
ss=[‘6’,’7’,’8’,’5’,’-’,’*’,’+’]
stack=[ ]
for i in ① :
if i in '+-*/':
n2=stack.pop()
n1=stack.pop()
stack.append( ② )
else:
stack.append(int(i))
print(‘結果為:’+ ③ )
op_js(n1,n2,i)
str(stack[0])
ss
是一個通用的算術或邏輯公式表示方法, 操作符是以中綴形式處于操作數的中間(例:3 + 4)。
與前綴或后綴不同的是,中綴表達式中括號是必需的。還需要考慮算數運算符的優先級。
中綴表達式
知識鏈接
探索新知——中綴轉后綴
中綴表達式
后綴表達式
6+7-8
6 7 + 8 -
6+7*8-5
6 7 8 * + 5 -
6+7*(8-5)
6 7 8 5 - * +
1.轉換前后,數字的順序有無改變?
2.轉換前后,運算符的順序有無改變?
3.可以用什么數據結構
來處理運算符?
沒有發生改變
發生改變
棧結構
①創建一個符號棧ops,用來暫存運算符 ops=[]
②創建一個列表exp,用來存放后綴表達式 exp=[]
中綴轉后綴——抽象與建模
活動一:同級表達式轉換
活動二:不同級表達式轉換
活動三:小括號表達式轉換
中綴轉后綴
活動一:同級表達式轉換
取到運算符時,該進行什么判斷
中綴轉后綴——設計算法
棧為空,入棧
棧不為空,棧頂元素出棧,再入棧
s='6+7-8'
ops=[]
exp=[]
for ch in s:
if '0'<=ch<='9':
________①_________
else:
while len(ops)!=0:
op= ____②____
exp.append(op)
else:
______③______
while ops:
op=ops.pop()
exp.append(op)
print(exp)
exp.append(ch)
ops.pop()
ops.append(ch)
活動一:同級表達式轉換
不同優先級的運算符如何出入ops棧
如何表達運算符的優先級
使用字典來表示運算符的優先級
活動二:不同級表達式轉換
中綴轉后綴——設計算法
優先級高的先計算,先出棧
①棧為空,入棧
②當前優先級>棧頂元素優先級,直接入棧
③當前優先級<=棧頂元素優先級,棧頂元素出棧
活動二:不同級表達式轉換
s='6+7*8-5’
________________
………
while len(ops)!=0:
op=ops.pop()
if ops_rules[ch]>ops_rules[op]:
ops.append(op)
ops.append(ch)
break
else:
exp.append(op)
else:
ops.append(ch)
………
ops_rules={'+':1,'-':1,'*':2,'/':2}
s='6+7-8'
ops=[];exp=[]
for ch in s:
if '0'<=ch<='9':
exp.append(ch)
else:
while len(ops)!=0:
op=ops.pop()
exp.append(op)
else:
ops.append(ch)
while ops:
op=ops.pop()
exp.append(op)
print(exp)
若取到’(‘,如何存儲
若取到’)’,該如何處理
活動三:小括號表達式轉換
中綴轉后綴——設計算法
直接入棧
ops棧頂元素依次出棧,
直到取到“(“
s='6+7*(8-5)’
………
for ch in s:
if '0'<=ch<='9':
exp.append(ch)
elif _______①______:
while len(ops)!=0:
op=ops.pop()
if _____②______ ops_rules[op]ops.append(op)
ops.append(ch)
break
else:
exp.append(op)
else:
ops.append(ch)
for ch in s:
if '0'<=ch<='9':
exp.append(ch)
else:
while len(ops)!=0:
op=ops.pop()
if ops_rules[op]ops.append(op)
ops.append(ch)
break
else:
exp.append(op)
else:
ops.append(ch)
ch in '+-*/'
op==‘(‘ or
活動三:小括號表達式轉換
f=open('shibie.txt','r')
line=f.readline()
while line:
pos=line.find('=')
expleft=line[:pos]
expright=line[pos+1:]
expleft=change(expleft)
if ________①________________==int(expright):
print(expleft+'='+expright+" ")
else:
print(expleft+'='+expright+" ")
line=f.readline()
判斷等式
after_js(mid_to_after(expleft))
小結
中 綴 轉 后 綴 同級運算符 棧為空,入棧
棧不為空,棧頂元素出棧,再入棧
不同級運算符 優先級高的先計算,先出棧
①棧為空,入棧
②當前優先級>棧頂元素優先級,直接入棧
③當前優先級<=棧頂元素優先級,棧頂元素出棧
小括號 ①“(“直接入棧
②取到“)“,棧頂元素依次出棧,直到取到“(“
if '0'<=ch<='9':
exp.append(ch)
多位數值的讀取該如何實現?
課后思考

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 太谷县| 西林县| 开原市| 雷山县| 合阳县| 同仁县| 大邑县| 衡东县| 龙井市| 稻城县| 城口县| 伊通| 安福县| 肇庆市| 黄陵县| 科技| 左权县| 巢湖市| 靖西县| 富顺县| 贺州市| 高要市| 宜昌市| 绩溪县| 藁城市| 临沧市| 荥阳市| 灵寿县| 通渭县| 儋州市| 平山县| 缙云县| 封开县| 措美县| 洞头县| 明光市| 平阴县| 沛县| 专栏| 江城| 洛浦县|