资讯专栏INFORMATION COLUMN

python学习笔记

张汉庆 / 1870人阅读

摘要:在循环外使用今天在练习一个题目求之内的素数。表示从倒数第一个开始往前数如果是的话则表示从正数第一个到最后一个。同时,闭包要求外部函数的返回值是内部函数的函数名。

18. random()的用法

#随机整数:
>>> import random
>>> random.randint(0,99)
21

#随机选取0到100间的偶数:
>>> import random
>>> random.randrange(0, 101, 2)
42

#随机浮点数:
>>> import random
>>> random.random() 
0.85415370477785668
>>> random.uniform(1, 10)
5.4221167969800881

#随机字符:
>>> import random
>>> random.choice("abcdefg&#%^*f")
"d"

#洗牌:
>>> import random
>>> items = [1, 2, 3, 4, 5, 6]
>>> random.shuffle(items)
>>> items
[3, 2, 5, 6, 4, 1]

17.lambda函数

def add(a,b):
    x = a+b
    print(x)
add(1,3)

g = lambda a,b :a+b
print(g(1,2))

16.两个变量值互换

a,b = b,a

15. insert()函数的使用

list.insert("索引位置","要插入的内容’) 
#要注意索引位置是指在对应的位置之后,而不是插入以后充当的位置。

14. 在循环外使用else

今天在练习一个题目:求100之内的素数。,我写的代码如下:

for i in range(1,100):
    for k in range(2,i):
        if i % k == 0:
            pass
        else:
            print(i)

输出的结果和我的期待大相径庭,分析之后发现在if那里,每出现一次能整除i的情况,函数都会把i输出一遍,从而导致了错误。后来查看了答案,发现是这么写的:

for i in range(1,100):
    for k in range(2,i):
        if i % k == 0:
            break
    else:
        print(i)

区别在于答案使用了break,奇怪的是else语句出现在了if之外,查询资料得知:这种写法表示如果if循环中出现了符合条件的情况,则直接跳出终止循环,如果走完但还没有符合条件的出现,则执行else的语句。参考 Python——在循环外使用else

13. 如何反向一个列表中的元素?有三种思路:

a = [1,2,3]
a.reverse() #第一种方法,列表直接反向
a.sort(reverse = True) #第二种方法,使用sort方法
a[::-1] #第三种方法,也是最高级的一种写法,使用切片。表示“从倒数第一个开始往前数” 如果是a[:]的话则表示从正数第一个到最后一个。

12.如何将一个字符串全部统一为大写或者小写?

week = input("请输入星期几:").upper()  #这样可以将输入的星期几全部统一为大写,方便后面做比较

11.如何将一个元素都是整数的列表做全部加和处理?

直接用sum(列表名)即可:

[100.0, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625]
print(sum(s))

判断一个字符串是否是字母、数字、空格

isalpha()/isdigit()/isspace这些函数来实现。

test = input("输入一个字符串:")
letter =0
digit =0
space = 0
i = 0
for i in range(0,len(test)):
    if test[i].isalpha():
        letter += 1
    elif test[i].isdigit():
        digit += 1
    elif test[i].isspace():
        space += 1
    i += 1
print(letter,digit,space)

9.int形式的数字,可以通过用str()的方式处理成字符串,从而用索引获取到指定位置的数字。

x = 234
print(x[0]) #会报错--TypeError: "int" object is not subscriptable
s = str(x)
print(s[0])

这个点出现在「打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。」这道题中。

8.列表的截取

对于列表a,a[:]表示的意思是从a的第一个到最后一个元素的合集,类似的,a[1:]则表示从第二个开始到最后的元素形成的列表。

# 如果要把列表a中的元素全部复制到b,代码如下
a = [1,2,3,4]
b = []
b = a[:]
print(b)

7.python中 sort()函数的使用

sort()函数是用来比较一个元组中元素大小的,需要注意的是,在实践中发现不能直接print(a.sort()),而只能先进行a.sort(),然后再print(a)
另外sort()有一个参数reverse=True,可以将数组实现从大到小的排了。

a = [int(input("请输入整数1:")),int(input("请输入整数2:")),int(input("请输入整数3:"))]

print(a)
a.sort()
print(a)

6.函数的闭包
类似于if的嵌套,可以理解为函数的嵌套:当内部的函数引用了外部函数的参数的时候,我们认为就形成了闭包。同时,闭包要求外部函数的返回值是内部函数的函数名。
好处是需要调用的参数变少,适用于有参数不变、有参数变化的情况。(比如ax+b = y 假设a/b不变,而只有x需要变化)


def func1(a):
    def func2(b):
        return  a+b
    return func2

x = func1(5)
print(x(4))

5.函数作用域

如果函数外和函数内都各自有一个重名的变量,那么函数内的变量复制只能影响到函数内部,而在函数外部还是由函数外部的变量主导。
但如果确实想让函数内部的变量赋值影响全局的话,那么可以在内部的变量赋值前增加global var的写法。比如:

var1 = 123

def func():
    global var1
    var1 = 456
    print(var1)

func()

4. 函数的可变长参数

定义一个函数,默认参数都是必须的,但如果还希望增加非必须(没有写也不会报错)的参数的话,可以在参数前面加「*」,比如:

def func(lenght,* height):
    
    return 

其中lenght是必须的,而height则是非必须的。

3.两个函数之间的参数传递

如下。假设要把func2的结果传递给func1作为参数,那么关键是在func2的最后面加上func1()函数,这样就可以把func2的结果直接传递给func1继续运行了。

当然,在这种情况下,func1产生的结果也可以再回来被func2直接调用。

def func1():

    return

def func2():

    return name
    func1(name)

————————————————————————————————
# 代码实例
import re
def find_item(hero):
    with open("sanguo.text") as f:
        data = f.read().strip().replace("
","")
        name_num = len(re.findall(hero,data))

    return name_num


with open("name.text") as f:
    names = f.read().split("|")
    for name in names:
        name_num = find_item(name)
        print(" %s 出现的次数是 %s 次" %(name,name_num))    

1.用变量替换字符串的内容:

Chinese_zodiac = "鼠牛虎兔龙蛇马羊猴鸡狗猪"

for year in range(2000,2018):
    print("%s 年是 %s 年" %(year,Chinese_zodiac[year % 12]))

学习要点:
a. 用变量替换字符串内容需要用%s来实现,最后跟上 %()来作为变量的来源;
b. 字符串也可以像数组那样,用索引值来指定某一部分;
c. year % 12表示的是年份除以12得到的余数;

2.Python--read()和readline()以及readlines()用法区别

# 试验材料
諸葛亮|關羽|劉備|曹操|孫權|關羽|張飛|呂布|周瑜|趙雲|龐統|司馬懿|黃忠|馬超

.read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中

.readlines() 一次读取整个文件(类似于 .read()

.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理.

.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44758.html

相关文章

  • ApacheCN 人工智能知识树 v1.0

    摘要:贡献者飞龙版本最近总是有人问我,把这些资料看完一遍要用多长时间,如果你一本书一本书看的话,的确要用很长时间。为了方便大家,我就把每本书的章节拆开,再按照知识点合并,手动整理了这个知识树。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 贡献者:飞龙版...

    刘厚水 评论0 收藏0
  • SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...

    lifesimple 评论0 收藏0
  • ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.6

    摘要:请回复这个帖子并注明组织个人信息来申请加入。权限分配灵活,能者居之。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。导航归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...

    Bmob 评论0 收藏0
  • 学习笔记 | HTML 基本结构和基本标签 ——前端学习第一步!

    摘要:基本结构语言中,一个页面是由四个部分组成文档声明标签对标签对标签对图示文档声明这是一个文档声明,表示这是一个页面。标签标签表示页面内容的范围。 HTML HTML ...

    sPeng 评论0 收藏0
  • ApacheCN 学习资源汇总 2019.3

    摘要:主页暂时下线社区暂时下线知识库自媒体平台微博知乎简书博客园合作侵权,请联系请抄送一份到特色项目中文文档和教程与机器学习实用指南人工智能机器学习数据科学比赛系列项目实战教程文档代码视频数据科学比赛收集平台,,剑指,经典算法实现系列课本课本描述 【主页】 apachecn.org 【Github】@ApacheCN 暂时下线: 社区 暂时下线: cwiki 知识库 自媒体平台 ...

    array_huang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<