资讯专栏INFORMATION COLUMN

Python学习--最完整的基础知识大全

王笑朝 / 636人阅读

摘要:迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器有两个基本的方法和。调用一个生成器函数,返回的是一个迭代器对象。生成器函数生成器函数返回一个迭代器函数函数传入不定长参数加了星号的变量名会存放所有未命名的变量参数。

Python学习--最完整的基础知识大全

关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家!

菜鸟教程python2

菜鸟教程python3

Python2.7 入门指南

Python3.6 入门指南

廖雪峰Python教程

Python100例

Python中文开发者社区门户

W3CPython基础教程

下面是我基础学习时的一点记录:

python3 循环语句 1. while
n=10
sum = 0
counter = 1
while counter < n:
    sum = sum + counter
    counter += 1
print("1到%d之和为:%d" %(n, sum))

#while 循环使用 else 语句
count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")
2. for
#可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做"步长")
for i in range(0, 10, 3):
    print(i)

for i in range(-10, -100, -30):
    print(i)

a_list = ["google", "baidu", "ie", "firefox", "360"]
for i in range(len(a_list)):
    print(i, a_list[i])
#使用range创建列表
b_list = list(range(8))
print(b_list)
3. break和continue
#使用break终止循环
for letter in "helloworld":
    if letter == "r":
        break
    print("当前字母为:", letter)
#使用continue跳过循环
for letter in "helloworld":
    if letter == "l":
        continue
    print("当前字母为:", letter)
4. pass语句
#说明:pass就是一条空语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass。
for letter in "helloworld":
    if letter == "l":
        pass
        print("执行pass块")
    print("当前字母为:", letter)
5. 使用enumerate函数进行遍历
c_list = [12, 34, 56, 78, 90]
for i, j in enumerate(c_list):
    print(i, j)
6. 小练习
循环练习
for i in range(1, 6):
    for j in range(1, i+1):
        print("*",end="")
    print("
")
9*9乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print("%d * %d = %d" %(j, i, i*j), end="	")
    print("
")
冒泡排序
def paixu(d_list):
    for i in range(0, len(d_list)):
        for j in range(i+1, len(d_list)):
            if d_list[i] >= d_list[j]:
                tmp = d_list[i]
                d_list[i] = d_list[j]
                d_list[j] = tmp
    print(d_list)
li = [32, 23, 65, 32, 76, 79, 56, 89, 12]
paixu(li)
Python3 迭代器与生成器 迭代器

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

import sys

it = iter(c_list)
print(c_list)
print(next(it))
for x in it:
    print(x, end=" ")

it1 = iter(c_list)
while True:
    try:
        print(next(it1))
    except StopIteration:
        sys.exit()
生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。
调用一个生成器函数,返回的是一个迭代器对象。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

生成器函数
def fibonacci(n):
    a = 0;
    b = 1;
    counter = 0;
    while True:
        if (counter > n):
            return
        yield a
        a, b = b, a + b
        counter += 1
#生成器函数返回一个迭代器
fibo = fibonacci(10)

while True:
    try:
        print(next(fibo), end=" ")
    except:
        sys.exit()
函数 函数传入不定长参数
#加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。
def printinfo(arg1, *vartuple):
    "打印任何传入的参数"
    print("输出:")
    print(arg1)
    for var in vartuple:
        print(var)
    return

printinfo(10)
printinfo(10, 20, 30)
匿名函数

python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

lambda 只是一个表达式,函数体比 def 简单很多。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

sum = lambda arg1, arg2: arg1 + arg2
print(sum(10,20))
变量的作用域

Python中变量的作用域一共有4种,分别是:

L (Local) 局部作用域

E (Enclosing) 闭包函数外的函数中

G (Global) 全局作用域

B (Built-in) 内建作用域

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

B = int(2.9)  # 内建作用域

G = 0  # 全局作用域
def outer():
    E = 1  # 闭包函数外的函数中
    def inner():
        L = 2  # 局部作用域
一个完整的demo
import pickle
import os

datafile = "C:Users
ootDesktopPyDemoperson.data"
line = "#########################################"
message = """
#######################################
*Welcome bookmark:                    *
*    press 1 to show list             *
*    press 2 to add pepole            *
*    press 3 to edit pepole           *
*    press 4 to delete pepole         *
*    press 5 to search pepole         *
*    press 6 to show menu             *
*    press 0 to quit                  *
#######################################
"""
#打印菜单栏
print(message)

#创建一个人类,有姓名和电话号两个属性
class Person(object):
    def __init__(self, name, number):
        self.name = name
        self.number = number

#获取数据
def get_data(filename = datafile):
    if os.path.exists(filename) and os.path.getsize(filename):
        with open(filename, "rb") as f:
            return pickle.load(f)
    return None

#写入数据
def set_data(name, number, filename = datafile):
    personList = {} if get_data() == None else get_data()
    with open(filename, "wb") as f:
        personList[name] = Person(name, number)
        pickle.dump(personList, f)

#保存字典格式的数据到文件
def save_data(dictPerson, filename = datafile):
    with open(filename, "wb") as f:
        pickle.dump(dictPerson, f)

#显示所有联系人信息
def show_all():
    personList = get_data()
    if personList:
        for v in personList.values():
            print(v.name, v.number)
        print(line)
    else:
        print("空空如也,请添加联系人!")
        print(line)

#添加联系人
def add_person(name, number):
    set_data(name, number)
    print("添加联系人成功!")
    print(line)

#更新联系人
def edit_person(name, number):
    personList = get_data()
    if personList:
        if name in personList.keys():
            personList[name] = Person(name, number)
            save_data(personList)
            print("更改联系人信息成功!")
        else:
            print("查无此人", name, ",请重试!")
        print(line)

#删除联系人
def del_person(neme):
    personList = get_data()
    if personList:
        if name in personList:
            del personList[name]
            save_data(personList)
            print("删除联系人成功!")
        else:
            print(name, "不存在!")
    print(line)

#查询联系人
def find_person(name):
    personList = get_data()
    if personList:
        if name in personList.keys():
            print(personList.get(name).name, personList.get(name).number)
        else:
            print("查无此人!", name)
    print(line)

while True:
    num = input(">>>")

    if num == "1":
        print("查看所有联系人:")
        show_all()
    elif num == "2":
        print("添加联系人:")
        name = input("请输入联系人姓名 >>")
        number = input("输入联系人电话号 >>")
        add_person(name, number)
        show_all()
    elif num == "3":
        print("更新联系人:")
        name = input("请输入联系人姓名 >>")
        number = input("输入联系人电话号 >>")
        edit_person(name, number)
        show_all()
    elif num == "4":
        print("删除联系人:")
        name = input("请输入联系人姓名 >>")
        del_person(name)
        show_all()
    elif num == "5":
        print("查找联系人:")
        name = input("请输入联系人姓名 >>")
        find_person(name)
    elif num == "6":
        print(message)
    elif num == "0":
        break
    else:
        print("输入错误,请重试!")

我的个人微信订阅号:【Java编程社区】 欢迎你的加入!

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

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

相关文章

  • 后端文章 - 收藏集 - 掘金

    摘要:为什么我会说它们是一样的简单思考一下我的后端书架后端掘金我的后端书架月前本书架主要针对后端开发与架构。一方案调研版本选择当前主流版本是和应用的后台运行配置后端掘金酱油一篇,整理一下关于后台运行的一些配置方式。 分享 50 个完整的 React Native 项目 - 掘金本文为 Marno 原创,转载必须保留出处! 公众号 aMarno,关注后回复 RN 加入交流群 简书专题《 Rea...

    CntChen 评论0 收藏0
  • Python入门资料大全(更新ing)

    摘要:在线挑战,还没用过,貌似现在对英文资料心里还有种抵触,必须克服实验楼研发工程师包含了等学习课程。书的作者就是开发了用于数据分析的著名开源库的作者英文资料,对数据分析中要用到的一些库,等等做了简要介绍。形式的资料,示例代码都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、说明 面对网络上纷繁复杂的资...

    wuaiqiu 评论0 收藏0
  • Python各热门方向常用学习、工作网址大全【7000字大总结】

    摘要:做这一领域的工作,有很多网站能够起到辅助性的作用。再加上爬虫相对于其他热门方向来说,更容易学。也促使更多人会优先选择学习爬虫。能够代替手工完成手工无法完成的测试任务,并且可以记录相关数据及报告。 ...

    linkFly 评论0 收藏0
  • Python基础题目大全,测试你水平,巩固知识(含答案)

    摘要:里,有两种方法获得一定范围内的数字返回一个列表,还有返回一个迭代器。在引用计数的基础上,还可以通过标记清除解决容器对象可能产生的循环引用的问题。列举常见的内置函数的作用,过滤函数,循环函数累积函数一行代码实现乘法表。 showImg(https://segmentfault.com/img/remote/1460000019294205); 1、为什么学习Python? 人生苦短?人间...

    huhud 评论0 收藏0

发表评论

0条评论

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