第1关:字符串反转

挑战任务
将输入的字符串str进行反转。

编程要求
补全右侧inversion(self,str)函数实现字符串的反转并返回反转之后的字符串,其中函数参数str表示要反转的字符串。

测试说明
将反转的字符串作为函数的返回值返回

输入:

hello world

输出:

dlrow olleh

#!/usr/bin/env python
# -*- coding: utf-8 -*-


class Task:
    def inversion(self, str):
        new_str = []
        index = len(str) # 计算列表中元素的个数
        while index: 
            index -= 1
            new_str.append(str[index])
        return  new_str

第2关:简单计算器

挑战任务
本关任务:编写一个能计算两个数字加减乘除的小程序。

编程要求
根据提示,在右侧编辑器补充代码,实现计算并返回简单表达式的值。

返回结果请保留2位小数。

本关涉及的代码文件src/step3/easy_cal_stu.py,请读者仔细阅读并完成空缺代码的填写。

测试说明
本关的测试文件是src/step3/main.py。

读者将src/step3/easy_cal_stu.py中的代码补充完毕,然后点击评测,平台自动编译运行src/step3/main.py,并以标准输入方式提供测评输入;
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
我会对你编写的代码进行测试:

每次测试输入3行。

第一行输入一个字符op,表示要进行的运算,保证表达式进行的运算只有加减乘除,即该字符只可能是+ - * /中的一个。
第二行输入一个数字,表示第一个操作数num_1。
第三行输入一个数字,表示第二个操作数num_2。
测试输入:
*
5
6

预期输出:
30.00

class Solution:
    def solve(self, op, num_1, num_2):
        '''
        :type op, num_1, num_2: str, int, int
        :rtype : Str
        '''
        #请在此添加代码,实现计算并返回表达式的结果,要求结果保留2位小数
        #********** Begin *********#
        ops=['+','-','*','/']
        if op in ops:
            s=eval('%d %s %d'%(num_1,op,num_2))
            return ("%.2f"%s)
        #********** End *********#

第3关:九九乘法表

挑战任务
打印九九乘法表。

编程要求

利用for循环来打印下面的九九乘法表。

python两个数相乘运算_数组

提示:相邻两列之间相隔4个空格的距离。

测试说明
测试输入:无输入
预期输出:
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81

for a in range(1,10):
    for b in range(1,a+1):
        print ("%dx%d=%d    " %(a,b,a*b),end ="")
    print ()

第4关:数组排序

挑战任务
本关挑战任务是对一个数组进行排序,排序需要遵守一些规则:

先对数组从左到右,相邻元素进行比较,如果第一个比第二个大,就交换它们,进行一个升序排序;
再对数组从右到左,相邻元素进行比较,如果第一个比第二个小,就交换它们,进行一个降序排序;
以此类推,持续的、依次的改变排序的方向,并不断缩小没有排序的数组范围;
按照这种规则依次给整个数组排序,并将排序过程打印到控制台。

比如给出一组数据4,1,3,5,2,排序过程如下:

python两个数相乘运算_字符串_02

最后得到结果:1 2 3 4 5。

编程要求
请在右侧编辑器中填充代码,补全sort(self,xlist)函数,实现指定的排序功能,并打印出排序过程,函数参数说明如下:

xlist:待排序的数组

注:不需排序的数组(如:1 2 3),直接打印原数组。

测试说明
样例1:

输入:

2 3 4 5 1

输出:

python两个数相乘运算_数组_03

样例2:

输入:

1 5 4 3 2 6

输出:

python两个数相乘运算_数组_04

class Task:

    def sort(self, xlist):
        # ********* Begin *********#
        if sorted(xlist) == xlist:
            xlist1 = list(map(str, xlist))
            print(' '.join(xlist1))
        else:
            for i in range(int(len(xlist)/2)):
                for i in range(len(xlist) - 1):
                    if xlist[i] > xlist[i + 1]:
                        xlist[i],xlist[i+1] = xlist[i+1],xlist[i]

                        xlist1 = list(map(str, xlist))
                        print(' '.join(xlist1))
                for i in range(len(xlist) - 1, 0, -1):
                    if xlist[i] < xlist[i-1]:
                        xlist[i], xlist[i-1] = xlist[i-1], xlist[i]
                        xlist1 = list(map(str, xlist))
                        print(' '.join(xlist1))
    # ********* End *********#

第5关:找基因

任务描述
生物学家使用A,C,T, 和G构成的字符串来构建一个基因组,基因是其中的的一个子串,它固定从ATG这三元组后开始,在TAG, TAA,或者TGA之前结束。此外,每个基因字符串的长度是3的倍数,而且不包括:ATG,TAG,TAA,和TGA这四种子串。 输入一个字符串(基因组),输出其中所有的基因,如果没有找到基因,则输出error。

测试说明
每一行输入一个由A,C,T,和G构成的字符串,分行输出找到的基因字符串(3的倍数长度),注意,一个基因字符串输出一行。

输入输出样例

输入:TTATGTTTTAAGGATGGGGCGTTAGTT
输出:
TTT
GGGCGT

输入:TGTGTGTATAT
输出:error

def find_gene(genes): 
    if genes.find('ATG') != -1:
        index = genes.find('ATG')
        start = genes[index+3:]   #截至到起始密码子之后
        number = len(start)//3    #使用列表的手段,将字符串三个三个拿出来
        gene = []
        for i in range(number):
            gene.append(start[3*i:3*i+3])
        final =['TAG','TAA','TGA'] #将终止密码子储存起来
        final_index = []
        for x in final:
            if x in gene:
                final_index.append(gene.index(x))
        if final_index:    #如果存在终止密码子继续运行
            first = gene[:min(final_index)]  #终止密码子等价
            print(''.join(first))   #取出第一段基因
            second = gene[min(final_index)+1:] #取出其余部分转换为字符串开始迭代
            second = ''.join(second)
            find_gene(second)
        else:    #不存在的话就,走人
            print('error')
genes = input('')
if genes.find('ATG') == -1:  #起始密码子都不存在的情况
    print('error')
else:
    find_gene(genes)