查看: 727|回复: 0

[源码分享] 【原创】Python全栈工程师(0基础到精通)教程 第十七课

[复制链接]
发表于 2018-7-15 21:27 | 显示全部楼层 |阅读模式
马化腾丶 2018-7-15 21:27 727 0 显示全部楼层




ParisGabriel
感谢 大家的支持                                全部课程 原文地址 :
                                                                           http://www.cnblogs.com/ParisGabriel/tag/Python/

                                                       


                    每天坚持手写  一天一篇 点个订阅吧  决定坚持几年 全栈工程师(包含:python、爬虫、Web、人工智能、h5等      讲完接着 java、黑客攻防 、渗透、                                                               易语言(比较简单学完python基本就会了)、等等到时候再说....  IT无止境!   灰常感谢    当个死粉也阔以                      

                                                                                Python人工智能从入门到精通


week summer:




  1. # # 练习:
  2. # #   已知有列表:
  3. # #     L = [3, 5]
  4. # #     1) 用索引和切片等操作,将原列表改变为:
  5. # #     L = [1, 2, 3, 4, 5, 6]

  6. L = [3, 5]
  7. L[0: 2]
  8. L = [1, 2, 3, 4, 5, 6]
  9. print(L)

  10. #################################################################

  11. # #     2) 将列表反转,删除最后一个元素后打印此列表
  12. # #        ...
  13. # #        print(L)  # [6, 5, 4, 3, 2]

  14. L = [6, 5, 4, 3, 2]
  15. L.reverse()
  16. del L[-1]
  17. print(L)
  18. #################################################################

  19. # #        练习:
  20. # #   1. 写程序,让用户输入一些整数,当输入-1时结束输入,将这些数存于列表L中
  21. # #     1)  打印用户共输入了几个数?
  22. # #     2)  打印您输入的数的最大数是多少
  23. # #     3)  打印您输入的数的最小数是多少
  24. # #     4)  打印您输入的这些数的平均值是多少?

  25. L = []
  26. while True:
  27.     a = int(input("please input -1 over :"))
  28.     if a == -1:
  29.         break
  30.     L.append(a)
  31.     print(len(L))
  32.     print(max(L))
  33.     print(min(L))
  34.     print(sum(L) / len(L))
  35. #################################################################

  36. # # 练习:
  37. # #   输入多行文字,存入列表中,
  38. # #   每次输入回车后算一行
  39. # #     任意输入多行,当输入回车(即输入空行时结束输入)
  40. # #   1) 按原输入内容在屏幕上输出内容
  41. # #   2) 打印出您共输入了多少行文字
  42. # #   3) 打印出您共输入了多少个字符

  43. L = []
  44. i = 0
  45. while True:
  46.     a = input("please input '' over:")
  47.     if a == "":
  48.         break
  49.     L.append(a)
  50.     i += len(a)

  51. for x in L:
  52.     print(x)
  53. print(len(L))
  54. print(i)

  55. #################################################################

  56. # 练习:
  57. #   1. 有字符串"hello"
  58. #     请用此字符串生成:
  59. #       'h e l l o' 和 'h-e-l-l-o'
  60. #     答案:
  61. #       s = "hello"
  62. #       a = ' '.join(s)  # a = 'h e l l o'
  63. # #       b = '-'.join(s)  # b = 'h-e-l-l-o'

  64. a = "hello"
  65. print(" ".join(a))
  66. print("-".join(a))
  67. #################################################################

  68. # #   2. 写一个程序,让用户输入很多正整数,当输入小于零的数时结束输入,
  69. # #     1) 打印这些数中最大的一个数
  70. # #     2) 打印这些数中第二大的一个数
  71. # #     3) 删除最小的一个数
  72. # #     4) 打印剩余数的和

  73. L = []
  74. while True:
  75.     a = int(input("please input -1 over:"))
  76.     if a < 0:
  77.         break
  78.     L.append(a)
  79. L.sort()
  80. print(max(L))
  81. print(L[1])
  82. del L[-1]
  83. print(sum(L))

  84. #################################################################

  85. # # 练习:
  86. # #   用列表推导式生成1~100内奇数的列表
  87. # #   结果是: [1, 3, 5, 7, ..... 99]

  88. # #   L = [x for x in range(1, 100, 2)]

  89. L = [x for x in range(1, 100, 2)]
  90. #################################################################

  91. # #   示例:
  92. # #     生成1~00内的奇数的列表:
  93. # #   L = [x for x in range(1, 100) if x % 2 == 1]

  94. L = [x for x in range(1, 100) if x % 2 != 0]
  95. #################################################################

  96. # # 练习:
  97. # #   生成一个数值为 1 ~ 9的平方的列表,去掉所有的奇数的平方
  98. # #     L = [x**2 for x in range(1, 10)]

  99. L = [x ** 2 for x in range(0, 10, 2)]
  100. #################################################################

  101. # #     # L = [4, 16, 36, 64]
  102. # #     练习:
  103. # #   1. 已知有一个字符串
  104. # #      s = '100,200,300,500,800'
  105. # #      将其转化为整数的列表存于L列表中
  106. # #      L = [100, 200, 300, 500, 800]

  107. s = '100,200,300,500,800'
  108. L = []
  109. for x in s:
  110.     L.append(s)
  111. print(L)

  112. #################################################################

  113. # #   2. 生成前40个斐波那契数(Fibonacci)
  114. # #       1  1  2  3  5  8  13  .....
  115. # #       要求将这些数保存在列表中
  116. # #       打印这些数

  117. L = [1, 1]
  118. while True:
  119.     a = L[0] + L[1]
  120.     L.append(a)
  121.     if len(L) == 40:
  122.         break
  123. print(L)
  124. #################################################################

  125. # #   3. 有一些数存于列表中:
  126. # #     L = [1, 3, 2, 1, 6, 4, 2, ..... 98, 82]
  127. # #     将列表中出现的数字存入到另一个列表L2中
  128. # #       要求: 重复出现多次的数字在L2列表中只保留一份(去重)

  129. L = [1, 3, 2, 1, 6, 4, 2, 98, 98, 82]
  130. L2 = []
  131. for x in L:
  132.     if x not in L2:
  133.         L2.append(x)
  134. print(s)
  135. #################################################################

  136. # #       写程序,实现以下要求:
  137. # #   1) 将如下数据形成一个字典seasons:
  138. # #     '键'    '值'
  139. # #      1      '春季有1, 2, 3月'
  140. # #      2      '夏季有4, 5, 6月'
  141. # #      3      '秋季有7, 8, 9月'
  142. # #      4      '冬季有10,11,12月'
  143. # #   2) 让用户输入一个整数,代表一个季度,
  144. # # 打印这个季度对应的信息,如果用户输入的信息不在字典内,则打印信息不存在

  145. d = {1: '春季有1, 2, 3月',
  146.         2: '夏季有4, 5, 6月',
  147.         3: '秋季有7, 8, 9月',
  148.         4: '冬季有10,11,12月'}
  149. a = int(input("please input :"))
  150. for x in d:
  151.     if a == x:
  152.         print(d[a])
  153. else:
  154.     print("no")
  155. #################################################################

  156. # # 练习:
  157. #   输入一段字符串,打印出这个字符串中出现过的字符的出现次数
  158. #   如:
  159. #     输入:
  160. #       abcdabcaba
  161. #     打印:
  162. #       a: 4次
  163. #       b: 3次
  164. #       d: 1次
  165. #       c: 2次
  166. #     注:
  167. #        不要求打印的顺序

  168. a = input("please input string:")
  169. d = {}
  170. for x in a:
  171.     if x in d:
  172.         d[x] += 1
  173.     else:
  174.         d[x] = 1
  175. for i in d:
  176.     print(i, d[i])
  177. #################################################################

  178. # #        练习:
  179. # #   有字符串的列表如下:
  180. # #     L = ['tarena', 'xiaozhang', 'tyke']
  181. # #     用上述列表生成如下字典:
  182. # #       d = {'tarena': 6, 'xiaozhang': 9, 'tyke':4}
  183. # #     注:
  184. # #       字典的值为键的长度

  185. L = ['tarena', 'xiaozhang', 'tyke']
  186. d = {x: len(x) for x in L}
  187. print(d)
  188. #################################################################

  189. # #       练习:
  190. # #   1. 已知有两个等长的列表 list1  和 list2
  191. # #   以list1中的元素为键,以list2中的元素为值,生成相应的字典
  192. # #   list1 = [1001, 1002, 1003, 1004]
  193. # #   list2 = ['Tom', 'Jerry', 'Spike', 'Tyke']
  194. # #   生成的字典为:
  195. # #     {1001: 'Tom', 1002:'Jerry', .....}

  196. list1 = [1001, 1002, 1003, 1004]
  197. list2 = ['Tom', 'Jerry', 'Spike', 'Tyke']
  198. d = {list1[x]: list2[x] for x in range(len(list1))}
  199. print(d)
  200. #################################################################

  201. # 集合练习:
  202. #   经理有: 曹操,刘备,孙权
  203. #   技术员有: 曹操,孙权,张飞,关羽
  204. #   用集合求:
  205. #     1) 即是经理,也是技术员的有谁?
  206. #     2) 是经理,但不是技术员的人员都有谁?
  207. #     3) 是技术员,不是经理的都有谁
  208. #     4) 张飞是经理吗?
  209. #     5) 身兼一职的人都有谁?
  210. #     6) 经理和技术员共有几个人?

  211. L = {"曹操", '刘备', "孙权"}
  212. L1 = {"曹操", "孙权", "张飞", "关羽"}
  213. print(L & L1)
  214. print(L - L1)
  215. print(L1 - L)
  216. if "张飞" in L:
  217.     print("yes")
  218. else:
  219.     print("no")
  220. print(L1 ^ L)
  221. print(len(L1 | L))

  222. #################################################################

  223. # 练习:
  224. #   任意输入一些数字,存于列表L中。当输入负数时结束输入
  225. #   1) 打印这些数的和
  226. #   2) 打印这些数有多少种(去重)
  227. #   3) 除重复的数字后,打印这些剩余数字的和

  228. #   提示,可以用集合去重

  229. L = []
  230. while True:
  231.     a = int(input("please input integer:"))
  232.     if a < 0:
  233.         break
  234.     L.append(a)
  235. print(sum(L))
  236. s = {x for x in L}
  237. print(len(s))
  238. print(sum(s))

  239. #################################################################

  240. #   练习:
  241. #   1. 写一个函数myadd, 此函数中的参数列表里有两个参数x, y
  242. #     此函数的功能是打印 x + y 的和

  243. #     def myadd(....):
  244. #         ....  # 注: .... 部是是我们要填写代码的地方

  245.     # myadd(100, 200)  # 300
  246.     # print("ABC", "123")  # ABC123


  247. def myadd(x, y):
  248.     print(x + y)
  249. myadd(100, 200)
  250. print("ABC", "123")

  251. #################################################################


  252. # #   2. 写一个函数 mysum, 传入一个参数x代表终止整数,
  253. # #      打印出 1 + 2 + 3 + 4 + ..... + x的和
  254. # #     def mysum(x):
  255. # #         ....

  256. def mysum(x):
  257.     i = 0
  258.     for x in range(x + 1):
  259.         i += x
  260.     print(i)
  261. mysum(100)
  262. mysum(4)
  263. #################################################################

  264. # # 练习:
  265. # #   1. 写一个函数 mymax, 给函数传递两个参数,返回两个实参中最大的一个
  266. # #     def mymax(a, b):
  267. # #          ....

  268. #     v = mymax(100, 200)
  269. #     print('v =', v)  # v = 200
  270. #     print(mymax('ABC', 'abc'))  # abc

  271. def mymax(a, b):
  272.     if a > b:
  273.         return a
  274.     else:
  275.         return b
  276. v = mymax(100, 200)
  277. print('v =', v)
  278. print(mymax('ABC', 'abc'))
  279. #################################################################

  280. # #   2. 写一个函数 input_number
  281. # #       def input_number():
  282. # #           ....
  283. # #       此函数用来获取用户循环输入的整数,当用户输入负数时结束输入。
  284. # #       将用户输入的数字以列表的形式返回,再用内建函数max, min,
  285. # #       sum取出户输入的最大值,最小值及和
  286. # #       L = input_number()
  287. # #       print(L)  # 打印此列表
  288. # #       print("用户输入的最大数是:", max(L))
  289. # #       print("用户输入的最小数是:", min(L))
  290. # #       print("用户输入的数的和是:", sum(L))

  291. def input_number():
  292.     L = []
  293.     while True:
  294.         number = int(input("please input:"))
  295.         if number < 0:
  296.             break
  297.         L.append(number)
  298.     return L
  299. L = input_number()
  300. print(L)  # 打印此列表
  301. print("用户输入的最大数是:", max(L))
  302. print("用户输入的最小数是:", min(L))
  303. print("用户输入的数的和是:", sum(L))
  304. #################################################################

  305. # # 练习:
  306. # #    1. 写一个函数 print_odd, 打印从begin开始,到end结束(不包含end)内的全部的奇数
  307. # #       def print_odd(begin, end):
  308. # #           ....

  309. def print_odd(begin, end):
  310.     for x in range(begin, end):
  311.         if x % 2 == 1:
  312.             print(x)
  313. print_odd(1, 10)

  314. print_odd(10, 20)

  315. #################################################################

  316. # #    2. 定义两个函数:
  317. # #       sum3(a, b, c) 用于返回三个数的和
  318. # #       pow3(x)  用于返回x的三次方
  319. # #       用以上函数计算:
  320. # #         1. 计算1的立方 + 2的立方 + 3的立方的和
  321. # #           即:  1**3 + 2**3 + 3**3的和
  322. # #         2. 计算1 + 2 + 3 的和的立方,
  323. # #           即:(1+2+3)**3

  324. def sum3(a, b, c):
  325.     return a + b + c
  326. def pow3(x):
  327.     return x ** 3
  328. sum3(pow3(1), pow3(2),pow3(3))
  329. pow3(sum3(1, 2, 3))
  330. #################################################################

  331. #  练习:
  332. #   写一个函数minmax(a, b, c)  有三个参数,这回这三个参数中的最小值和最大值,
  333. #   要求,形成元组,最小值在前,最大值在后,如:

  334. #   def minmax(a, b, c):
  335. #       ...
  336. #   t = minmax(11, 33, 22)
  337. #   print(t)  # (11, 33)  # <<< 打印元组
  338. #   xiao, da = minmax(6, 5, 4)
  339. # #   print('最小值:', xiao, '最大值:', da)

  340. def minmax(a, b, c):
  341.     z = a
  342.     if z < b:
  343.         z = b
  344.     if z < c:
  345.         z = c
  346.     x = a
  347.     if x > b:
  348.         x = b
  349.     if x > c:
  350.         x = c
  351.     return (x, z)
  352. t = minmax(11, 33, 22)
  353. print(t)
  354. xiao, da = minmax(6, 5, 4)
  355. print('最小值:', xiao, '最大值:', da)

  356. #################################################################

  357. # # 练习:
  358. # #   写一个函数 myadd, 此函数可以计算两个数的和,也可以计算三个数的和

  359. # #   def myadd(......):
  360. # #      ....
  361. # #   print(myadd(10, 20))  # 30
  362. # #   print(myadd(100, 200, 300))  # 600

  363. def myadd(a, *args):
  364.     for x in args:
  365.         a += x
  366.     return a
  367. print(myadd(100, 200))
  368. print(myadd(100, 200, 300))


  369. #################################################################

  370. # #   2. 写一个函数,print_odd, 此函数可以传递一个实参,也可以传递两个实参,当传递一个实参时代表结束值
  371. # #   当传递两个实参时,第一个实参代表起始值,第二个实参代表结束值
  372. # #      打印出以此区间内的全部奇数,不包含结束数:

  373. # #   print_odd(10)  # 1 3 5 7 9
  374. # #   print_odd(11, 20)  # 11 13 15 17 19   

  375. def print_odd(a, b=None):
  376.     for x in range(a, b):
  377.         if x % 2 != 0:
  378.             print(x)

  379. print_odd(10)
  380. print_odd(11, 20)
  381. #################################################################

  382. # #   练习:
  383. # #   写一个函数, mysum可以传入任意个实参的数字,返回所有实参的和

  384. #   def mysum(*args):
  385. #      ...
  386. #   print(mysum(1, 2, 3, 4))  # 10
  387. #   print(mysum(10, 20, 30))  # 60

  388. def mysum(*args):
  389.     i = 0
  390.     for x in args:
  391.         i += x
  392.     return i
  393. print(mysum(1, 2, 3, 4))
  394. print(mysum(10, 20, 30))
  395. #################################################################

  396. # # 练习:
  397. # #   写一个函数,mymax类似于 内键的函数max
  398. # #     详见:
  399. # #       >>> help(max)
  400. # #    仿造 max 写一信mymax函数,功能与max完全相同
  401. # #    (要求不允许调用max函数)
  402. # #    print(mymax([6, 8, 3, 5]))  # 8
  403. # #    print(mymax(100, 200))  # 200
  404. # #    print(mymax(1, 3, 5, 9, 7))  # 9

  405. def mymax(a, *args):
  406.     if args is None:
  407.         x = a[0]
  408.         for i in a:
  409.             if x > a[i]:
  410.                 x = a[i]
  411.         return x
  412.     else:
  413.         x = a
  414.         for i in args:
  415.             if x > i:
  416.                 x = i
  417.         return x
  418. print(mymax([6, 8, 3, 5]))
  419. print(mymax(100, 200))
  420. print(mymax(1, 3, 5, 9, 7))
  421. #################################################################

  422. # # 练习:
  423. # #   创建一个全局变量 L = []
  424. # #   写一个函数:
  425. # #     def input_number():
  426. # #         ....
  427. # #     此函数每次调用将从键盘读入一些数字追加到列表L中
  428. # #   如:
  429. # #     L = []
  430. # #     def input_number():
  431. # #         ....
  432. # #     input_number()
  433. # #     print(L)  # [ .... 这些是您从键盘输入的数..]

  434. L = []
  435. def input_number():
  436.     while True:
  437.         number = int(input("pleae inout bumber:"))
  438.         if number < 0:
  439.             break
  440.         L.append(number)

  441. #################################################################

  442. # # 练习:
  443. # #   1. 写一个函数isprime(x) 判断x是否为素数。如果是素数,返回True,否则返回False

  444. def isprime(x):
  445.     for i in range(2, x):
  446.         if x / i % 0:
  447.             return False
  448.             break
  449.         else:
  450.             return True
  451. #################################################################

  452. # #   2. 写一个函数prime_m2n(m, n) 返回从m开始,到n结束(不包含n)范围内的素数,返回这些素数的列表并打印
  453. # #     如:
  454. # #       L = prime_m2n(5, 10)
  455. # #       print(L)  [5, 7]

  456. def prime_m2(m, n):
  457.     L = []
  458.     for x in range(m, n):
  459.         if isprime(x) is True:
  460.             L.append(x)
  461.     return L

  462. L = prime_m2(2, 5)
  463. print(L)
  464. #################################################################

  465. # #   3. 写一个函数pimes(n) 返回小于n的全部素数的列表,并打印这些素数
  466. # #     如:
  467. # #       L = primes(10)
  468. # #       print(L)  # [2, 3, 5, 7]
  469. # #     1) 打印100 以内的全部素数
  470. # #     2) 打印200 以内的全部素数的和


  471. def pimes(n):
  472.     prime_m2(2, n)
  473. L = pimes(10)
  474. print(L)  # [2, 3, 5, 7]
  475. #################################################################

  476. # #   4. 编写函数 fn(n) 此函数返回下列级数的和:
  477. # #       fn(n) = 1/(1*2) + 1/(2*3) + ....
  478. # #       + 1/(n*(n-1)) 的和
  479. # #     print(fn(100))

  480. def fn(n):
  481.     i = 0
  482.     for x in range(n):
  483.         i += x / (x + 1)
  484. print(fn(100))
  485. #################################################################

  486. #           练习:
  487. #   写一个函数叫hello(name),部分代码如下:
  488. #   count = 0
  489. #   def hello(name):
  490. #       print('你好', name)
  491. #       ... 此处代码省略,需要同学们自己填写
  492. #       ... 此处代码需要改变全局变量来记录此函数曾经被调用过多少次.
  493. count = 0
  494. def hello(name):
  495.     print("hello", name)
  496.     count += 1
  497. hello('小张')
  498. hello('小李')
  499. print('hello 函数被调用', count, '次')  # 2次

  500. #################################################################

  501. #   练习:
  502. #   1. 写一个lambda 表达式,判断这个数的2次方+1是否能被5整除,如果能被整除返回True, 否则返回False
  503. #      例:
  504. #         fa = lambda x: .....
  505. #         print(fa(2))  # True
  506. #         print(fa(4))  # False

  507. fa = lambda x: (x ** 2 + 1) / 5 % 0
  508. print(fa(2))
  509. print(fa(4))
  510. #################################################################

  511. #   2. 写一个lambda表达式,求两个变量的最大值
  512. #      例如:
  513. #         def mymax(x, y):
  514. #            ...
  515. #         mymax = lambda ...
  516. #         print(mymax(100, 200))  # 200
  517. mymax = lambda x, y: x if x > y else y
  518. print(mymax(100, 200))  # 200
  519. #################################################################

  520. # 练习:
  521. #   1. 给出一个整数n,写一个函数myfac来计算n!(n的阶乘)
  522. #     n! = 1 * 2 * 3 * 4 * ..... * n
  523. #     如:
  524. #       print(myfac(5))  # 120
  525. def myfac(n):
  526.     x = 0
  527.     for i in range(1, n + 1):
  528.         x = i * (i + 1)
  529.     return x
  530. print(myfac(5))
  531. #################################################################


  532. #   2. 给出一个整数n,写一个函数计算myfn(n):
  533. #       1 + 2**2 + 3**3 + .... + n**n的和
  534. #     如:
  535. #       print(myfn(10)) # ???

  536. def myfn(n):
  537.     i = 1
  538.     for x in range(2, n + 1):
  539.         i += x ** x
  540.     return i
  541. print(myfn(10))
  542. #################################################################

  543. #   3. 完全数:
  544. #      1 + 2 + 3 = 6 (6为完全数)
  545. #      1,2,3都为6的因数(因数是能被一个数x整除的整数为y,则y为x的因数)
  546. #      1 x 6 = 6
  547. #      2 x 3 = 6
  548. #      完全数是指除自身以外的所有因数相加之和等于自身的数
  549. #      求 4~5个完全数并打印出来
  550. #      答案:
  551. #        6
  552. #        28
  553. #        496
  554. #        ......

  555. def wq_bumber(x):
  556.     s = 0
  557.     for i in range(1, x):
  558.         if x % i == 0:
  559.             s += i
  560.     if s == x:
  561.         return True
  562.     else:
  563.         return False
  564. i = 0
  565. x = 0
  566. while i < 4:
  567.     x += 1
  568.     if wq_bumber(x) is True:
  569.         print(x)
  570.         i += 1
  571. 复制代码
  572. 一共39到题  写了 3个多小时 ............
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表