第一次个人编程作业

第一次个人编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/SE
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/SE/homework/10283
这个作业的目标 编写一个程序,制作一个简易的中文语言编译器
作业正文 第一次个人编程作业
其他参考文献 Python元组 Python函数
GitHub链接 Git

编程题目

汉字是迄今为止持续使用时间最长的文字,也是上古时期各大文字体系中唯一传承至今者,中国历代皆以汉字为主要的官方文字。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
小杨同学想到:用汉字来进行编程一定很有趣,来请你帮帮他。

编程要求

请编写一个程序,制作一个简易的中文语言编译器,即使用中文语法进行编程,输入为逐行输入,每行为一个语句,一个语句代变一个操作,满足以下语法要求(括号内代变格式类型,具体参考样例):
变量定义:整数 (变量名) 等于 (数字)
运算(加法):(变量名) 增加 (数字)
运算(减法):(变量名) 减少 (数字)
输出:看看 (变量名) or 看看 “(字符串内容)”

附加要求:

选择:如果 (判断语句) 则 (操作语句) 否则 (操作语句)
若否则后没有任何操作使用(无)来进行填充(参考样例2)。

代码行数: 128行

所用时间:

Python的自学:2天。分析和代码框架建立:1天。补全代码:一个下午。
总有人以为自己学了点爬虫就会python.mp4感觉没啥拿得出手的语言,Java学的不太行,C也有点遗忘了,那干脆来个没学的python吧(迫真。

思路:

1.创建中文数字转阿拉伯数字的函数trans1,再创建阿拉伯数字转中文数字的函数trans2(本想用字典实现的,但是在学习字典的反向使用中遇到了困难,所以只好用if else来实现)trans1用于获取输入并将数字用于计算,trans2用于把计算结果转换成中文。
2.创建函数获取输入,将输入的中文存在在字符串str中,用split(" ")以空格为分片。循环获取输入,返回输入值直至输入为空,返回None。
3.创建使用部分函数,使用if判断输入,输入正确则将输入存入字符串并赋值给2个转换函数中的参数。当输入到增加、减少部分将元组相应位置进行计算,当输入到判断位置,时进行判断并输出判断结果。


# -*- coding: UTF-8 -*-


def trans1(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 trans2(temp):
    if temp[1] == 0:
        temp[3] = '零'
    elif temp[1] == 1:
        temp[3] = '一'
    elif temp[1] == 2:
        temp[3] = '二'
    elif temp[1] == 3:
        temp[3] = '三'
    elif temp[1] == 4:
        temp[3] = '四'
    elif temp[1] == 5:
        temp[3] = '五'
    elif temp[1] == 6:
        temp[3] = '六'
    elif temp[1] == 7:
        temp[3] = '七'
    elif temp[1] == 8:
        temp[3] = '八'
    elif temp[1] == 9:
        temp[3] = '九'
    elif temp[1] == 10:
        temp[3] = '十'
    return temp


def get_input():
    str = input()
    s = str.split(" ")
    if len(s) > 0:
        if s[0] == '整数':
            temp[0] = s[1]
        elif s[0] == '看看' or '如果':
            temp[0] = s[1]
        else:
            temp[0] = s[0]
        return s
    else:
        return None


def rep(s, temp):
    if (s[0] == '整数') and (s[2] == '等于'):
        temp[0] = s[1]  # 整数 气温
        # print(temp[0])
        temp[1] = s[3]  # 等于 十
        # print(temp[1])
    if s[0] == temp[0]:
        if s[1] == '减少':  # 气温 减少 二
            temp[1] = temp[1] - s[2]
            # print(temp[1])
        if s[1] == '增加':  # 气温 增加 四
            temp[1] = temp[1] + s[2]
            # print(temp[1])

    if s[0] == '看看':  # 看看 气温
        trans2(temp)
        print(temp[3])

    if s[0] == '如果':  # 如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”
        if s[2] == '大于':
            if temp[1] > s[3]:
                print(s[6])     # “你好,世界”
            else:
                print(s[9])     # “冻死我了”


if __name__ == '__main__':
    temp = ['', 0, 0, '']
    while 1:
        s = get_input()
        if s is not None:
            s = trans1(s)
            temp = trans2(temp)
            rep(s, temp)

代码肯定仍存在不少问题,欢迎大家提出。

参考资料:

Python元组 Python函数

你可能感兴趣的:(第一次个人编程作业)