Skip to content

Commit 277d5bc

Browse files
authored
Add files via upload
0 parents  commit 277d5bc

36 files changed

+1839
-0
lines changed

BeiJingtu.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import tu
2+
import json
3+
4+
def outputVexSetNumToCities(vexset):
5+
To = []
6+
for vex in vexset:
7+
To.append(cities[str(vex)])
8+
print(To)
9+
return To
10+
def outputArcSetNumToCities(arcset):
11+
To = []
12+
for arc in arcset:
13+
To.append((cities[str(arc[0])],cities[str(arc[1])]))
14+
print(To)
15+
return To
16+
#print(dfsvexset,dfsarcset)
17+
img = tu.initimg("image.json")
18+
f = open("cities.json",encoding='UTF-8')
19+
cities = json.load(f)
20+
#print(cities)
21+
dfsvexset,dfsarcset = tu.dfs(img)
22+
bfsvexset,bfsarcset = tu.bfs(img)
23+
print("深度优先遍历得到的vexset为",end=":")
24+
outputVexSetNumToCities(dfsvexset)
25+
print("深度优先遍历得到的arcset为",end=":")
26+
outputArcSetNumToCities(dfsarcset)
27+
print("广度优先遍历得到的vexset为",end=":")
28+
outputVexSetNumToCities(bfsvexset)
29+
print("广度优先遍历得到的arcset为",end=":")
30+
outputArcSetNumToCities(bfsarcset)

LISP.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
class Stack(object):
2+
def __init__(self):
3+
self.items = []
4+
def is_empty(self):
5+
return self.items == []
6+
def peek(self):
7+
return self.items[len(self.items) - 1]
8+
def size(self):
9+
return len(self.items)
10+
def push(self, item):
11+
self.items.append(item)
12+
def pop(self):
13+
return self.items.pop()
14+
def delete(self):
15+
self.items = []
16+
OPTR = Stack()
17+
OPND = Stack()
18+
intNumber = []
19+
for n in range(10):
20+
intNumber.append(str(n))
21+
def isInt(x):
22+
for n in intNumber:
23+
if(x == n): return 1
24+
return 0
25+
def LISPadd(str):
26+
sum = 0
27+
i = 0
28+
s = list(str)
29+
while(True):
30+
if(s[i] != ')'):
31+
OPTR.push(s[i])
32+
#print(OPTR.items)
33+
else:
34+
OPND = Stack()
35+
while(OPTR.peek() != '+'):
36+
OPND.push(OPTR.pop())
37+
for t in OPND.items:
38+
sum += int(t)
39+
OPTR.pop()
40+
OPTR.pop()
41+
if(OPTR.is_empty() == True):
42+
break
43+
i += 1
44+
return sum
45+
a = "(+(+(+12)(+34))(+(+56)(+78)))"
46+
b = "(+45)"
47+
print(LISPadd(a))

biaodashi.py

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
class Stack(object):
2+
def __init__(self):
3+
self.items = []
4+
def is_empty(self):
5+
return self.items == []
6+
def peek(self):
7+
return self.items[len(self.items) - 1]
8+
def size(self):
9+
return len(self.items)
10+
def push(self, item):
11+
self.items.append(item)
12+
def pop(self):
13+
return self.items.pop()
14+
def delete(self):
15+
self.items = []
16+
def operate(a,o,b):
17+
if(o == '*'): return a*b
18+
if(o == '/'): return b/a
19+
if(o == '+'): return a+b
20+
21+
a = input("输入表达式:")
22+
b = list(a)
23+
b.insert(0,'(')
24+
b.append(')')
25+
print(b)
26+
OPTR = Stack()
27+
Number = Stack()
28+
operator = Stack()
29+
i = 0
30+
while(i < len(b)):
31+
NumberTemp = []
32+
if(b[i] == ')'):
33+
while(operator.peek() != '('):
34+
Number.push(operate(Number.pop(), operator.pop(), Number.pop()))
35+
operator.pop()
36+
#Number.push(operate(Number.pop(),operator.pop(),Number.pop()))
37+
38+
#print(Number.peek())
39+
else:
40+
if(b[i] == '*' or b[i] == '/' or b[i] == '+' or b[i] == '-' or b[i] == '('):
41+
operator.push(b[i])
42+
43+
else:
44+
while (b[i] != '*' and b[i] != '/' and b[i] != '+' and b[i] != '-' and b[i] != '(' and b[i] != ')'):
45+
NumberTemp.append(b[i])
46+
i += 1
47+
#print(NumberTemp)
48+
Nt = "".join(NumberTemp)
49+
Number.push(float(Nt))
50+
i-=1
51+
52+
#print("运算符栈为:" + operator.peek())
53+
#print("运算数栈为:" , Number.peek())
54+
if (operator.peek() == '*' or operator.peek() == '/'):
55+
Number.push(operate(Number.pop(), operator.pop(), Number.pop()))
56+
elif (operator.peek() == '-'):
57+
Number.push(-Number.pop())
58+
operator.pop()
59+
operator.push('+')
60+
i+=1
61+
62+
print(Number.peek())

biaodashi2.py

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
class Stack(object):
2+
def __init__(self):
3+
self.items = []
4+
def is_empty(self):
5+
return self.items == []
6+
def peek(self):
7+
return self.items[len(self.items) - 1]
8+
def size(self):
9+
return len(self.items)
10+
def push(self, item):
11+
self.items.append(item)
12+
def pop(self):
13+
return self.items.pop()
14+
def delete(self):
15+
self.items = []
16+
def operate(a,o,b):
17+
if(o == '*'): return a*b
18+
elif(o == '/'): return a/b
19+
elif(o == '+'): return a+b
20+
elif(o == '-'): return a-b
21+
def precede(a,b):
22+
if(a != '#'):
23+
if(a == '+' or a == '-'):
24+
if(b == '+' or b == '-' or b == ')' or b == '#'):
25+
return '>'
26+
elif(b == '*' or b == '/' or b == '('):
27+
return '<'
28+
elif(a == '*' or a == '/'):
29+
if(b == '('):
30+
return '<'
31+
else: return '>'
32+
elif(a == '('):
33+
if(b == ')'):
34+
return '='
35+
else: return '<'
36+
elif(a == ')'):
37+
return '>'
38+
elif(a == '#'):
39+
if(b == '#'): return '='
40+
else:
41+
return '<'
42+
intNumber = []
43+
for n in range(10):
44+
intNumber.append(str(n))
45+
def isInt(x):
46+
for n in intNumber:
47+
if(x == n): return 1
48+
return 0
49+
def jisuan(s):
50+
#a = input("输入表达式:" + "\n")
51+
b = list(s)
52+
b.append('#')
53+
#print(b)
54+
OPTR = Stack()
55+
Number = Stack()
56+
operator = Stack()
57+
operator.push('#')
58+
i = 0
59+
NumberTemp = []
60+
while (True):
61+
print("本次输入为:", b[i],end='\t')
62+
print("运算符栈为:", operator.items, end='\t')
63+
if (b[i] == '*' or b[i] == '/' or b[i] == '+' or b[i] == '-' or b[i] == '(' or b[i] == ')' or b[i] == '#'):
64+
# print("nt",NumberTemp)
65+
if (NumberTemp != []):
66+
Nt = "".join(NumberTemp)
67+
Number.push(float(Nt))
68+
NumberTemp = []
69+
if (precede(operator.peek(), b[i]) == '<'):
70+
operator.push(b[i])
71+
elif (precede(operator.peek(), b[i]) == '='):
72+
x = operator.pop()
73+
elif (precede(operator.peek(), b[i]) == '>'):
74+
theta = operator.pop()
75+
x2 = Number.pop()
76+
x1 = Number.pop()
77+
print("运算", x1, theta, x2, end='\t')
78+
Number.push(operate(x1, theta, x2))
79+
i -= 1
80+
elif (isInt(b[i]) == 1 or b[i] == '.'):
81+
NumberTemp.append(b[i])
82+
elif(b[i] <= 'z' and b[i] >= 'A'):
83+
cTemp = b[i]
84+
b[i] = input("输入" + b[i] + "的值\n")
85+
for j in range(i,len(b)):
86+
if(b[j] == cTemp):
87+
b[j] = b[i]
88+
NumberTemp.append(b[i])
89+
else:
90+
NumberTemp.append(b[i])
91+
# if (b[i] != '#'):
92+
print("运算数栈为:", Number.items, end='\n')
93+
94+
i += 1
95+
# elif(b[i] == '#'):
96+
#
97+
if (operator.peek() == '#' and b[i] == '#'):
98+
print("本次输入为:", b[i],end='\t')
99+
print("运算符栈为:", operator.items, end='\t')
100+
print("运算数栈为:", Number.items, end='\n')
101+
102+
break
103+
if(Number.is_empty() != True): print("\n\n运算结果为:", Number.peek())
104+
else: print("\n\n运算结果为:", float("".join(NumberTemp)))
105+
'''a = input("输入表达式:" + "\n")
106+
b = list(a)
107+
b.append('#')
108+
print(b)
109+
OPTR = Stack()
110+
Number = Stack()
111+
operator = Stack()
112+
operator.push('#')
113+
i = 0
114+
NumberTemp = []
115+
while(True):
116+
print("运算符栈为:",operator.items,end='\t')
117+
if (b[i] == '*' or b[i] == '/' or b[i] == '+' or b[i] == '-' or b[i] == '(' or b[i] == ')' or b[i] == '#'):
118+
#print("nt",NumberTemp)
119+
if(NumberTemp != []):
120+
Nt = "".join(NumberTemp)
121+
Number.push(float(Nt))
122+
NumberTemp = []
123+
if(precede(operator.peek(),b[i]) == '<'):
124+
operator.push(b[i])
125+
elif(precede(operator.peek(),b[i]) == '='):
126+
x = operator.pop()
127+
elif(precede(operator.peek(),b[i]) == '>'):
128+
theta = operator.pop()
129+
x2 = Number.pop()
130+
x1 = Number.pop()
131+
print("运算",x1,theta,x2,end='\t')
132+
Number.push(operate(x1,theta,x2))
133+
i -= 1
134+
elif(isInt(b[i]) == 1 or b[i] == '.'):
135+
NumberTemp.append(b[i])
136+
else:
137+
b[i] = input("输入" + b[i] + "的值\n")
138+
NumberTemp.append(b[i])
139+
#if (b[i] != '#'):
140+
print("运算数栈为:", Number.items, end='\t')
141+
print("本次输入为:", b[i])
142+
i += 1
143+
#elif(b[i] == '#'):
144+
#
145+
if(operator.peek() == '#' and b[i] == '#'):
146+
print("运算符栈为:", operator.items, end='\t')
147+
print("运算数栈为:",Number.items,end='\t')
148+
print("本次输入为:",b[i])
149+
break
150+
print("\n\n运算结果为:",Number.peek())'''
151+
if __name__ == '__main__':
152+
s = input("输入表达式:" + "\n")
153+
jisuan(s)

cities.json

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"1" : "北京",
3+
"2" : "天津",
4+
"3" : "郑州",
5+
"4" : "呼和浩特",
6+
"5" : "徐州",
7+
"6" : "沈阳",
8+
"7" : "武汉",
9+
"8" : "西安",
10+
"9" : "兰州",
11+
"10" : "上海",
12+
"11" : "大连",
13+
"12" : "长春",
14+
"13" : "株洲",
15+
"14" : "成都",
16+
"15" : "西宁",
17+
"16" : "乌鲁木齐",
18+
"17" : "哈尔滨",
19+
"18" : "南昌",
20+
"19" : "广州",
21+
"20" : "贵阳",
22+
"21" : "昆明",
23+
"22" : "福州",
24+
"23" : "深圳",
25+
"24" : "柳州",
26+
"25" : "南宁"
27+
}

0 commit comments

Comments
 (0)