2018年6月28日笔记
上午上课前分享
高等数学求解及作图软件:mathmatica
5.循环嵌套




左上九九乘法表
if __name__ == '__main__':
for i in range(1,10):
for j in range(1,11-i):
print("%d*%d=%2d" %(i,j,i*j),end=' ')
print()
上面一段代码的运行结果如下:

左下九九乘法表
if __name__ == '__main__':
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%d" %(i,j,i*j),end=' ')
print()
上面一段代码的运行结果如下:

右上九九乘法表
if __name__ == '__main__':
for i in range(1,10):
for j in range(1,i):
print(' '*7,end='')
for j in range(i,10):
print("%d*%d=%-2d" %(i,j,i*j),end=' ')
print()
上面一段代码的运行结果如下:

右下九九乘法表
if __name__ == '__main__':
for i in range(1,10):
for j in range(1,10-i):
print(' '*7,end='')
for j in range(10-i,10):
print("%d*%d=%-2d" %(i,j,i*j),end=' ')
print()
上面一段代码的运行结果如下:

6.推导式
下面两段代码的作用相同,但是推导式对数据处理更加简单、高效。
items = []
for i in range(1,11):
items.append(i)
items = [i for i in range(1,11)]
用代码验证推导式的高效性
import time
if __name__ == '__main__':
startTime = time.time()
list1 = []
for i in range(1,10000000):
list1.append(i)
print(time.time()-startTime)
startTime = time.time()
list2 = [k for k in range(1,10000000)]
print(time.time()-startTime)
上面一段代码的运行结果如下,从下面的结果可以看出速度差距为2、3倍左右,当数据量更大时,可能差距更大。:
2.5785739421844482
0.9168956279754639
多个推导式示例:
if __name__ == '__main__':
a = [i**2 for i in range(1,10)]
b = [j+1 for j in range(1,10)]
c = [n for n in range(1,10) if n % 2 == 0]
d = [letter.lower() for letter in 'ABCDEFGHIJK']
print(a,b,c,d,sep='\n')
上面一段代码的运行结果如下:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8]
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
7.循环控制
示例1:如果某字母在字符串中存在,则直接跳出循环
if __name__ == '__main__':
for letter in 'Python':
if letter == 'h':
break
print(letter)
上面一段代码的运行结果如下:
h
在python中,for...else结构的作用,else后面接的执行语句在for循环正常执行完,即不是通过break跳出的情况下才会执行。代码示例如下:
if __name__ == '__main__':
for i in range(10):
if i == 5:
print("found it! i = %d"%i)
break
else:
print("No found it....")
上面一段代码的运行结果如下:
found it! i = 5
for循环练习
有四个数字:1、 2 、3、 4,能组成多少个互不相同且无重复数字的三位数?各是多少?
if __name__ == '__main__':
result = set()
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if len(set([i,j,k])) == 3:
result.add(i*100+j*10+k)
print(result)
print(len(result))
上面一段代码的运行结果如下:
{132, 134, 142, 143, 412, 413, 421, 423, 431, 432, 312, 314, 321, 324, 213, 214, 341, 342, 231, 234, 241, 243, 123, 124}
24
网友评论