python测试解答的简单介绍

发布时间:2022-11-18

本文目录一览:

  1. 跪求一道Python的题目解答!
  2. Python笔试题,求大神解答
  3. Python题求解答!
  4. 大佬们,关于一道python题目,在网上只有结果的式子...跪求解答!
  5. 40道python二级考试真题火爆互联网,完整版答案解析为你保驾护航

跪求一道Python的题目解答!

def isMima(mima):
    mima = str(mima)
    if mima.isdigit() and len(mima) == 6:
        for i in range(1, 6):
            int_i = mima[i]
            int_idel1 = str((int(mima[i-1]) + 1) ** 3)[-1]
            if int_i != int_idel1:
                return print('wrong')
        return print('right')
    else:
        return print('wrong')
isMima(272727)
isMima(123456)
isMima('272727')

字符串数字都可以输入

Python笔试题,求大神解答

以下是我给你的一些建议:(有多种方法可实现,包括最新的f'') 一:(可以使用join)

a = [(14.58, 120.972), (14.58344, 120.9723)]  # 初始化列表a
print(a)  # 输出a列表便于对比
b = [','.join('({:.6f},{:.6f})'.format(*b) for b in a)]  # 格式化a列表
print(b)  # 输出格式化后的列表

或:(因刚刚手工没测试,上机后发现列表带有''号,上面代码可以尝试改成这样)

a = [(14.58, 120.972), (14.58344, 120.9723)]  # 初始化列表a
print(a)  # 输出a列表便于对比
b = "[%s]" % ','.join('({:.6f},{:.6f})'.format(*b) for b in a)  # 格式化a列表
print(b)  # 输出格式化后的列表

二:(使用官方3.6新增的格式化功能)

a = [(14.58, 120.972), (14.58344, 120.9723)]  # 初始化列表a
print(a)  # 输出a列表便于对比
(x, y), (i, k) = a  # 解包
# 对包进行格式化操作
x = f'{a[0][0]:.6f}'
y = f'{a[0][1]:.6f}'
i = f'{a[1][0]:.6f}'
k = f'{a[1][1]:.6f}'
# 输出
print([(x, y), (i, k)])

或:(因刚刚手工没测试,上机后发现列表带有''号,上面代码可以尝试改成这样)

a = [(14.58, 120.972), (14.58344, 120.9723)]  # 初始化列表a
print(a)  # 输出列表a,方便对比
# 格式化列表a
a = f'[({a[0][0]:.6f},{a[0][1]:.6f}),({a[1][0]:.6f},{a[1][1]:.6f})]'
# 输出格式后的列表a
print(a)

注: 个人建议使用formatf''代替%进行格式化操作。官方推荐用f-格式化。 为什么呢? 举个例子:(以下代码在python在可运行正常)

name = "run24pro"
print("my name is %s" % name)

但如果改成这样:

name = (1, 2, 3)
print("my name is %s" % name)

运行的时候将会返回一个类型错误。而以下代码将不会。

name = (1, 2, 3)
print("my name is {}".format(name))
name = (1, 2, 3)
print(f'"my name is {name}"')

还有一点,新增的功能f-格式化是所有中最快的。 附:官方3.6新增的格式化功能供你参考 网页链接 参考: PEP 498 -- Literal String Inte Python 3.6中新的f-strings 纯手工,如果对你有帮助望采纳!

Python题求解答!

单元测试

如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。 比如对函数abs(),我们可以编写出以下几个测试用例:

  • 输入正数,比如1、1.2、0.99,期待返回值与输入相同;
  • 输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反;
  • 输入0,期待返回0;
  • 输入非数值类型,比如None、[]、{},期待抛出TypeError。 把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。 如果单元测试通过,说明我们测试的这个函数能够正常工作。如果单元测试不通过,要么函数有bug,要么测试条件输入不正确,总之,需要修复使单元测试能够通过。 单元测试通过后有什么意义呢?如果我们对abs()函数代码做了修改,只需要再跑一遍单元测试,如果通过,说明我们的修改不会对abs()函数原有的行为造成影响,如果测试不通过,说明我们的修改与原有行为不一致,要么修改代码,要么修改测试。 这种以测试为驱动的开发模式最大的好处就是确保一个程序模块的行为符合我们设计的测试用例。在将来修改的时候,可以极大程度地保证该模块行为仍然是正确的。 我们来编写一个Dict类,这个类的行为和dict一致,但是可以通过属性来访问,用起来就像下面这样:
d = Dict(a=1, b=2)
d['a']
1
d.a
1

mydict.py代码如下:

class Dict(dict):
    def __init__(self, **kw):
        super(Dict, self).__init__(**kw)
    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(r"'Dict' object has no attribute '%s'" % key)
    def __setattr__(self, key, value):
        self[key] = value

为了编写单元测试,我们需要引入Python自带的unittest模块,编写mydict_test.py如下:

import unittest
from mydict import Dict
class TestDict(unittest.TestCase):
    def test_init(self):
        d = Dict(a=1, b='test')
        self.assertEquals(d.a, 1)
        self.assertEquals(d.b, 'test')
        self.assertTrue(isinstance(d, dict))
    def test_key(self):
        d = Dict()
        d['key'] = 'value'
        self.assertEquals(d.key, 'value')
    def test_attr(self):
        d = Dict()
        d.key = 'value'
        self.assertTrue('key' in d)
        self.assertEquals(d['key'], 'value')
    def test_keyerror(self):
        d = Dict()
        with self.assertRaises(KeyError):
            value = d['empty']
    def test_attrerror(self):
        d = Dict()
        with self.assertRaises(AttributeError):
            value = d.empty

编写单元测试时,我们需要编写一个测试类,从unittest.TestCase继承。 以test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行。 对每一类测试都需要编写一个test_xxx()方法。由于unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们所期望的。最常用的断言就是assertEquals()

self.assertEquals(abs(-1), 1) # 断言函数返回的结果与1相等

另一种重要的断言就是期待抛出指定类型的Error,比如通过d['empty']访问不存在的key时,断言会抛出KeyError

with self.assertRaises(KeyError):
    value = d['empty']

而通过d.empty访问不存在的key时,我们期待抛出AttributeError

with self.assertRaises(AttributeError):
    value = d.empty

运行单元测试

一旦编写好单元测试,我们就可以运行单元测试。最简单的运行方式是在mydict_test.py的最后加上两行代码:

if __name__ == '__main__':
    unittest.main()

这样就可以把mydict_test.py当做正常的python脚本运行:

$ python mydict_test.py

另一种更常见的方法是在命令行通过参数-m unittest直接运行单元测试:

$ python -m unittest mydict_test
.....
----------------------------------------------------------------------
Ran 5 tests in 0.000s
OK

这是推荐的做法,因为这样可以一次批量运行很多单元测试,并且,有很多工具可以自动来运行这些单元测试。

setUp与tearDown

可以在单元测试中编写两个特殊的setUp()tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。 setUp()tearDown()方法有什么用呢?设想你的测试需要启动一个数据库,这时,就可以在setUp()方法中连接数据库,在tearDown()方法中关闭数据库,这样,不必在每个测试方法中重复相同的代码:

class TestDict(unittest.TestCase):
    def setUp(self):
        print 'setUp...'
    def tearDown(self):
        print 'tearDown...'

可以再次运行测试看看每个测试方法调用前后是否会打印出setUp...tearDown...

小结

  • 单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。
  • 单元测试的测试用例要覆盖常用的输入组合、边界条件和异常。
  • 单元测试代码要非常简单,如果测试代码太复杂,那么测试代码本身就可能有bug。
  • 单元测试通过了并不意味着程序就没有bug了,但是不通过程序肯定有bug。

大佬们,关于一道python题目,在网上只有结果的式子...跪求解答!

a, n = map(int, input().split())
print(a, end='')
for i in range(1, n):
    a = a * 10 + a % 10
    print('+%d' % (a), end='')

40道python二级考试真题火爆互联网,完整版答案解析为你保驾护航

  1. 以下关于程序设计语言的描述,错误的选项是:
    • A Python语言是一种脚本编程语言
    • B 汇编语言是直接操作计算机硬件的编程语言
    • C 程序设计语言经历了机器语言、汇编语言、脚本语言三个阶段
    • D 编译和解释的区别是一次性翻译程序还是每次执行时都要翻译程序
    • 正确答案:C
  2. 表达式 1001 == 0x3e7 的结果是:
    • A false
    • B False
    • C true
    • D True
    • 正确答案:B
  3. 以下选项,不是Python保留字的选项是:
    • A del
    • B pass
    • C not
    • D string
    • 正确答案:D
  4. 表达式 eval('500/10') 的结果是:
    • A '500/10'
    • B 500/10
    • C 50
    • D 50.0
    • 正确答案:D
  5. 表达式 type(eval('45')) 的结果是:
    • A
    • B
    • C None
    • D
    • 正确答案:D
  6. 表达式 pmod(20,3) 的结果是:
    • A 6, 2
    • B 6
    • C 2
    • D (6, 2)
    • 正确答案:D
  7. 以下关于字符串类型的操作的描述,错误的是:
    • A str.replace(x,y)方法把字符串str中所有的x子串都替换成y
    • B 想把一个字符串str所有的字符都大写,用str.upper()
    • C 想获取字符串str的长度,用字符串处理函数 str.len()
    • D 设 x = 'aa' ,则执行x*3的结果是'aaaaaa'
    • 正确答案:C
  8. str = 'python',想把字符串的第一个字母大写,其他字母还是小写,正确的选项是:
    • A print(str[0].upper()+str[1:])
    • B print(str[1].upper()+str[-1:1])
    • C print(str[0].upper()+str[1:-1])
    • D print(str[1].upper()+str[2:])
    • 正确答案:A
  9. 以下选项,不属于程序流程图基本元素的是:
    • A 循环框
    • B 连接点
    • C 判断框
    • D 起始框
    • 正确答案:A
  10. 以下关于循环结构的描述,错误的是:
    • A 遍历循环使用for in语句,其中循环结构不能是文件
    • B 使用range()函数可以指定for循环的次数
    • C for i in range(5)表示循环5次,i的值是从0到4
    • D 用字符串做循环结构的时候,循环的次数是字符串的长度
    • 正确答案:A
  11. 执行以下程序,输入"93python22",输出结果是:
    • A python9322
    • B python
    • C 93python22
    • D 9322
    • 正确答案:C
    • A la
    • B 请输入整数
    • C pythonpython
    • D python
    • 正确答案:C
    • A 2
    • B 请输入q退出:
    • C 3
    • D 1
    • 正确答案:A
  12. 以下程序的输出结果是:
    • A 0
    • B 2
    • C UnboundLocalError
    • D 5
    • 正确答案:A
    • A 18 None
    • B 10 18
    • C UnboundLocalError
    • D 18 18
    • 正确答案:B
def test(b=2, a=4):
    global z
    z += a * b
    return z
z = 10
print(test(), z)

18,18 17. 以下程序的输出结果是: - A 22.0 None - B 10 None - C 22 None - D 10.0 22.0 - 正确答案:B 18. 以下表达式,正确定义了一个集合数据对象的是: - A x = {200, 'flg', 20.3} - B x = (200, 'flg', 20.3) - C x = [200, 'flg', 20.3] - D x = {'flg': 20.3} - 正确答案:A 19. 以下程序的输出结果是: - A ['z', 'j', 's', 'y'] - B ['j', 's', 'y', 'z'] - C ['j', 'z', 'z', 's', 'z', 'y', 'j'] - D ['j', 'j', 's', 'y', 'z', 'z', 'z'] - 正确答案:B 20. 以下程序的输出结果是: - A htslbht - B hlbst - C tsblh - D hhlstt - 正确答案:B 21. 已知id(ls1) = 4404896968,以下程序的输出结果是: - A 4404896968 4404896904 - B 4404896904 4404896968 - C 4404896968 4404896968 - D 4404896904 4404896904 - 正确答案:A 22. - A ['300','200','400'] - B ['shandong', 'hebei', 'beijing'] - C [300,200,400] - D 'shandong', 'hebei', 'beijing' - 正确答案:B 23. 以下关于文件的描述,错误的是: - A 二进制文件和文本文件的操作步骤都是“打开-操作-关闭” - B open()打开文件之后,文件的内容并没有在内存中 - C open()只能打开一个已经存在的文件 - D 文件读写之后,要调用close()才能确保文件被保存在磁盘中了 - 正确答案:C 24. 以下程序输出到文件text.csv里的结果是: - A [90,87,93] - B 90,87,93 - C '[90,87,93]' - D '90,87,93' - 正确答案:B 25. 以下程序的输出结果是: - A ([1,2,3,4,5]) - B [12, 34, 56, 78] - C ([12, 34, 56, 78]) - D [1,2,3,4,5] - 正确答案:B 26. 以下关于数据维度的描述,错误的是: - A 采用列表表示一维数据,不同数据类型的元素是可以的 - B JSON格式可以表示比二维数据还复杂的高维数据 - C 二维数据可以看成是一维数据的组合形式 - D 字典不可以表示二维以上的高维数据 - 正确答案:D 27. 以下不属于Python的pip工具命令的选项是: - A show - B install - C download - D get - 正确答案:D 29. 以下不是程序输出结果的选项是: - A [12, 78, 56, 34] - B [56, 12, 78, 34] - C [12, 34, 56, 78] - D [12, 78, 34, 56] - 正确答案:C 30. 以下关于turtle库的描述,正确的是: - A 在import turtle之后就可以用circle()语句,来画一个圆圈 - B 要用from turtle import turtle来导入所有的库函数 - C home()函数设置当前画笔位置到原点,朝向东 - D seth(x)setheading(x)函数的别名,让画笔向前移动x - 正确答案:C 31. 一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用 - A 栈 - B 堆 - C 链表 - D 数组 - 正确答案:A 因为函数调用是能过将关键寄存器压栈保护现场;在函数返回时,弹栈恢复现场来完成的。 而递归调用说白了就是自已调用自己。也就是不停的上演pop, push的栈操作。 系统为什么选用栈来实现函数间的调用呢?我觉的主要原因如下: 对于频繁的调用操作过程中,栈的pop,push操作最简洁,快速。硬件级(或者理解成汇编级也行)支持栈操作。所以用栈最高效,快速。如果用堆、数组、链表,不光要维护很多功能辅助性数据,算法也很麻烦。这样会大大降低计算机的使用效率。 32. 下列叙述中正确的是 - A 一个算法的空间复杂度大,则其时间复杂度必定小 - B 一个算法的空间复杂度大,则其时间复杂度也必定大 - C 算法的时间复杂度与空间复杂度没有直接关系 - D 一个算法的时间复杂度大,则其空间复杂度必定小 - 正确答案:C 34. 软件开发离不开系统环境资源的支持,其中必要的测试数据属于 - A 辅助资源 - B 硬件资源 - C 通信资源 - D 支持软件 - 正确答案:A 35. 完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是 - A 错误推测法 - B 白箱测试法 - C 黑箱测试法 - D 安装测试法 - 正确答案:C 37. 下列有关数据库的描述,正确的是 - A 数据库是一个关系 - B 数据库是一个DBF文件 - C 数据库是一个结构化的数据集合 - D 数据库是一组文件 - 正确答案:C 38. 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和 - A 可重用性差 - B 冗余性 - C 非持久性 - D 安全性差 - 正确答案:B 39. 软件开发的结构化生命周期方法将软件生命周期划分成 - A 定义、开发、运行维护 - B 设计阶段、编程阶段、测试阶段 - C 总体设计、详细设计、编程调试 - D 需求分析、功能定义、系统设计 - 正确答案:A 40. 下列不属于结构化分析的常用工具的是 - A 判定树 - B 数据字典 - C 数据流图 - D PAD图 - 正确答案:C