|
楼主 |
发表于 2020-3-9 17:38:58
|
显示全部楼层
本帖最后由 Delina 于 2020-3-9 17:46 编辑
2020/3/9学习日记
今天是关于python的一些语法的加深,摘要一些重点(摘自菜鸟教程):
python中的[:-1]和[::-1]用法说明:
- <b>b = a[i:j] # 表示复制a[i]到a[j-1],以生成新的list对象
- a = [0,1,2,3,4,5,6,7,8,9]
- b = a[1:3] # [1,2]
- # 当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
- # 当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
- # 当i,j都缺省时,a[:]就相当于完整复制一份a
- b = a[i:j:s] # 表示:i,j与上面的一样,但s表示步进,缺省为1.
- # 所以a[i:j:1]相当于a[i:j]
- # 当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
- # 所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。</b>
复制代码
用字典记录学生名字和分数,再分级:
- <b>#!/usr/bin/python3
- students= {}
- write = 1
- while write :
- name = str(input('输入名字:'))
- grade = int(input('输入分数:'))
- students[str(name)] = grade
- write= int(input('继续输入?\n 1/继续 0/退出'))
- print('name rate'.center(20,'-'))
- for key,value in students.items():
- if value >= 90:
- print('%s %s A'.center(20,'-')%(key,value))
- elif 89 > value >= 60 :
- print('%s %s B'.center(20,'-')%(key,value))
- else:
- print('%s %s C'.center(20,'-')%(key,value))</b>
复制代码 测试结果
输入名字:a输入分数:98继续输入 1/继续 0/退出1
输入名字:b
输入分数:23
继续输入
1/继续 0/退出0
-----name rate----
-------a 98 A-------
-----b 23 C------
关于集合中字符串的添加: s.update( "字符串" ) 与 s.update( {"字符串"} ) 含义不同: - s.update( {"字符串"} } 将字符串添加到集合中,有重复的会忽略。
- s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
- <b>>>> thisset = set(("Google", "Runoob", "Taobao"))
- >>> print(thisset)
- {'Google', 'Runoob', 'Taobao'}
- >>> thisset.update({"Facebook"})
- >>> print(thisset)
- {'Google', 'Runoob', 'Taobao', 'Facebook'}
- >>> thisset.update("Yahoo")
- >>> print(thisset)
- {'h', 'o', 'Facebook', 'Google', 'Y', 'Runoob', 'Taobao', 'a'}
- </b>
复制代码 关于set的一些用法,可以用在两个列表或者元组合并时,删除其中相同的元素,而且集合还有直接排序(升序)的功能。在往集合里面添加值时,如果不加括号,则python会自动将字符串拆分成一个个的字符存储到集合里面,例如:- >>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
- >>> y=set({'python'})
- >>> print(y.union(thisset)){'python', 'Taobao', 'Google', 'Facebook', 'Runoob'}
输出结果: {'python', 'Google', 'Taobao', 'Facebook', 'Runoob'}y 的集合里此时只含有一个元素 'python',而如果不加花括号时,y 的集合里含有'p','y','t','h','o','n'五个元素。 >>> thisset = set(("Google", "Runoob", "Taobao", "Facebook")) - >>> y=set('python')
- >>> print(y.union(thisset)){'p', 'o', 'y', 'Taobao', 'h', 'Google', 'Facebook', 'Runoob', 'n', 't'}
也可以使用括号: thisset = set(("Google", "Runoob", "Taobao", "Facebook"))y=set(('python','love'))print(y.union(thisset))输出结果: {'Facebook', 'Runoob', 'Taobao', 'python', 'love', 'Google'}但是当 y 的集合里只有一个字符串时,结果与不加花括号一样。 尝试写斐波那契数列,用之前的c语言知识可知,我们可以用函数的递归来写: - <b>def fab(n):
- if n<1:
- print('输入有误!')
- return -1
- if n==1 or n==2:
- return 1
- else:
- return fab(n-1)+fab(n-2)</b>
复制代码虽然编写简单,但是耗费的时间和空间比较大,根据python的赋值方式,可以改写成: - <b>#!/usr/bin/python3
-
- # Fibonacci series: 斐波纳契数列
- # 两个元素的总和确定了下一个数
- a, b = 0, 1
- while b < 10:
- print(b)
- a, b = b, a+b</b>
复制代码a,b=b,a+b是两个同时赋值,为了直观地看出两种写法的时间消耗,可以在程序执行前面添加start=time.time(),在递归或者循环结束添加end=time.time(),便可计算出各自程序计算所花时间,进行直观对比。
循环语句:用python中的循环语句写经典的冒泡排序算法,主要掌握:for i in range(n)的用法:
- <b># python 冒泡排序
- def paixu(li) :
- max = 0
- for ad in range(len(li) - 1):
- for x in range(len(li) - 1 - ad):
- if li[x] > li[x + 1]:
- max = li[x]
- li[x] = li[x + 1]
- li[x + 1] = max
- else:
- max = li[x + 1]
- print(li)
- paixu([41,23344,9353,5554,44,7557,6434,500,2000])</b>
复制代码 复习的东西比较基础,但是觉得还是比较重要,所以先记下来,说不定以后拿来复习能够用得到,python还在继续学习中,慢慢加油!
|
|