语句分析#洛谷
题目描述
一串长度不超过
255
255
255 的 PASCAL 语言代码,只有
a
,
b
,
c
a,b,c
a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];
。未赋值的变量值为
0
0
0 输出
a
,
b
,
c
a,b,c
a,b,c 的值。
输入格式
一串符合语法的 PASCAL 语言,只有 a , b , c a,b,c a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 0 0 0。
输出格式
输出 a , b , c a,b,c a,b,c 最终的值。
样例 #1
样例输入 #1
a:=3;b:=4;c:=5;
样例输出 #1
3 4 5
提示
输入的 PASCAL 语言长度不超过 255 255 255。
def work(data,keyy):
length=len(data)
# rest=[]
# for ketm in range(keyy + 1, length):
# if data[ketm] != ';':
# rest.append(data[ketm])
# pass
# else:
# anss = ''.join(rest)
# break
anss=data[keyy+1]
return anss
data=input()
aa=''
bb=''
cc=''
flaga=False
flagb=False
flagc=False
length=len(data)
for item in range(length):
if data[item] =='a':
flaga=True
flagb=False
flagc=False
pass
elif data[item]=='b':
flagb = True
flaga = False
flagc = False
pass
elif data[item]=='c':
flagc = True
flagb = False
flaga = False
pass
else:
if data[item]=='=' and flaga:
tran=work(data,item)
if tran=='b':
aa=bb
pass
elif tran=='c':
aa=cc
pass
elif tran=='a':
aa=aa
elif tran=='':
aa='0'
else:
aa=tran
elif data[item]=='=' and flagb:
tran=work(data,item)
if tran=='a':
bb=aa
pass
elif tran=='c':
bb=cc
pass
elif tran == 'b':
bb = bb
elif tran == '':
bb = '0'
else:
bb=tran
elif data[item]=='=' and flagc:
tran=work(data,item)
if tran=='b':
cc=bb
pass
elif tran=='a':
cc=aa
pass
elif tran == 'c':
cc = cc
elif tran == '':
cc = '0'
else:
cc=tran
if aa=='':
aa='0'
pass
if bb=='':
bb='0'
pass
if cc=='':
cc='0'
pass
print(aa,bb,cc)
题目挺难懂的,需要注意的几点是,变量之间可以进行数据的传递,这里一开始考虑数据可能是多位数,但是实际上,题目说了只有一位数,所以代码有很多多余判断,已经给注释掉了,再就是如果没有进行赋值,那么这个数应该是零,并且零也是会进行传递的,也就是说,最后输出的部分一定是数字,而不是变量。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!