第一次个人编程作业
第一次个人编程作业
这个作业属于哪个课程 | <班级的链接>(https://edu.cnblogs.com/campus/fzzcxy/SE) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(https://edu.cnblogs.com/campus/fzzcxy/SE/homework/10283) |
这个作业的目标 | 发布一篇随笔,使用markdown语法进行编辑。在随笔前附上github仓库地址。 |
作业正文 | .... |
其他参考文献 | ... |
GitHub链接:https://github.com/qq1261275789/JLY-s-software-engineering-warehouse/blob/master/第一次个人编程作业.py
编程题目
汉字是迄今为止持续使用时间最长的文字,也是上古时期各大文字体系中唯一传承至今者,中国历代皆以汉字为主要的官方文字。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
小杨同学想到:用汉字来进行编程一定很有趣,来请你帮帮他。
编程要求
请编写一个程序,满足以下语法要求:
-
变量定义:整数 钱包 等于 零
-
运算(加法):钱包 增加 四
-
运算(减法):钱包 减少 四
-
输出:看看 钱包 or 看看 “字符串”
附加要求: -
选择:如果 钱包 大于 十 则 看看 “钱太多了” 否则 看看 “我穷死了”
样例
输入:
整数 气温 等于 十
气温 减少 三
气温 增加 二
看看 气温
如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”
输出:
九
你好,世界
注意事项
1.输入输出采用utf-8编码,请在编码过程中注意。
2.数字只会出现:零一二三四五六七八九十。
3.字符串输出的双引号是全角,即中文双引号。
4.变量类型要求只有整数,如有余力,可以自己实现更多。、
5.测试数据会相较于样例复杂,请考虑充分需求。
6.不限制编程语言。
代码行数:335行
分析时间:看完题目基本上就大概了解啥要求了,但是后期一直改要求,可能总共花了半个小时吧
编码时间:写的时间花的比较久,题目变要求.增加要求什么的,导致代码一直删删减减,修修改改,加上对自己代码的优化和增加功能,总共跨度3天
一.最初的版本
1.输入部分:
输入的是一个一个的词,中间以空格割开,所以用split按空格切成一个数组,如果切出来的第一个词是整数,代表这句话是定义一个变量,那么将切出来的数组的第二个词(也就是中文的变量名)放进一个a中;如果第一个词是看看或者如果,也按照刚才的一样,将数组的第二个词放进a中
def 输入():
str=input()
s=str.split()
if len(s)>0:
if s[0]=='整数':
a[0]=s[1]
elif s[0]=='看看' or s[0]=='如果':
a[0]=s[1]
else:
a[0]=s[0]
return s
else:
return None
2.转换部分:
第一个函数做的是将汉字数字转换成阿拉伯数字,第二个函数是将阿拉伯数字转换成汉字
第一个函数:通过if和elif,把零到十转换成0-10,中途因为定义变量名语句和加减语句的数字所在的输入数组的位置不同,采取两次判断,确保将a中的数字转换
def 转换(s):
if len(s)<=2:
s[1]=s[1]
elif s[2]=='零':
s[2]=0
elif s[2]=='一':
s[2]=1
elif s[2]=='二':
s[2]=2
elif s[2]=='三':
s[2]=3
elif s[2]=='四':
s[2]=4
elif s[2]=='五':
s[2]=5
elif s[2]=='六':
s[2]=6
elif s[2]=='七':
s[2]=7
elif s[2]=='八':
s[2]=8
elif s[2]=='九':
s[2]=9
elif s[2]=='十':
s[2]=10
elif s[3]=='零':
s[3]=0
elif s[3]=='一':
s[3]=1
elif s[3]=='二':
s[3]=2
elif s[3]=='三':
s[3]=3
elif s[3]=='四':
s[3]=4
elif s[3]=='五':
s[3]=5
elif s[3]=='六':
s[3]=6
elif s[3]=='七':
s[3]=7
elif s[3]=='八':
s[3]=8
elif s[3]=='九':
s[3]=9
elif s[3]=='十':
s[3]=10
return s
第二个函数:通过if和elif,把零到十转换成0-10,因为这个是用来打印结果的,数字在a中的位置固定,所以直接if和elif就行
def 转换2():
if a[1]==0:
a[3]='零'
elif a[1]==1:
a[3]='一'
elif a[1]==2:
a[3]='二'
elif a[1]==3:
a[3]='三'
elif a[1]==4:
a[3]='四'
elif a[1]==5:
a[3]='五'
elif a[1]==6:
a[3]='六'
elif a[1]==7:
a[3]='七'
elif a[1]==8:
a[3]='八'
elif a[1]==9:
a[3]='九'
elif a[1]==10:
a[3]='十'
return s
3.使用部分:
通过if判断输入的句子属于哪种语句,如果是定义变量名的语句,那么就将中文变量名放进a的第一个中,将变量的数值放在第二个;如果是加减语句,则将所对应变量的第二个取出来,与输入语句的数值进行加减运算,然后再把结果返回回a的原来位置;如果是判断大小的语句,就将a中对应的变量的第二个提取出来与输入语句的数值进行比大小,然后按照要求输出输入语句中要求的话
def 使用(s):
if (s[0]=='整数') and (s[2]=='等于'):
a[0]=s[1]
# print(a[0])
a[1]=s[3]
# print(a[1])
if s[0]==a[0]:
if s[1]=='减少':
a[1]=a[1]-s[2]
# print(a[1])
elif s[1]=='增加':
a[1]=a[1]+s[2]
# print(a[1])
if s[0]=='看看':
转换2()
print(a[3])
if s[0]=='如果':
if s[2]=='大于':
if a[1]>s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
4.运行部分:
调用上面写的函数,最后以没有输入大小,直接回车结束
a=['',0,0,'']
while(1):
s=输入()
if s!=None:
s=转换(s)
使用(s)
else:
print('结束')
break
二.第一个改良版
1.输入部分:
基本没变,将a变成了数组a,加入一个bls(变量数),来统计变量的个数
def 输入():
global bls
str=input()
s=str.split()
if len(s)>0:
if s[0]=='整数':
a[bls][0]=s[1]
bls=bls+1
elif s[0]=='看看' or s[0]=='如果':
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[0]
return s
else:
return None
2.转换部分:
无变化
def 转换(s):
if len(s)<=2:
s[1]=s[1]
elif s[2]=='零':
s[2]=0
elif s[2]=='一':
s[2]=1
elif s[2]=='二':
s[2]=2
elif s[2]=='三':
s[2]=3
elif s[2]=='四':
s[2]=4
elif s[2]=='五':
s[2]=5
elif s[2]=='六':
s[2]=6
elif s[2]=='七':
s[2]=7
elif s[2]=='八':
s[2]=8
elif s[2]=='九':
s[2]=9
elif s[2]=='十':
s[2]=10
elif s[3]=='零':
s[3]=0
elif s[3]=='一':
s[3]=1
elif s[3]=='二':
s[3]=2
elif s[3]=='三':
s[3]=3
elif s[3]=='四':
s[3]=4
elif s[3]=='五':
s[3]=5
elif s[3]=='六':
s[3]=6
elif s[3]=='七':
s[3]=7
elif s[3]=='八':
s[3]=8
elif s[3]=='九':
s[3]=9
elif s[3]=='十':
s[3]=10
return s
def 转换2(i):
if a[i][1]==0:
a[i][3]='零'
elif a[i][1]==1:
a[i][3]='一'
elif a[i][1]==2:
a[i][3]='二'
elif a[i][1]==3:
a[i][3]='三'
elif a[i][1]==4:
a[i][3]='四'
elif a[i][1]==5:
a[i][3]='五'
elif a[i][1]==6:
a[i][3]='六'
elif a[i][1]==7:
a[i][3]='七'
elif a[i][1]==8:
a[i][3]='八'
elif a[i][1]==9:
a[i][3]='九'
elif a[i][1]==10:
a[i][3]='十'
return s
3.使用部分:
围绕a变成数组a进行些许调整,另外增加对未定义变量的判断,当输入语句中出现没有定义过的变量时,输出没有这个变量.
def 使用(s):
global bls
global i
# 整数 气温 等于 十
if (s[0]=='整数') and (s[2]=='等于'):
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
# print(a[i][0])
a[i][1]=s[3]
# print(a[i][1])
i=0
# 气温 减少 三
for i in range(bls):
if s[0]==a[i][0]:
if s[1]=='减少':
a[i][1]=a[i][1]-s[2]
# print(a[i][1])
# 气温 增加 二
elif s[1]=='增加':
a[i][1]=a[i][1]+s[2]
# print(a[i][1])
if i>=bls:
print('没有这个变量')
i=0
# 看看 气温
if s[0]=='看看':
for i in range(bls):
if s[1]==a[i][0]:
转换2(i)
print(a[i][3])
if i>=bls:
print('没有这个变量')
i=0
# 如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”
if s[0]=='如果':
if s[2]=='大于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]>s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量')
elif s[2]=='小于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]<s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量')
elif s[2]=='等于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][0]==s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量')
i=0
4.运行部分:
在这里定义了全局变量bls和一个数组a,数组a每行的第一个是变量名,第二个是变量的数值的阿拉伯数字,第三个是可能需要加减的数值的阿拉伯数字,第四个是输出时转换成汉字数字的变量所代表的数值
a=[['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,'']]
bls=0 #变量数
i=0
while(1):
s=输入()
if s!=None:
s=转换(s)
使用(s)
else:
print('结束')
break
三.第二次修改版
1.输入部分:
无变化
def 输入():
global bls
str=input()
s=str.split()
if len(s)>0:
if s[0]=='整数':
a[bls][0]=s[1]
bls=bls+1
elif s[0]=='看看' or s[0]=='如果':
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[0]
return s
else:
return None
2.转换部分
转换函数无变化,转换2增加了输出负数和大于十的数的汉字转换,先判断数是负数还是零到十之间的数还是大于十的数,如果是零到十,就按之前的版本原样转换;如果是大于十的数,就先模十取余数,转换成汉字,然后再除以十,逐步将个十百千万位转换成汉字,并每转换一个汉字就插入到已经转换完成的汉字的前面,最终完成多位数的转换,叠加成一个字符串;如果是负数就先将数乘以负一,得到其绝对值,然后按照大于十的数来做,数字全部转换完成后,在前面插入一个"负"字
def 转换(s):
if len(s)<=2:
s[1]=s[1]
elif s[2]=='零':
s[2]=0
elif s[2]=='一':
s[2]=1
elif s[2]=='二':
s[2]=2
elif s[2]=='三':
s[2]=3
elif s[2]=='四':
s[2]=4
elif s[2]=='五':
s[2]=5
elif s[2]=='六':
s[2]=6
elif s[2]=='七':
s[2]=7
elif s[2]=='八':
s[2]=8
elif s[2]=='九':
s[2]=9
elif s[2]=='十':
s[2]=10
elif s[3]=='零':
s[3]=0
elif s[3]=='一':
s[3]=1
elif s[3]=='二':
s[3]=2
elif s[3]=='三':
s[3]=3
elif s[3]=='四':
s[3]=4
elif s[3]=='五':
s[3]=5
elif s[3]=='六':
s[3]=6
elif s[3]=='七':
s[3]=7
elif s[3]=='八':
s[3]=8
elif s[3]=='九':
s[3]=9
elif s[3]=='十':
s[3]=10
return s
def 转换2(i):
a[i][3]=''
j=0
#个位数
if a[i][1]<=10 and a[i][1]>=0:
if a[i][1]==0:
a[i][3]='零'
elif a[i][1]==1:
a[i][3]='一'
elif a[i][1]==2:
a[i][3]='二'
elif a[i][1]==3:
a[i][3]='三'
elif a[i][1]==4:
a[i][3]='四'
elif a[i][1]==5:
a[i][3]='五'
elif a[i][1]==6:
a[i][3]='六'
elif a[i][1]==7:
a[i][3]='七'
elif a[i][1]==8:
a[i][3]='八'
elif a[i][1]==9:
a[i][3]='九'
elif a[i][1]==10:
a[i][3]='十'
#大于十
elif a[i][1]>10:
b=a[i][1]
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
#小于零
elif a[i][1]<0:
b=a[i][1]*(-1)
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
a[i][3]=''.join(['负',a[i][3]])
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
3.使用部分:
略微修改,无大改动
def 使用(s):
global bls
global i
# 整数 气温 等于 十
if (s[0]=='整数') and (s[2]=='等于'):
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
# print(a[i][0])
a[i][1]=s[3]
# print(a[i][1])
i=0
# 气温 减少 三
if s[1]=='减少':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]-s[2]
# print(a[i][1])
if i>=bls:
print('没有这个变量1')
i=0
# 气温 增加 二
elif s[1]=='增加':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]+s[2]
# print(a[i][1])
if i>=bls:
print('没有这个变量1')
i=0
# 看看 气温
if s[0]=='看看':
for i in range(bls):
if s[1]==a[i][0]:
转换2(i)
print(a[i][3])
if i>=bls:
print('没有这个变量2')
i=0
# 如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”
if s[0]=='如果':
if s[2]=='大于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]>s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量3')
i=0
elif s[2]=='小于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]<s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量4')
i=0
elif s[2]=='等于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][0]==s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量5')
i=0
4.运行部分:
无改动
a=[['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,'']]
bls=0 #变量数
i=0
while(1):
s=输入()
if s!=None:
s=转换(s)
使用(s)
else:
print('结束')
break
四.第三次修改版
1.输入部分:
稍微调整了一下代码,修复一些小bug
def 输入():
global bls
global i
str=input()
s=str.split()
if len(s)>0:
if s[0]=='整数':
if bls==0:
a[bls][0]=s[1]
bls=bls+1
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
bls=bls+1
break
if (i+1)>=bls:
a[i+1][0]=s[1]
bls=bls+1
i=0
elif s[0]=='看看' or s[0]=='如果':
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[0]
# print(s)
return s
else:
return None
2.转换部分:
增加了输入负数和大于十的数的判断和转换
def 转换(s):
x=0
if len(s)<=2:
s[1]=s[1]
elif s[0]=='整数' or s[0]=='如果':
if s[3][0]=='负':
for i in range(1,len(s[3])):
if s[3][i]=='一':
x=x+1
elif s[3][i]=='二':
x=x+2
elif s[3][i]=='三':
x=x+3
elif s[3][i]=='四':
x=x+4
elif s[3][i]=='五':
x=x+5
elif s[3][i]=='六':
x=x+6
elif s[3][i]=='七':
x=x+7
elif s[3][i]=='八':
x=x+8
elif s[3][i]=='九':
x=x+9
elif s[3][i]=='十' or s[3][i]=='百' or s[3][i]=='千' or s[3][i]=='万':
if i==1:
x=(x+1)*10
else:
x=x*10
x=x*(-1)
else:
if s[3]=='零':
x=0
else:
for i in range(len(s[3])):
if s[3][i]=='一':
x=x+1
elif s[3][i]=='二':
x=x+2
elif s[3][i]=='三':
x=x+3
elif s[3][i]=='四':
x=x+4
elif s[3][i]=='五':
x=x+5
elif s[3][i]=='六':
x=x+6
elif s[3][i]=='七':
x=x+7
elif s[3][i]=='八':
x=x+8
elif s[3][i]=='九':
x=x+9
elif s[3][i]=='十' or s[3][i]=='百' or s[3][i]=='千' or s[3][i]=='万':
if i==0:
x=(x+1)*10
else:
x=x*10
s[3]=x
# print(s[3])
# print(s)
elif s[1]=='减少' or s[1]=='增加':
if s[2][0]=='负':
for i in range(1,len(s[2])):
if s[2][i]=='一':
x=x+1
elif s[2][i]=='二':
x=x+2
elif s[2][i]=='三':
x=x+3
elif s[2][i]=='四':
x=x+4
elif s[2][i]=='五':
x=x+5
elif s[2][i]=='六':
x=x+6
elif s[2][i]=='七':
x=x+7
elif s[2][i]=='八':
x=x+8
elif s[2][i]=='九':
x=x+9
elif s[2][i]=='十' or s[2][i]=='百' or s[2][i]=='千' or s[2][i]=='万':
if i==1:
x=(x+1)*10
else:
x=x*10
x=x*(-1)
else:
if s[2]=='零':
x=0
else:
for i in range(len(s[2])):
if s[2][i]=='一':
x=x+1
elif s[2][i]=='二':
x=x+2
elif s[2][i]=='三':
x=x+3
elif s[2][i]=='四':
x=x+4
elif s[2][i]=='五':
x=x+5
elif s[2][i]=='六':
x=x+6
elif s[2][i]=='七':
x=x+7
elif s[2][i]=='八':
x=x+8
elif s[2][i]=='九':
x=x+9
elif s[2][i]=='十' or s[2][i]=='百' or s[2][i]=='千' or s[2][i]=='万':
if i==0:
x=(x+1)*10
else:
x=x*10
s[2]=x
# print(s)
return s
def 转换2(i):
a[i][3]=''
j=0
#个位数
if a[i][1]<=10 and a[i][1]>=0:
if a[i][1]==0:
a[i][3]='零'
elif a[i][1]==1:
a[i][3]='一'
elif a[i][1]==2:
a[i][3]='二'
elif a[i][1]==3:
a[i][3]='三'
elif a[i][1]==4:
a[i][3]='四'
elif a[i][1]==5:
a[i][3]='五'
elif a[i][1]==6:
a[i][3]='六'
elif a[i][1]==7:
a[i][3]='七'
elif a[i][1]==8:
a[i][3]='八'
elif a[i][1]==9:
a[i][3]='九'
elif a[i][1]==10:
a[i][3]='十'
#大于十
elif a[i][1]>10:
b=a[i][1]
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
#小于零
elif a[i][1]<0:
b=a[i][1]*(-1)
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
a[i][3]=''.join(['负',a[i][3]])
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
3.使用部分:
稍微调整,修复了一些小bug,并且模块化了一些函数
def 定义变量(s):
if (s[0]=='整数') and (s[2]=='等于'):
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
# print(a[i][0])
a[i][1]=s[3]
# print(a[i][1])
break
if i>=bls:
a[i][0]=s[1]
a[i][3]=s[3]
i=0
def 加减法(s):
# 气温 减少 三
if s[1]=='减少':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]-s[2]
# print(a[i][1])
if i>=bls:
print('没有这个变量')
i=0
# 气温 增加 二
elif s[1]=='增加':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]+s[2]
# print(a[i][1])
if i>=bls:
print('没有这个变量')
i=0
def 打印(s):
if s[0]=='看看':
for i in range(bls):
if s[1]==a[i][0]:
转换2(i)
print(a[i][3])
# print(a)
if i>=bls:
print('没有这个变量')
i=0
def 使用(s):
global bls
global i
i=0
# 整数 气温 等于 十
定义变量(s)
# 气温 减少 三
加减法(s)
# 看看 气温
打印(s)
# 如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”
if s[0]=='如果':
if s[2]=='大于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]>s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='小于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]<s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='等于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][0]==s[3]:
s[6]=s[6].strip('“').strip('”')
print(s[6])
else:
s[9]=s[9].strip('“').strip('”')
print(s[9])
if i>=bls:
print('没有这个变量')
i=0
print(a)
4.运行部分:
无修改
a=[['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,'']]
bls=0 #变量数
i=0
while(1):
s=输入()
if s!=None:
s=转换(s)
使用(s)
else:
print('结束')
break
五.第四次修改版
1.输入部分:
无改动
def 输入():
global bls
global i
str=input()
s=str.split()
if len(s)>0:
if s[0]=='整数':
if bls==0:
a[bls][0]=s[1]
bls=bls+1
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
bls=bls+1
break
if (i+1)>=bls:
a[i+1][0]=s[1]
bls=bls+1
i=0
elif s[0]=='看看' or s[0]=='如果':
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[0]
# print(s)
return s
else:
return None
2.转换部分:
无改动
def 转换(s):
x=0
if len(s)<=2:
s[1]=s[1]
elif s[0]=='整数' or s[0]=='如果':
if s[3][0]=='负':
for i in range(1,len(s[3])):
if s[3][i]=='一':
x=x+1
elif s[3][i]=='二':
x=x+2
elif s[3][i]=='三':
x=x+3
elif s[3][i]=='四':
x=x+4
elif s[3][i]=='五':
x=x+5
elif s[3][i]=='六':
x=x+6
elif s[3][i]=='七':
x=x+7
elif s[3][i]=='八':
x=x+8
elif s[3][i]=='九':
x=x+9
elif s[3][i]=='十' or s[3][i]=='百' or s[3][i]=='千' or s[3][i]=='万':
if i==1:
x=(x+1)*10
else:
x=x*10
x=x*(-1)
else:
if s[3]=='零':
x=0
else:
for i in range(len(s[3])):
if s[3][i]=='一':
x=x+1
elif s[3][i]=='二':
x=x+2
elif s[3][i]=='三':
x=x+3
elif s[3][i]=='四':
x=x+4
elif s[3][i]=='五':
x=x+5
elif s[3][i]=='六':
x=x+6
elif s[3][i]=='七':
x=x+7
elif s[3][i]=='八':
x=x+8
elif s[3][i]=='九':
x=x+9
elif s[3][i]=='十' or s[3][i]=='百' or s[3][i]=='千' or s[3][i]=='万':
if i==0:
x=(x+1)*10
else:
x=x*10
s[3]=x
# print(s[3])
# print(s)
elif s[1]=='减少' or s[1]=='增加':
if s[2][0]=='负':
for i in range(1,len(s[2])):
if s[2][i]=='一':
x=x+1
elif s[2][i]=='二':
x=x+2
elif s[2][i]=='三':
x=x+3
elif s[2][i]=='四':
x=x+4
elif s[2][i]=='五':
x=x+5
elif s[2][i]=='六':
x=x+6
elif s[2][i]=='七':
x=x+7
elif s[2][i]=='八':
x=x+8
elif s[2][i]=='九':
x=x+9
elif s[2][i]=='十' or s[2][i]=='百' or s[2][i]=='千' or s[2][i]=='万':
if i==1:
x=(x+1)*10
else:
x=x*10
x=x*(-1)
else:
if s[2]=='零':
x=0
else:
for i in range(len(s[2])):
if s[2][i]=='一':
x=x+1
elif s[2][i]=='二':
x=x+2
elif s[2][i]=='三':
x=x+3
elif s[2][i]=='四':
x=x+4
elif s[2][i]=='五':
x=x+5
elif s[2][i]=='六':
x=x+6
elif s[2][i]=='七':
x=x+7
elif s[2][i]=='八':
x=x+8
elif s[2][i]=='九':
x=x+9
elif s[2][i]=='十' or s[2][i]=='百' or s[2][i]=='千' or s[2][i]=='万':
if i==0:
x=(x+1)*10
else:
x=x*10
s[2]=x
# print(s)
return s
def 转换2(i):
a[i][3]=''
j=0
#个位数
if a[i][1]<=10 and a[i][1]>=0:
if a[i][1]==0:
a[i][3]='零'
elif a[i][1]==1:
a[i][3]='一'
elif a[i][1]==2:
a[i][3]='二'
elif a[i][1]==3:
a[i][3]='三'
elif a[i][1]==4:
a[i][3]='四'
elif a[i][1]==5:
a[i][3]='五'
elif a[i][1]==6:
a[i][3]='六'
elif a[i][1]==7:
a[i][3]='七'
elif a[i][1]==8:
a[i][3]='八'
elif a[i][1]==9:
a[i][3]='九'
elif a[i][1]==10:
a[i][3]='十'
#大于十
elif a[i][1]>10:
b=a[i][1]
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
#小于零
elif a[i][1]<0:
b=a[i][1]*(-1)
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
a[i][3]=''.join(['负',a[i][3]])
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
3.使用部分:
增加了一个如果语句中出现加减法的调用算法
def 定义变量(s):
if (s[0]=='整数') and (s[2]=='等于'):
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
# print(a[i][0])
a[i][1]=s[3]
# print(a[i][1])
break
if i>=bls:
a[i][0]=s[1]
a[i][3]=s[3]
i=0
def 加减法(s):
# 气温 减少 三
if s[1]=='减少':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]-s[2]
# print(a[i][1])
if i>=bls:
print('没有这个变量')
i=0
# 气温 增加 二
elif s[1]=='增加':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]+s[2]
# print(a[i][1])
if i>=bls:
print('没有这个变量')
i=0
def 打印(s):
if s[0]=='看看':
for i in range(bls):
if s[1]==a[i][0]:
转换2(i)
print(a[i][3])
# print(a)
if i>=bls:
print('没有这个变量')
i=0
def 如果则(k):
if s[k]=='看看':
s[k+1]=s[k+1].strip('“').strip('”')
print(s[k+1])
elif s[k+1]=='增加' or s[k+1]=='减少':
for j in range(3):
b[j]=s[j+k]
转换(b)
加减法(b)
elif s[k]=='无':
k=k
def 使用(s):
global bls
global i
i=0
# 整数 气温 等于 十
定义变量(s)
# 气温 减少 三
加减法(s)
# 看看 气温
打印(s)
# 如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”
if s[0]=='如果':
if s[2]=='大于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]>s[3]:
k=5
如果则(k)
else:
k=8
如果则(k)
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='小于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]<s[3]:
k=5
如果则(k)
else:
k=8
如果则(k)
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='等于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][0]==s[3]:
k=5
如果则(k)
else:
k=8
如果则(k)
if i>=bls:
print('没有这个变量')
i=0
# print(a)
4.运行部分:
无变化
a=[['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,'']]
bls=0 #变量数
i=0
b=['','','']
while(1):
s=输入()
if s!=None:
s=转换(s)
使用(s)
else:
print('结束')
break
六.第五次修改版
1.输入部分:
删除了一些无用代码
def 输入():
global bls
global i
str=input()
s=str.split()
if len(s)>0:
return s
else:
return None
2.转换部分:
无改动,这一块的if,else每一个都有些许不同,所以不知道该怎么优化,怎么模块化
def 转换(s):
x=0
if len(s)<=2:
s[1]=s[1]
elif s[0]=='整数' or s[0]=='如果':
if s[3][0]=='负':
for i in range(1,len(s[3])):
if s[3][i]=='一':
x=x+1
elif s[3][i]=='二':
x=x+2
elif s[3][i]=='三':
x=x+3
elif s[3][i]=='四':
x=x+4
elif s[3][i]=='五':
x=x+5
elif s[3][i]=='六':
x=x+6
elif s[3][i]=='七':
x=x+7
elif s[3][i]=='八':
x=x+8
elif s[3][i]=='九':
x=x+9
elif s[3][i]=='十' or s[3][i]=='百' or s[3][i]=='千' or s[3][i]=='万':
if i==1:
x=(x+1)*10
else:
x=x*10
x=x*(-1)
else:
if s[3]=='零':
x=0
else:
for i in range(len(s[3])):
if s[3][i]=='一':
x=x+1
elif s[3][i]=='二':
x=x+2
elif s[3][i]=='三':
x=x+3
elif s[3][i]=='四':
x=x+4
elif s[3][i]=='五':
x=x+5
elif s[3][i]=='六':
x=x+6
elif s[3][i]=='七':
x=x+7
elif s[3][i]=='八':
x=x+8
elif s[3][i]=='九':
x=x+9
elif s[3][i]=='十' or s[3][i]=='百' or s[3][i]=='千' or s[3][i]=='万':
if i==0:
x=(x+1)*10
else:
x=x*10
s[3]=x
elif s[1]=='减少' or s[1]=='增加':
if s[2][0]=='负':
for i in range(1,len(s[2])):
if s[2][i]=='一':
x=x+1
elif s[2][i]=='二':
x=x+2
elif s[2][i]=='三':
x=x+3
elif s[2][i]=='四':
x=x+4
elif s[2][i]=='五':
x=x+5
elif s[2][i]=='六':
x=x+6
elif s[2][i]=='七':
x=x+7
elif s[2][i]=='八':
x=x+8
elif s[2][i]=='九':
x=x+9
elif s[2][i]=='十' or s[2][i]=='百' or s[2][i]=='千' or s[2][i]=='万':
if i==1:
x=(x+1)*10
else:
x=x*10
x=x*(-1)
else:
if s[2]=='零':
x=0
else:
for i in range(len(s[2])):
if s[2][i]=='一':
x=x+1
elif s[2][i]=='二':
x=x+2
elif s[2][i]=='三':
x=x+3
elif s[2][i]=='四':
x=x+4
elif s[2][i]=='五':
x=x+5
elif s[2][i]=='六':
x=x+6
elif s[2][i]=='七':
x=x+7
elif s[2][i]=='八':
x=x+8
elif s[2][i]=='九':
x=x+9
elif s[2][i]=='十' or s[2][i]=='百' or s[2][i]=='千' or s[2][i]=='万':
if i==0:
x=(x+1)*10
else:
x=x*10
s[2]=x
return s
def 转换2(i):
a[i][3]=''
j=0
if a[i][1]<=10 and a[i][1]>=0:
if a[i][1]==0:
a[i][3]='零'
elif a[i][1]==1:
a[i][3]='一'
elif a[i][1]==2:
a[i][3]='二'
elif a[i][1]==3:
a[i][3]='三'
elif a[i][1]==4:
a[i][3]='四'
elif a[i][1]==5:
a[i][3]='五'
elif a[i][1]==6:
a[i][3]='六'
elif a[i][1]==7:
a[i][3]='七'
elif a[i][1]==8:
a[i][3]='八'
elif a[i][1]==9:
a[i][3]='九'
elif a[i][1]==10:
a[i][3]='十'
elif a[i][1]>10:
b=a[i][1]
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
elif a[i][1]<0:
b=a[i][1]*(-1)
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
else:
a[i][3]=''.join(['',a[i][3]])
b=int(b/10)
if b==0:
a[i][3]=''.join(['负',a[i][3]])
break
elif b!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
3.使用部分:
修复了一些小问题,模块化了一个小函数
def 定义变量(s):
global i,bls
if (s[0]=='整数') and (s[2]=='等于'):
if bls==0:
a[bls][0]=s[1]
a[bls][1]=s[3]
bls=bls+1
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][0]=s[1]
a[i][1]=s[3]
break
if (i+1)>=bls:
a[i+1][0]=s[1]
a[i+1][1]=s[3]
bls=bls+1
i=0
def 加减法(s):
global i
if s[1]=='减少':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]-s[2]
if i>=bls:
print('没有这个变量')
i=0
elif s[1]=='增加':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]+s[2]
if i>=bls:
print('没有这个变量')
i=0
def 打印(s):
global i
if s[0]=='看看':
for i in range(bls):
if s[1]==a[i][0]:
转换2(i)
print(a[i][3])
if i>=bls:
print('没有这个变量')
i=0
def 如果则(k,s):
if s[k]=='看看':
s[k+1]=s[k+1].strip('“').strip('”')
print(s[k+1])
elif s[k+1]=='增加' or s[k+1]=='减少':
for j in range(3):
b[j]=s[j+k]
转换(b)
加减法(b)
elif s[k]=='无':
k=k
def 使用(s):
global bls
global i
i=0
定义变量(s)
加减法(s)
打印(s)
if s[0]=='如果':
if s[2]=='大于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]>s[3]:
k=5
如果则(k,s)
else:
k=8
如果则(k,s)
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='小于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]<s[3]:
k=5
如果则(k,s)
else:
k=8
如果则(k,s)
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='等于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][0]==s[3]:
k=5
如果则(k,s)
else:
k=8
如果则(k,s)
if i>=bls:
print('没有这个变量')
i=0
4.运行部分:
基本没变,增加了一个主函数,稍微调整了一下样子,方便查看代码
a=[['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''], # a[0,1,2,3]
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''], # a[0]是变量名,a[1]是输入的阿拉伯数字,
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,'']] # a[2]是加减的数字,a[3]是输入的汉字数字
bls=0 #变量数
i=0
b=['','',''] #加减法用的,和加减法的输入语句格式相同,b[0]是变量名,b[1]是增加或减少,b[2]是汉字数字
def main():
print('变量定义:整数 (变量名) 等于 (数字)')
print('运算(加法):(变量名) 增加 (数字')
print('运算(减法):(变量名) 减少 (数字)')
print('输出:看看 (变量名) or 看看 “(字符串内容)')
print('选择:如果 (判断语句) 则 (操作语句) 否则 (操作语句)')
print('若否则后没有任何操作使用(无)来进行填充(参考样例2)。')
print('回车结束')
print('------------------------------------------------------------')
while(1):
s=输入()
if s!=None:
s=转换(s)
使用(s)
else:
print('结束')
break
main()
七.第六次修改版(实力有限,可能是最终版本了)
1.输入部分:
def 输入():
global bls
global i
str=input()
s=str.split()
if len(s)>0:
return s
else:
return None
2.转换部分:
模块化了一部分代码,并且优化了一下代码
def 转换中的小函数(s,k,w):
x=0
for i in range(w,len(s[k])):
if s[k][i]=='一':
x=x+1
elif s[k][i]=='二':
x=x+2
elif s[k][i]=='三':
x=x+3
elif s[k][i]=='四':
x=x+4
elif s[k][i]=='五':
x=x+5
elif s[k][i]=='六':
x=x+6
elif s[k][i]=='七':
x=x+7
elif s[k][i]=='八':
x=x+8
elif s[k][i]=='九':
x=x+9
elif s[k][i]=='十':
if i==w:
x=(x+1)*10
else:
x=x*10
elif s[k][i]=='百' or s[k][i]=='千' or s[k][i]=='万':
if i+3<len(s[k]):
if (s[k][i]=='万' and s[k][i+2]=='千') or (s[k][i]=='千' and s[k][i+2]=='百') or (s[k][i]=='百' and s[k][i+2]=='十'):
x=x*10
elif (s[k][i]=='万' and s[k][i+2]=='百') or (s[k][i]=='万' and s[k][i+3]=='百') or (s[k][i]=='千' and s[k][i+2]=='十') or (s[k][i]=='千' and s[k][i+3]=='十'):
x=x*100
elif (s[k][i]=='万' and s[k][i+2]=='十') or (s[k][i]=='万' and s[k][i+3]=='十'):
x=x*1000
elif s[k][i]=='万' and i+5>=len(s[k]):
x=x*10000
elif s[k][i]=='千' and i+4>=len(s[k]):
x=x*1000
elif s[k][i]=='百' and i+3>=len(s[k]):
x=x*100
return x
def 汉字转数字(s):
x=0
if len(s)<=2:
s[1]=s[1]
elif s[0]=='整数' or s[0]=='如果':
k=3
if s[3][0]=='负':
w=1
x=转换中的小函数(s,k,w)
x=x*(-1)
else:
if s[3]=='零':
x=0
else:
w=0
x=转换中的小函数(s,k,w)
s[3]=x
elif s[1]=='减少' or s[1]=='增加':
k=2
if s[2][0]=='负':
w=1
x=转换中的小函数(s,k,w)
x=x*(-1)
else:
if s[2]=='零':
x=0
else:
w=0
x=转换中的小函数(s,k,w)
s[2]=x
return s
def 数字转汉字(i):
a[i][3]=''
j=0
if a[i][1]<=10 and a[i][1]>=0:
if a[i][1]==0:
a[i][3]='零'
elif a[i][1]==1:
a[i][3]='一'
elif a[i][1]==2:
a[i][3]='二'
elif a[i][1]==3:
a[i][3]='三'
elif a[i][1]==4:
a[i][3]='四'
elif a[i][1]==5:
a[i][3]='五'
elif a[i][1]==6:
a[i][3]='六'
elif a[i][1]==7:
a[i][3]='七'
elif a[i][1]==8:
a[i][3]='八'
elif a[i][1]==9:
a[i][3]='九'
elif a[i][1]==10:
a[i][3]='十'
elif a[i][1]>10:
b=a[i][1]
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
b=int(b/10)
if b==0:
break
elif b!=0:
if b%10!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
elif a[i][1]<0:
b=a[i][1]*(-1)
for j in range(10):
if b%10==1:
a[i][3]=''.join(['一',a[i][3]])
elif b%10==2:
a[i][3]=''.join(['二',a[i][3]])
elif b%10==3:
a[i][3]=''.join(['三',a[i][3]])
elif b%10==4:
a[i][3]=''.join(['四',a[i][3]])
elif b%10==5:
a[i][3]=''.join(['五',a[i][3]])
elif b%10==6:
a[i][3]=''.join(['六',a[i][3]])
elif b%10==7:
a[i][3]=''.join(['七',a[i][3]])
elif b%10==8:
a[i][3]=''.join(['八',a[i][3]])
elif b%10==9:
a[i][3]=''.join(['九',a[i][3]])
b=int(b/10)
if b==0:
a[i][3]=''.join(['负',a[i][3]])
break
elif b!=0:
if b%10!=0:
if j==0:
a[i][3]=''.join(['十',a[i][3]])
elif j==1:
a[i][3]=''.join(['百',a[i][3]])
elif j==2:
a[i][3]=''.join(['千',a[i][3]])
elif j==3:
a[i][3]=''.join(['万',a[i][3]])
elif j==4:
a[i][3]=''.join(['十',a[i][3]])
elif j==5:
a[i][3]=''.join(['百',a[i][3]])
elif j==6:
a[i][3]=''.join(['千',a[i][3]])
elif j==7:
a[i][3]=''.join(['亿',a[i][3]])
elif j==8:
a[i][3]=''.join(['十',a[i][3]])
elif j==9:
a[i][3]=''.join(['百',a[i][3]])
3.使用部分:
修复了一些小bug
def 定义变量(s):
global i,bls
if (s[0]=='整数') and (s[2]=='等于'):
if bls==0:
a[bls][0]=s[1]
a[bls][1]=s[3]
bls=bls+1
else:
for i in range(bls):
if a[i][0]==s[1]:
a[i][1]=s[3]
break
if (i+1)>=bls:
if a[i][0]!=s[1]:
a[i+1][0]=s[1]
a[i+1][1]=s[3]
bls=bls+1
i=0
def 加减法(s):
global i
if s[1]=='减少':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]-s[2]
if i>=bls:
print('没有这个变量')
i=0
elif s[1]=='增加':
for i in range(bls):
if s[0]==a[i][0]:
a[i][1]=a[i][1]+s[2]
if i>=bls:
print('没有这个变量')
i=0
def 打印(s):
global i
if s[0]=='看看':
for i in range(bls):
if s[1]==a[i][0]:
数字转汉字(i)
print(a[i][3])
if i>=bls:
print('没有这个变量')
i=0
def 如果则(k,s):
if s[k]=='看看':
s[k+1]=s[k+1].strip('“').strip('”')
print(s[k+1])
elif s[k+1]=='增加' or s[k+1]=='减少':
for j in range(3):
b[j]=s[j+k]
汉字转数字(b)
加减法(b)
elif s[k]=='无':
k=k
def 使用(s):
global bls
global i
i=0
定义变量(s)
加减法(s)
打印(s)
if s[0]=='如果':
if s[2]=='大于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]>s[3]:
k=5
如果则(k,s)
else:
k=8
如果则(k,s)
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='小于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][1]<s[3]:
k=5
如果则(k,s)
else:
k=8
如果则(k,s)
if i>=bls:
print('没有这个变量')
i=0
elif s[2]=='等于':
for i in range(bls):
if s[1]==a[i][0]:
if a[i][0]==s[3]:
k=5
如果则(k,s)
else:
k=8
如果则(k,s)
if i>=bls:
print('没有这个变量')
i=0
4.运行部分:
a=[['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''], # a[0,1,2,3]
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''], # a[0]是变量名,a[1]是输入的阿拉伯数字,
['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,''],['',0,0,'']] # a[2]是加减的数字,a[3]是输入的汉字数字
bls=0 #变量数
i=0
b=['','',''] #加减法用的,和加减法的输入语句格式相同,b[0]是变量名,b[1]是增加或减少,b[2]是汉字数字
def main():
print('变量定义:整数 (变量名) 等于 (数字)')
print('运算(加法):(变量名) 增加 (数字')
print('运算(减法):(变量名) 减少 (数字)')
print('输出:看看 (变量名) or 看看 “(字符串内容)')
print('选择:如果 (判断语句) 则 (操作语句) 否则 (操作语句)')
print('若否则后没有任何操作使用(无)来进行填充(参考样例2)。')
print('回车结束')
print('------------------------------------------------------------')
while(1):
s=输入()
if s!=None:
s=汉字转数字(s)
使用(s)
else:
print('结束')
break
main()