初识python

一、为什么选择python

  1. python语言简洁明了;
  2. python语言可以实现web程序开发,GUI开发,和其他项目,是目前的主流语言;

二、python编码风格

一、缩进统一

python第一行一定要顶格写,同一级别代码块要缩进一致;

一个缩进为4个空格,也就是一个tab;

二、变量

变量的第一个祖父必须是是字母(大小写都行)或者是下划线(_);

变量名可以有字母(大写或小写)、数字(0-9)和下划线(_)组成;

有效标识符如:i、_my_name、abc123、abc_123;

无效标识符如:1a、your favorite、your-favorite;

常量:是指其值保持不变的量

变量:值得是值变化的量称为变量

通常python中是没有常量的,一般的,常量都以大写字母来定义,

如:AGE = 20,这里大写表示常量是一个约定;

如果是age = 20,则这个age就是一个变量;

在python中,以下变量名以被内置方法占用,不能用来做变量的标识符:

['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环境

一、安装python

windows:

1、下载安装包
    https://www.python.org/downloads/
2、安装
    默认安装路径:C:\python27
3、配置环境变量
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
    如:原来的值;C:\python27,切记前面有分号

linux:

linux系统内置了python环境,不用安装

四、python入门

一、第一句python

vim hello.py

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 print("hello world")

执行

python hello.py

./ hello.py

解释

1  #! /usr/bin/env python  此即为让系统去env(environment,系统环境变量中去找python解释器,来执行下面代码)
2  # -*- coding:utf-8 -*-  声明编码格式为utf-8

二、编码格式

python解释器在加载.py文件是,会对其中的代码进行编码(默认是ASCII码格式)

ASCII码:(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号;

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多;

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),所以如果不指定编码类型,如果有中文就会报错。

三、python如何工作的

首先python把你写的代码读到内存中,然后放到编译器生成字节码后执行,然后生成机器码给cpu进行执行;

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。(任何字节码通过反编译都可以得到代码)

四、变量

字符串的值是不能修改的;一旦修改,即重新创建;

如:

name1 = 'james'
name2 = name1
name1 = 'shuaige'

这里的name1 = 'james'

      name2 = 'james'

虽然后面name1 = ‘shuaige’,此只是在内存中又把name1指向了shuaige,重新新建了一个;

集合不一样:

1 name1 = ['tianshuai','eric','alex']  
2 如果把name2 = name1

这里只要name1变了,name2也会跟着变;

五、用户输入

1 #! /usr/bin/env python
2 # -*-coding:udt-8 -*-
3 
4 name = row_input("Enter your name:")
5 print(name)

将用户输入的内容赋值给name,此row_input是等待用户输入

在用户输入密码时,如果想要用户数输入密码时不可见,可用getpass.getpass方法:

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 import getpass    #导入getpass模块
5 
6 pwd = getpass.getpass("Enter your password:")
7 print(pwd)

六、流程控制

if else和if elif else

if else
if
条件: #如果条件为真时,执行代码块 代码块 else#如果条件为假时,执行代码块 代码块
if elif else
if 条件: #如果条件为真时,执行代码块 代码块 elif 条件: #如果条件为真时,执行代码块 代码块 else#如果条件为假时,执行代码块 代码块

需求一:用户登录身份验证

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import getpass
 5 
 6 name = getpass.getpass("userName:")
 7 pwd= getpass.getpass("passWord:")
 8 if userName == 'Wenzm' and passWord == '123':
 9     print("Login success")
10 else:
11     print("Invalid userName or passWord.")

需求二:根据用户输出其权限

 1 #! /usr/bin/env python
 2 # -*- coding:utf:8 -*-
 3 '''
 4 wenzm--->普通用户
 5 eric--->管理用户
 6 alex--->超级用户
 7 '''
 8 
 9 user = raw_input("username:")
10 if user == 'wenzm':
11     print("普通用户")
12 elif user == 'eric'
13     print("管理用户")
14 elif user == 'alex'
15 else:
16     print("用户名错误")

while循环:

原理:如果条件为真,则继续运行,为假则停止运行

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 #输出数字1-10
5 n = 1
6 while n<=10:    #当n<=10时,一直打印n
7     print(n)
8     n += 1    #每执行一次n = n+1

break:用于跳出当前循环,break下面的代码将不再执行;
continue:跳出本次循环,继续下一次循环;

 1 #! /use/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 # 输出10以内除5、8以外的数
 5 n = 1
 6 while n <= 10:
 7     if n == 5 or n == 8:
 8         n += 1
 9         continue  #跳出本次循环,不会执行下面的print(n)
10     print(n)
11     n += 1

 

求100以内的和:

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 n = 1
5 sum = 0
6 while n<=100:
7     sum += n
8     n += 1
9 print(sum)    

求100以内的基数和:

1 #! /usr/bin/env python 
2 # -*- coding:utf-8 -*-
3 
4 n = 1
5 sum = 0
6 while n<=100:
7     sum += n
8     n += 2
9 print(sum)

求100以内的偶数和

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 n = 0
5 sum = 0
6 while n<=100:
7     sum += n
8     n += 2
9 print(sum)

求1-2+3-4+5...99的所有数的和

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 s = ''
 5 n = 1
 6 sum = 0
 7 while n<=99:
 8     if n % 2 == 0:
 9         sum -= n
10         s = s + '-' + str(n)
11     else:
12         sum += n
13         s = s + '+' + str(n)
14     n += 1
15 print(s)
16 print(sum)

用户有三次机会登录

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 n = 0
 5 while n <=3:
 6     user = input("user_name:")
 7     pwd = input("pass_word:")
 8     if user == "alex" and pwd == "123":
 9         print('welcome!!!!')
10         break
11     else:
12         print("try again")
13     n += 1

 七、python运算符

1、算术运算符:

 

操作符描述符例子
+ 加法 - 对操作符的两侧增加值 a + b = 30
- 减法 - 减去从左侧操作数右侧操作数 a - b = -10
* 乘法 - 相乘的运算符两侧的值 a * b = 200
/ 除 - 由右侧操作数除以左侧操作数 b / a = 2
% 模 - 由右侧操作数和余返回除以左侧操作数 b % a = 0
** 指数- 执行对操作指数(幂)的计算 a**b = 10 的幂 20
// 取整除 - 操作数的除法,其中结果是将小数点后的位数被除去的商。 9//2 =  4 而 9.0//2.0 = 4.0

2、比较运算符

运算符描述示例
== 检查,两个操作数的值是否相等,如果是则条件变为真。 (a == b) 不为 true.
!= 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (a != b) 为 true.
<> 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (a <> b) 为 true。这个类似于 != 运算符
> 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 (a > b) 不为 true.
< 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 (a < b) 为 true.
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 (a >= b) 不为 true.
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 (a <= b) 为 true.

3、逻辑运算符

 

运算符 描述 示例
and  布尔“与”,-如果x为False,x and y 返回False,否则它返回y的计算值(a and b 返回True) a and b 返回True
or 布尔“或”,-如果x为True,它返回True,否则它返回y的计算值 a or b 返回True
not 布尔“非”,-如果x为True,它返回False,如果x为False,返回True not(a and b),返回False

4、成员运算符

运算符 描述  示例
in 如果指定的序列中找到值返回True,否则返回False a in li 返回 True
not in 如果指定序列中没有找到返回True,否则返回False a not in li 返回False

八、基本数据类型

  数字:int

  字符串:str

  布尔值:bool

  列表:list

  元组:tuple

  字典:dict

ps:所有的数据类型的方法都保存在对应的类中;

查看对象的类或者对象所具有的方法:

  1.通过类型查找;

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 temp = 'alex'
5 print(type(temp))    #打印temp对象类型

 

  2.通过dir()获取所有方法

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 temp = 'alex'
5 print(dir(temp))    #获取所有方法,并没有吧方法怎么用打印出来

  3.通过help,type

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 help(type(temp))

  4.直接单击

  temp = 'alex'
  temp.upper()
  鼠标放在该方法上,Ctrl + 鼠标左键即可定位到此方法,则可自动定位;

一、基本数据类型常用功能

  1.整数(int)

    a.__add__ 

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 #.__add__  #加法运算
5 a1 = 123
6 a2 = 456
7 print(a1 + a2)
8 print(a1.__add__(a2))

    b.bit_length()获取可表示二进制的最短位数

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 #1:00000001
 5 #2:00000010
 6 #3:00000011
 7 #4:00000100
 8 n = 4 #0000100
 9 print(type(n))
10 print(n.bit_length())

  2.字符串(str)

    2.1capitalize()首字母大写

    

1  #! /usr/bin/env python
2  # -*- coding:utf-8 -*-
3 
4 a = 'alex'
5 print(a.capitalize()) 

    2.2center()居中

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name = 'wenzm'
5 print(name.center(20, '-'))    #name 居中,剩余字符用‘-’填充

    2.3count()序列开始到结束,某中字符出现的次数

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name = 'wenzm'
5 print(name.count('e', 0, 5))    #返回字符‘e’在序列0-5中出现的次数

    2.4 endswith() 判断序列内是否以某字符结束,是返回True,否则返回False

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 temp = 'hello'
5 print(temp.endswith('p', 0, 4))    #判断序列0,4是否以p结尾,如不传序列,则默认为整个字符

    2.5 expandtabs() 把\t转换成空格

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 content = 'hello\tworld'
5 print(content.expandtabs(20))    #将\t转换成了20个空格

    2.6 find() 从左向右找传的字符,找到就返回该字符所在的序列,否则返回-1

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 content = 'hello world'
5 print(content.find('e'))

    2.7 rfind() 从左向右找传的字符,找到就返回该字符所在的序列,否则返回-1

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3  
4 content = 'hello world'
5 print(content.rfind('e'))

    2.8 format() 格式化输出

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 s = 'hell0 {0}, age {1}'
5 # {0} {1}为占位符
6 print(s.format('alex', 20))     # format 方法把你的参数传给上面的占位符

    2.9 isalnum()判断是否只包含数字和字母,是返回True,否则返回false

 

    isalpha())  # 判断是否只包含字母
    islower()) # 判断是否小写
    isspace()) # 判断是否空格
    istitle()) # 判断是否为标题 所有首字母大写
    isupper()) # 判断是否全部为大写

    3.0 join()
1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 li = ['alex', 'eric']
5 s = '_'.join(li)    # 用_把列表的每个元素链接起来,str类型,也可以是元祖,方法一样

    3.1 ljust() 左对齐

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name = 'wenzm'
5 print(name.ljust(20,'-'))   # 左对齐,长度20,填充内容-

    3.2 rjust() 右对齐

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3  
4 name = 'wenzm'
5 print(name.rjust(20,'-'))   # 右对齐,长度20,填充内容-

    3.3 lstrip() 移除左边空格

       rstrip() 移除右边空格

       strip() 移除空格,中间的不管

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name = ' wen  zm '
5 print(name)
6 print(name.lstrip())    #移除左边空格
7 print(name.rstrip())    #移除右边空格
8 print(name.strip())     #移除空格,中间的不管

    3.4 partition() 根据传参,把字符串分割成三部分,返回一个元组

 

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3  
4 s = 'alex sb alex'
5 print(s.partition('sb'))    # 根据传参sb,把字符串分割成三部分,返回一个元组

    3.5 split() 找到入参的位置,把字符分割成两个部分并返回一个列表,maxsplit最大分割次数

      rsplit()

      startswith()

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 s = 'wenzmwenzm'
5 print(s.split('e', 1)) # 找到入参的位置,从左向右并把剩余的分成几部分,返回列表, maxsplit最大分割次数
6 print(s.rsplit('e', 1)) # 找到入参的位置,从右向左把剩余的分成几部分,返回列表, maxsplit最大分割次数
7 print(s.startswith('a'))    #判断是否以某个字符开头

    3.6 swapcase() 大小写转换

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name = 'WeNzM'
5 print(name.swapcase())

    3.7 title() 变成标题,首字母大写

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 content = 'hello world'
5 print(content.title())

二、字符串操作

索引、长度、切片、循环

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 # 索引
 5 temp = 'wenzm'
 6 print(temp[0])    #打印temp第0个索引位置的字符
 7 print(temp[1])    #打印temp第个索引位置的字符
 8 
 9 # 长度
10 print(len(temp))    #打印temp 长度
11 
12 # 切片
13 print(temp[0:2])    # 打印0<= <2索引位置的字符也可写成temp[:2]
14 
15 # 循环
16 start = 0
17 while start < len(temp):
18     print(temp[start])
19     start += 1
20 
21 for item in temp:
22     print(item)
23 
24 for item in temp:
25     if item == 'n':    # 不打印n
26         continue    # 跳出本次循环,此次循环不执行print语句
27     print(item)
28 
29 for item in temp:
30     if item == 'e':    # 不打印n
31         break    # 跳出循环,不输出后面内容
32     print(item)

 

posted @ 2020-05-02 13:06  H年轻的心  阅读(24)  评论(0)    收藏  举报