前面两篇文章分别介绍了Python的环境搭建和基本工具

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

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\root\Desktop\PyDemo\person.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('输入错误,请重试!')

python基础知识-Python学习--最完整的基础知识大全相关推荐

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

    ##Python学习–最完整的基础知识大全 关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家! #####菜鸟教程python2 #####菜鸟教程python3 ...

  2. python网络编程需要学什么,python网络编程学习笔记(五):socket的一些补充 Python 网络编程需要学习哪些网络相关的知识...

    python的socket编程问题hdr = recvall(s, 5) if hdr is None: print 'Unexpected EOF receivingstruct在unpack的时候 ...

  3. 掉进悬崖的小白,捡到python基础秘籍,学习第一周——语法基础,小游戏,无脑循环

    掉进悬崖的小白,捡到python基础秘籍,学习第一周--语法基础,小游戏,无脑循环 人生苦短,我用python 语言的种类: 语言的发展: 什么是python 搭建 Python开发环境: 集成开发环 ...

  4. 自学python困难吗_Python学习难不难?零基础好学吗?

    Python学习难不难?零基础好学吗?我想对于很多人来说,这都是非常关键的问题,也是很多人都在疑惑的问题.现在市场发展,行业的竞争压力是非常大的,转型的人也是非常多,对于不少人转型人才来说,Pytho ...

  5. 知识图谱学习笔记——(二)知识图谱的表示

    一.知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的<知识图谱>公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处.感谢陈华 ...

  6. 知识图谱学习笔记——(四)知识图谱的抽取与构建

    一.知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的<知识图谱>公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处.感谢陈华 ...

  7. 知识图谱学习一:啥是知识图谱,用来干啥,怎么做?

    一.啥是知识图谱 通俗的讲就是由知识形成的图.知识+图 1.1 知识 知识让机器具有认知能力        百度AIG(人工智能技术体系)负责人王海峰曾提出,AI可以分为感知层和认知层,感知是人类和动 ...

  8. 知识图谱学习笔记02-经典的知识图谱项目介绍

    CYC Cyc是一个知识库系统,由Douglas Lenat于1984年开始创建.其最初目标是建立人类最大的常识知识库,其中包含了典型的常识知识,例如"每棵树都是一种植物"和&qu ...

  9. python基础知识资料-Python学习--最完整的基础知识大全

    前面两篇文章分别介绍了Python的环境搭建和基本工具 下面是我基础学习时的一点记录: python3 循环语句 1. while n=10 sum = 0 counter = 1 while cou ...

最新文章

  1. RDKit | 基于RDKit从分子中提取3D药效团特征
  2. JAVA项目代码手写吗_一个老程序员是如何手写Spring MVC的
  3. centos amd双显卡_讯景RX590 AMD 50周年纪念版显卡评测
  4. relu函数_从 ReLU 到 GELU,一文概览神经网络的激活函数
  5. boost::advance用法的测试程序
  6. fanuc机器人控制柜接线_FANUC涂胶标定参考
  7. python如何实现支持中文
  8. 读书笔记——计算机网络CN
  9. Android复习资料
  10. 小乌龟Git回滚重置及合并指定提交
  11. python写二进制文件_初学Python写二进制文件
  12. android加密打包,(爱加密系列教程二十)Xamarin开发Android应用、如何打包apk(转载)...
  13. 团队项目-Recycle需求规格说明书
  14. GANDCRAB V5.2勒索病毒,不可破解,尽快防御!
  15. 揭秘:客服如何创造价值和自我超越
  16. 转 OpenGL核心技术之帧缓冲
  17. 对C++和Go语言中接口的理解
  18. php微信短网址生成,如何把微信文章网址长连接(长网址)转换为短连接(短网址)...
  19. html引起qq加好友,QQ被限制加好友怎么办如何避免加好友限制
  20. ”高内聚 ,低耦合“到底是什么意思?

热门文章

  1. 二叉搜索树+快速排序 查到文本中出现频率最多的100个词 【留学生作业】
  2. Mock以及Mockito的使用
  3. 深入分析linux内核源码
  4. [ Problem 1 ] 数独游戏
  5. 你真的了解“真的了解”的含义吗
  6. HDU2002 计算球体积【入门】
  7. POJ2033 LA3078 HDU1508 ZOJ2202 Alphacode【DFS+DP】
  8. C语言程序设计练习题解
  9. JSK-243 三角形的路径权【动态规划】
  10. HDU4548 美素数【水题】