• 为什么写博客,是因为遇到的坑,不希望别人在踩一遍!
  • 选择了,剩下的就是坚持和努力-------致自己!
  • 当能力达不到梦想时,更需要学习,努力,拼搏

Python 学习二 基础知识

Python 雪豹 2年前 (2022-11-07) 1536次浏览 0个评论

1.1 Python2 和Python 3 区别

python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。

为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。

为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

新的Python程式建议使用Python 3.0版本的语法。

除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。

大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

Python 3.0的变化主要在以下几个方面:

1.2 print 函数

print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:

print “fish”

print (“fish”) #注意print后面有个空格

print(“fish”) #print()不能带有任何其它参数

然而,Python 2.6实际已经支持新的print()语法:

from __future__ import print_function

print(“fish”, “panda”, sep=’, ‘)

 

1.3 Python windows安装

1、下载安装包

https://www.python.org/downloads/

2、安装

默认安装路径:C:\python27

3、配置环境变量

【右键计算机】–》【属性】–》【高级系统设置】–》【高级】–》【环境变量】–》【在第二个内容框中找到 变量名为Path 的一行,双击】 –> 【Python安装目录追加到变值值中,用 ; 分割】

如:原来的值;C:\python27,切记前面有分号

1.4 Python Hello Worl

windos安装Python后执行第一个命令

进入Python

D:\>python

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

输出Hello World

>>> print("Hello World")

Hello World

退出

>>> exit()
其中windos DOS 命令

进入D盘(大小写忽略)

D:\>d:

D盘目录结构

D:\>dir

 驱动器 D 中的卷没有标签。

 卷的序列号是 0DEB-0B18

 D:\ 的目录



2017/08/02  22:01    <DIR>          360安全浏览器下载
2017/05/24  13:50    <DIR>          badboy

2014/04/18  09:24     4,467,982,336 CentOS-6.5-x86_64-bin-DVD1.iso

只要写可执行程序,第一行要写解释器
它们用于指定执行该脚本的解释器,如上即是指定python作为解释器。
#!/usr/bin/env python   #env是找环境变量
#!/usr/bin/python       #写死了Python路径(不建议用)
print ("Hello World")

1.17 python 开发工具 pycharm

为什么用Python:1、效率高2、可调式。
创建一个项目

images

images

新建项目首先第一个是 location 创建的项目名称

images

images

创建一个Python文件 新建选择 python file

images

输入名字就好

images

创建pycharm 设置

images

英文选择 Editor —File and Code Templates —Python Scrpts

images

1.1 Python 运行

运行有两种方式可以任选其一

images

1.1 变量的赋值

 

怎么定义一个变量
Python 是一个动态语言
#!/usr/bin/env python
# Author:Xue Bao
name = "xuebao"
name2 = name
print("My name is",name,name2)
name = "Pao"
print(name,name2)
运行结果
My name is xuebao xuebao
Pao xuebao
备注:变量名为 name、name2  

1.20 变量定义的规则:

变量名只能是字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

Python 变量不能以特殊字符、数字开头、空格开头。
定义变量名要能看懂不能简单写(不建议写汉字和拼音)

#下划线定义长变量(官方建议用这种)
gf_of_oldboy = "test"
#驼峰型变量
GF0of0oldboy = "test"

1.21 常量

#常量可以用大写

1.22 字符编码

为什么讲字符编码,计算机底层存储 只认识0和1。
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

images

 

关于中文
为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

ASCII 一个字节
unicode 两个字节
utf- 英语一个字节 中文3个字节

1.23 Pycharm 修改为Python2.7

#Python 2里中文要python解释器
定义python解释器
# -*- coding:utf-8 -*-
# Author:Xue Bao
name = "你好世界"
print(name)

1.24 Python 注释

# Author:Xue Bao
#单行注释
name = "你好世界"
print(name)
#多行注释(注释:三个单引号)
'''
name2 = "你好中国"
print(name2)
'''
#多可以注释可以用于 输出
msg = '''
test
test
'''
print(msg)

1.25 字符串格式化拼接

在Python的实际开发中,很多都需要用到字符串拼接,python中字符串拼接有很多

1.25.1 字符串格式化拼接输出一

#!/usr/bin/env python
# Author:Xue Bao
name = input("name:")
age = input("age:")
job = input("job:")
salary = input("salary:")

info = '''
#字符串的拼接
-------info of '''+ name +''' -------
Name:'''+ name +'''
Age:'''+ age +'''
Job:'''+ job+ '''
Salary: '''+ salary +'''
'''
print(info)

[v_error]提示:该方法效率比较低,不建议使用[/v_error]

1.25.2 字符串格式化拼接输出二

#!/usr/bin/env python
# Author:Xue Bao
name = input("name:")
age = input("age:")
job = input("job:")
salary = input("salary:")

info = '''
#字符串的拼接
-------info of %s -------
Name:%s
Age:%d
Job:%s
Salary:%s
''' % (name,name,age,job,salary)
print(info)
注释:%s,表示格式化一个对象为字符  %d,整数  %f 浮点型(小数)

1.25.3 字符串格式化拼接输出三

#!/usr/bin/env python
# Author:Xue Bao
name = input("name:")
age = int(input("age:"))#integer 转成整型
#打印数据类型
print(type(age) ,type(str(age)))
job = input("job:")
salary = input("salary:")

info = '''
#字符串的拼接
-------info of {_name} -------
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
''' .format(_name=name,
            _age=age,
            _job=job,
            _salary=salary)
print(info)

备注:format 格式,在引用时候一定需要加小括号

1.26 打印数据类型

#!/usr/bin/env python
# Author:Xue Bao
name = input("name:")
age = input("age:")
#打印数据类型
print(type(age))
备注:Python 默认输出字符串

1.26.1 强行转换因为Python是强制型语言

#!/usr/bin/env python
# Author:Xue Bao
name = input("name:")
age = int(input("age:"))#integer 转成整型

#打印数据类型
print(type(age))

1.26.2 raw input 和input 区别

#raw_input 2 写法 ,input (不要用)
#input Python 3.0写法
job = raw input("job:") 等于 input("job:")
备注:在Python 2里面input 为变量(在2.7忘记input)
D:\Python27>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> name = input("name:")
name:ddd
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 1, in 
NameError: name 'ddd' is not defined

1.26.3 加载Python模块getpass(影藏密码)

#!/usr/bin/env python
# Author:Xue Bao
#初始模块,import getpass
#什么是模块、import从标准库里调用getpass 使输入密文
#import 导入 getpass
import getpass
username = input("username:")
password = getpass.getpass("password:")
print(username,password)
#注意在pycharm 中无法执行getpass 需要在widows 命令行中执行
进入Python的路径

1.27 Python if判断语句

讲解:
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。

3、在Python中没有switch – case语句。

images

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……
其中”判断条件”成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句,具体例子如下:
实例

#!/usr/bin/env python
# -*- coding:utf-8 -*-
name = "xuebao"
name2 = input("Name:")
if name2 == name:
    print("name xuebao")
else:
    print("please input name:")

扩展
if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
实例
提示:需要注意在做数字判断中数字要为int 整型。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
num = int(input("name:"))
if num == 3:
    print("number ok")
elif num == 2:
    print("number 2")
elif num == 1:
    print("number 1")
elif num > 20:
    print("number 20")
else:
    print("test")

由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
实例


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 例3:if语句多个条件
 
num = 9
if num >= 0 and num <= 10:    # 判断值是否在0~10之间
    print 'hello'
# 输出结果: hello
 
num = 10
if num < 0 or num > 10:    # 判断值是否在小于0或大于10
    print 'hello'
else:
    print 'undefine'
# 输出结果: undefine
 
num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):    
    print 'hello'
else:
    print 'undefine'
# 输出结果: undefine

当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。
简单的语句组
你也可以在同一行的位置上使用if条件判断语句,如下实例:
实例

#!/usr/bin/python 
# -*- coding: UTF-8 -*-
var = 100 
if ( var  == 100 ) : print "变量 var 的值为100" 
print "Good bye!"
以上代码执行输出结果如下:
变量 var 的值为100
Good bye!

1.27.1 以下为if中常用的操作运算符:

images

 

#!/usr/bin/python3 
# 该实例演示了数字猜谜游戏
number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
    guess = int(input("请输入你猜的数字:"))
 
    if guess == number:
        print("恭喜,你猜对了!")
    elif guess < number: print("猜的数字小了...") elif guess > number:
        print("猜的数字大了...")
例子
#!/usr/bin/env python
# Author:Xue Bao
import getpass
_username = "xuebao"
_password = "abc123"
username = input("username:")
password = input("password:")
if _username == username and _password == password :
    print("Welcome user {name} login...".format(name=username))
else:
    print("Invalid username or password!")

1.27.2 if 判断语句 elif

#!/usr/bin/env python
# Author:Xue Bao
age_of_oldboy = 56
guess_age =int(input("guess age:"))
if guess_age == age_of_oldboy:
    print("yes,you got it.")
elif guess_age > age_of_oldboy:
    print("think smaller...")
else:
    print("think bigger!")

1.27.3 if 嵌套

在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。

if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句
1.27.3.1 实例
#!/usr/bin/env python
count = 0
while count < 3:
    name = int(input("name:"))
    if name < 10:
        print("name < 5")
        if name == 5:
            print("name == 5")
    else:
        print("test")
    count +=1

1.27.4 python 循环

本章节将为大家介绍Python循环语句的使用。
Python中的循环语句有 for 和 while。
Python循环语句的控制结构图如下所示:

images

1.27.5 while 循环语句

while 循环
Python中while语句的一般形式:
while 判断条件:
语句
同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
例子:

#!/usr/bin/env python
# Author:Xue Bao
count = 0
#True 是真当这个条件成真
while True:
    print("count:",count)
    count = count +1  #相当于count +=1
while 循环 count计数 if判断
#/usr/bin/env python
# Author:Xue Bao
age_of_oldboy = 56
#计数器
count = 0
#while 判断是否执行正确
while True:
    #大于3结束
    if count ==3:
        break
    guess_age =int(input("guess age:"))
    if guess_age == age_of_oldboy:
        print("yes,you got it.")
        break
    elif guess_age > age_of_oldboy:
        print("think smaller...")
    else:
        print("think bigger!")
    #计数 count
    count +=1
注释:while True:    
    #大于3结束
    if count ==3:
        break

可以优化为 while count <3:

1.27.6 优化后的
#!/usr/bin/env python
# Author:Xue Bao
age_of_oldboy = 56
#计数器
count = 0
#while 判断是否执行正确
while count <3:
    guess_age =int(input("guess age:"))
    if guess_age == age_of_oldboy:
        print("yes,you got it.")
        break
    elif guess_age > age_of_oldboy:
        print("think smaller…")
    else:
        print("think bigger!")
    #计数 count
    count +=1
#人性化
#if count ==3:
else:
    print("you have tried too many times no")

1.27.7 for 循环

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的一般格式如下:
for <variable> in <sequence>: 
    <statements>
else:
    <statements>
Python loop循环实例:
实例
>>>languages = ["C", "C++", "Perl", "Python"] 
>>> for x in languages:
...     print (x)
... 
C
C++
Perl
Python
>>>
以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体:
完成循环!

1.28 range()函数

如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,
range (瑞兹) 范围
例如:
实例
>>>for i in range(5):
...     print(i)
...
0
1
2
3
4
你也可以使用range指定区间的值:
实例
>>>for i in range(5,9) :
    print(i)
 
    
5
6
7
8
>>>
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
实例
>>>for i in range(0, 10, 3) :
    print(i)
 
    
0
3
6
9
>>>
负数:
实例
>>>for i in range(-10, -100, -30) :
    print(i)
 
    
-10
-40
-70
>>>
您可以结合range()和len()函数以遍历一个序列的索引,如下所示:
实例
>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
>>> for i in range(len(a)):
...     print(i, a[i])
... 
0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
>>>
还可以使用range()函数来创建一个列表:
实例
>>>list(range(5))
[0, 1, 2, 3, 4]
>>>



#!/usr/bin/env python
# Author:Xue Bao
for i in range(0,10):
    if i <3:
        print("loop",i)
    else:
        continue
    print("hehe...")
备注:break 是结束循环、contine 是结束当前循环
实例2
#!/usr/bin/env python
# Author:Xue Bao
for i in range(10):
    print("------------",i)
    for j in range(10):
        print(j)
        if j >5:
            break

作业:1、博客

作业二:编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定(增删改错)

先登录看看用户在不在

#!/usr/bin/env python
# Author:Xue Bao
name = input("请输入用户:") #输入用户名
name_str = open("name.txt","r",encoding="utf-8")  #打开用户和密码txt文件
locking_str = open("passwd.txt","r+",encoding="utf-8") #打开已锁定的用户表
name_list = name_str.readlines() #将name.txt 字符串转换为列表
locking_list = locking_str.readlines() #将passwd.txt 字符串转换为列表
name_list2 = []  #定义的新name 为if 对比用
passwd_list = [] #定义的新的passwd 为if 对比用
name_locking = [] #定义新的用户锁 为if 对比用
for name_a in  name_list:    #循环用户和密码的列表,分别将
    name_list2.append(name_a[0:5].strip())
    passwd_list.append(name_a[6:].strip())
# print(name_list2)
# print(passwd_list)
for name_locking2 in locking_list:
    name_locking.append(name_locking2[0:6].strip())
# print(name_locking)
if name in name_locking:
    print("----------------错误反馈-----------------------")
    print("对不起,你的账号已锁定,请联系管理员解锁!")
    exit()
count = 1
if name in name_list2:
    while count <4:
        num = 3 - count
        print("----------------请输入密码:-----------------------")
        passwd = input(":")
        name_number = name_list2.index(name)
        # print(name_number)
        if passwd == passwd_list[name_number]:
            print("----------提示----------------")
            print("欢迎进入!")
            exit()
        else:
            print("----------------------------------------------")
            print("对不起密码错误、请重新输入你还有: ",num ,"机会。")
            print("----------------------------------------------")
        count +=1

else:
    print("----------------错误反馈-----------------------")
    print("对不起,你的账号不存在,请联系管理员申请!")

执行结果:

总结:
1、此次明确方法,通过open打开文件,通过readlines将字符串转成列表对比。
2、通过列表切片,apped 追加新的列表进行对比,strip去除空格
3、通过for if 语句判断


作业三:
三级菜单
可依次选择进入各子菜单
所需新知识点:列表、字典。

#!/usr/bin/env python
# Author:Xue Bao
data = {
    "北京":{
        "朝阳":{
            "望京":["陌陌","联想" ],
            "国贸":["CICC","HP"],
            "东直门":["Advent","飞信"],
        },
        "海淀":{
            "中关村":{"TBT","微软" },
            "苏州街":{"人大","航天"},
            "海淀黄庄":{"OFO","机电"},
        },
    },
    "甘肃":{
        "白银":{
            "白银区":{"白银市","王显" },
            "平川":{"平川区","平川"},
            "会宁":{"学校","学生"},
        },
        "天水":{
            "麦积区":{"麦积山","林校" },
            "秦州区":{"师院","飞机场"},
            "甘谷区":{"大象山","没有"},
        },
    },
}
exit_flag = False
print("---------省市区选择说明--------------")
print(":输入省市后,可以输入q退出,b返回上一级目录!")
print("------------------------------------")
while not exit_flag:
    for i in data:
        print(i)
    city = input("请输入选择的省:")
    if city in data:
        while not exit_flag:
            for i2 in data[city]:
                print(i2)
            city2 = input("请选择市区")
            if city2 in data[city]:
                while not  exit_flag:
                    for i3 in data[city][city2]:
                        print(i3)
                    city3 = input("请选择地方:")
                    if city3 in data[city][city2]:
                        while not exit_flag:
                            for i4 in data[city][city2][city3]:
                                print(i4)
                            city4 = input("最后一层了、请按b返回!")
                            if city4 =="b" :
                                pass
                            elif city4 == "q":
                                exit_flag = True
                    if city3 == "b":
                        break
                    elif city3 == "q":
                        exit_flag = True
            if city2 == "b":
                break
            elif city2 == "q":
                exit_flag = True
总结:
1、使用字典和列表的取值(for 判断需要加强)


有需要可以联系微信xuebao19930721和加入微信群
喜欢 (7)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址