A.raw_input返回数据类型为string的值,因此需要进行类型转换>>> item = raw_input("Enter Number:")
Enter Number:2
>>> type(item)
>>> item = int(raw_input("Enter Number:"))
Enter Number:4
>>> type(item)
>>>
B.类型转换期间的异常处理如果用户从数字中输入任何其他字符,则上面的代码将引发需要处理的ValueError异常。
例如>>> item = int(raw_input("Enter Number:"))
Enter Number:w
Traceback (most recent call last):
File "", line 1, in
ValueError: invalid literal for int() with base 10: 'w'
带异常处理的演示:>>> try:
... item = int(raw_input("Enter Number:"))
... except ValueError:
... print "Enter only digits."
...
Enter Number:rt
Enter only digits.
C.与实际算法相关
不需要变量逻辑。
b.返回值时不需要if循环。
c.最好将函数号改为sumOfOddNumbers,即更有意义。
演示:def sumOfOddNumbers (numbers_list):
total = 0
for number in numbers_list:
if (number % 2 == 1):
total += number
return total
E.运行以下代码的时间:lst = range(10000000)
def sum_of_odd_numbers1():
return sum((i*(i%2) for i in lst), 0)
def sum_of_odd_numbers2():
return sum((i for i in lst if i%2), 0)
def sum_of_odd_numbers3():
return sum(filter(lambda x: x%2, lst), 0)
def sumOfOddNumbers ():
total = 0
for number in lst:
if (number % 2 == 1):
total += number
return total
import time
start_time = time.time()
sum_of_odd_numbers1()
end_time = time.time()
print "Timing of sum_of_odd_numbers1:", end_time - start_time
start_time = time.time()
sum_of_odd_numbers2()
end_time = time.time()
print "Timing of sum_of_odd_numbers2:", end_time - start_time
start_time = time.time()
sum_of_odd_numbers3()
end_time = time.time()
print "Timing of sum_of_odd_numbers3:", end_time - start_time
start_time = time.time()
sumOfOddNumbers()
end_time = time.time()
print "Timing of sumOfOddNumbers:", end_time - start_time
各自输出:vivek:~$ python /home/vivek/workspace/vtestproject/study/timer.py
Timing of sum_of_odd_numbers1: 2.4171102047
Timing of sum_of_odd_numbers2: 1.73781108856
Timing of sum_of_odd_numbers3: 2.09230113029
Timing of sumOfOddNumbers: 1.42781090736