Skip to content

Latest commit

 

History

History
130 lines (91 loc) · 2.22 KB

lihua-BugList.md

File metadata and controls

130 lines (91 loc) · 2.22 KB

李华的BugList

1

描述

已知在Python自带的time模块中有一个time(), 以下为Pythonhelp()给出的描述:

Help on built-in function time in time:

time.time = time(...)
    time() -> floating point number

    Return the current time in seconds since the Epoch.
    Fractions of a second may be present if the system clock provides them.
(END)

尝试调用这个函数

import time
print(time())

报错信息

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable

期望输出示例

1569436649.6920297

原因

阅读报错信息可知错误示例中的 time() 做的事是调用time模块(module),而我们想做的的是调用time模块中的 time() 方法(function)

解决方案

import time
print(time.time())

import time as time
print(time())

2

描述

传递给max()一个列表, 会返回列表中的最大值, 但问题是这个不应被改动的列表的顺序改变了.

def max(list):
    list.sort()
    return list[-1]


l = [3, 1, 4, 7, 9]
print(str(max(l)) + ' is ' + 'The max element in ' + str(l))

错误输出示例

9 is The max element in [1, 3, 4, 7, 9]

期望输出示例

9 is The max element in [3, 1, 4, 7, 9]

原因

方法 sort() 的作用是永久性的,故用max()处理后列表顺序改变并且不会复原

解决方案

使用函数 sorted() 处理列表再赋值给另外一个变量

def max(list):
    list1 = sorted(list)
    return list1[-1]

l = [3, 1, 4, 7, 9]
print(str(max(l)) + ' is ' + 'The max element in ' + str(l))

3

描述

这是一个很值得注意的问题. 同样有一个很明显的错误, 为什么代码片段一能成功运行代码片段二会报错?

代码片段一

i = 666
if i > 250:
    print('It works!')
else:
    print('It will never run into here')
    # then a obvious bug
    everpveqmrpm

代码片段二

i = 666
if i > 250:
    print('It works!')
else:
    print('It will never run into here')
# then a obvious bug
everpveqmrpm