Python 的安装(Windows 平台下)
1. 下载安装包: https://www.Python.org/downloads/
2. 默认安装路径: C:\Python2.7
3. 配置变量环境:
右键 computer 属性高级系统设置高级环境变量在第二个内容框中找到变量名为 path 的一行, 双击 Python 安装目录追加到变量值中, 用; 分割
指定解释器
在运行 Python 程序时, 必须明确指定程序由 Python 解释器来执行. 如下:
- #!/usr/bin/env python 这句话的作用: 声明解释器
- print Hello world
字符编码
程序开始运行之前, 除了需要声明解释器, 还要告诉解释器采用哪一类字符编码. 我们一般采用 utf-8 的编码. 在程序中编写如下:
- #!/usr/bin/env python
- # -*-coding:utf-8 -*- 或者 #coding = utf-8
变量定义与规则
定义变量的目的是为了给数据在内存中创建一个带有编号的容器, 然后将需要的数据存储在这个容器中. 程序在后面运行时, 如果要用到容器里面的数据, 就可以直接指向这个变量名.
总结起来就是: 它供下一个程式使用的值
规则:
1. 变量名只能是字母数字或者下划线的任意组合.
2. 变量名的第一个字符不能是数字
3. 以下关键字不能声明为变量名
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
注释
单行注视:# 被注释内容
多行注释:"""被注释内容"""
用户输入
- #!/usr/bin/env python
- # -*-coding:utf-8 -*-
- name = raw_input("what is your name?") #raw_input 它仅在 python2.x 中生效
- name = input("what is your name?")
- print("Hello" + name)
输入密码时, 如果想要不可见, 需要利用 getpass 模块中的 getpass 方法, 即:
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import getpass
- pwd = getpass.getpass(
- "请输入密码:"
- ) # 将用户输入的内容赋值给 name 变量
- (pwd) # 打印输入的内容
注意: getpass 命令在 pycharm 中无法实现密码不可见
模块
Python 的强大之处在于他有非常丰富和强大的标准库和第三方库, 几乎你想实现的任何功能都有相应的 Python 库支持, 以后的课程中会深入讲解常用到的各种库, 现在, 我们先来象征性的学 2 个简单的
- sys
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import sys
- print(sys.argv)
它最终输出的结果就是:[C:/Users/Administrator/PycharmProjects/First/Day1/Hello word.py] #它输出了当前运行程序所在的路径
- os
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import os
- os.system("df -h") # 调用系统命令
完全结合一下
- import os,sys
- os.system(.join(sys.argv[
- 1:]))
- # 把用户的输入的参数当作一条命令交给 os.system 来执行
以下代码为格式化字符串
%s 字符串
%d 整数
%f 浮点数
- #!/usr/bin/env python3
- # -*-coding:utf-8 -*-
- # Author:Alex
- name = input("in put your name")
- age = int(input("in put your age"))
- job = input("in put your job")
- msg =
- information of user %s:
- ---------------------
- name: %s
- age : %d
- job : %s
- ---------end---------
- %(name,name,age,job)
- print(msg)
- exit("退出了") #直接退出程序
运算符:
算术运算符:
+ 加法 - 对操作符的两侧增加值 a + b = 30
- 减法 - 减去从左侧操作数右侧操作数 a - b = -10
* 乘法 - 相乘的运算符两侧的值 a * b = 200
/ 除 - 由右侧操作数除以左侧操作数 b / a = 2
% 模 - 由右侧操作数和余返回除以左侧操作数 b % a = 0
** 指数 - 执行对操作指数 (幂) 的计算 a**b = 10 的幂 20
比较操作符:
== 检查, 两个操作数的值是否相等, 如果是则条件变为真 (a == b) 不为 true.
!= 检查两个操作数的值是否相等, 如果值不相等, 则条件变为真 (a != b) 为 true.
<> 检查两个操作数的值是否相等, 如果值不相等, 则条件变为真 (a <> b) 为 true 这个类似于 != 运算符
> 检查左操作数的值是否大于右操作数的值, 如果是, 则条件成立 (a> b) 不为 true.
<检查左操作数的值是否小于右操作数的值, 如果是, 则条件成立 (a < b) 为 true.
>= 检查左操作数的值是否大于或等于右操作数的值, 如果是, 则条件成立 (a>= b) 不为 true.
<= 检查左操作数的值是否小于或等于右操作数的值, 如果是, 则条件成立 (a <= b) 为 true.
赋值运算符
= 简单的赋值运算符, 赋值从右侧操作数左侧操作数 c = a + b 将指定的值 a + b 到 c
+= 加法 AND 赋值操作符, 它增加了右操作数左操作数和结果赋给左操作数 c += a 相当于 c = c + a
-= 减 AND 赋值操作符, 它减去右边的操作数从左边操作数, 并将结果赋给左操作数 c -= a 相当于 c = c - a
*= 乘法 AND 赋值操作符, 它乘以右边的操作数与左操作数, 并将结果赋给左操作数 c *= a 相当于 c = c * a
/= 除法 AND 赋值操作符, 它把左操作数与正确的操作数, 并将结果赋给左操作数 c /= a 相当于 = c / a
%= 模量 AND 赋值操作符, 它需要使用两个操作数的模量和分配结果左操作数 c %= a is equivalent to c = c % a
**= 指数 AND 赋值运算符, 执行指数 (功率) 计算操作符和赋值给左操作数 c **= a 相当于 c = c ** a
位运算符:
位运算符作用于位和位操作执行位假设, 如果 a =60; 且 b =13; 现在以二进制格式它们将如下:
计算机能表示的最小单位是一个二进制位
计算机能存储的最小单位是一个二进制位
一个二进制位单位是 bit(8bit 是 1byte[字节])
- a = 0011 1100 60
- b = 0000 1101 13
- -----------------
- a&b = 0000 1100
- a|b = 0011 1101
- a^b = 0011 0001
- ~a = 1100 0011
Python 语言支持下位运算符 二进制移动运算比乘除速度快
& 与运算 0 与 0 为 0 1 与 0 为 0 1 与 1 为 1 二进制和复制操作了一下, 结果, 如果它存在于两个操作数 (a & b) = 12 即 0000 1100
| 或运算 0 与 0 为 0 1 与 0 为 1 1 与 1 为 1 二进制或复制操作了一个比特, 如果它存在一个操作数中二进制或复制操作了一个比特, 如果它存在一个操作数中 (a | b) = 61 即 0011 1101
^ 异或运算 0 与 0 为 0 1 与 0 为 1 1 与 1 为 0 二进制异或运算符的副本, 如果它被设置在一个操作数而不是两个比特二进制异或运算符的副本, 如果它被设置在一个操作数而不是两个比特 (a ^ b) = 49 即 0011 0001
~ 按位取反 将一个数字的二进制取反, 然后用其减去(本位数能表示的最大数值 + 1) 例如 60 的按位取反为 195-256=-61 二进制的补运算符是一元的, 并有翻转位的效果 (~a ) = -61 即 1100 0011 以 2 的补码形式由于带符号二进制数
<<二进位向左移位运算符坐移相当于乘法左操作数的值左移由右操作数指定的位数 b << 1 = 26 即 0001 1010
>> 二进位向右移位运算符右移相当于除法, 但只取整数左操作数的值是由右操作数指定的位数向右移动 a>> 2 = 15 即 0000 1111
注意: 每次二进制向左或者向右移 N 位, 相当于乘或除一个 2 的 N 次方
逻辑运算符
and 所谓逻辑与运算符如果两个操作数都是真的, 那么则条件成立 (a and b) 为 true.
or 所谓逻辑 OR 运算符如果有两个操作数都是非零然后再条件变为真 (a or b) 为 true.
not 所谓逻辑非运算符用于反转操作数的逻辑状态如果一个条件为真, 则逻辑非运算符将返回 false not(a and b) 为 false.
成员运算符:
in 计算结果为 true, 如果它在指定找到变量的顺序, 否则 false x 在 y 中, 在这里产生一个 1, 如果 x 是序列 y 的成员
not in 计算结果为 true, 如果它不找到在指定的变量顺序, 否则为 false x 不在 y 中, 这里产生结果不为 1, 如果 x 不是序列 y 的成员
标识运算符:
is 计算结果为 true, 如果操作符两侧的变量指向相同的对象, 否则为 false x 是 y, 这里结果是 1, 如果 id(x)的值为 id(y)
is not 计算结果为 false, 如果两侧的变量操作符指向相同的对象, 否则为 true x 不为 y, 这里结果不是 1, 当 id(x)不等于 id(y)
运算符优先级:
** 幂(提高到指数)
~ + - 补码, 一元加号和减号(方法名的最后两个 +@和 - @)
*/ % // 乘, 除, 取模和地板除
+ - 加法和减法
>> <<左, 右按位转移
& 位 AND
^ | 按位异或 ` 和定期 ` 或
<= <>>= 比较运算符
<> == != 等式运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 标识运算符
in not in 成员运算符
not or and 逻辑运算符
表达式 if ... else
场景一用户登陆验证
- #!/usr/bin/env python
- # -*- coding: encoding -*-
- import getpass
- name = input(
请输入用户名:
- )
- pwd = getpass.getpass(
请输入密码:
- )
- if name == "alex" and pwd == "cmd":
- print("欢迎, alex!")
- else:
- print(
- "用户名和密码错误"
- )
场景二猜年龄游戏
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- my_age =
- 28
- user_input = int(input(
- "input your guess num:"
- ))
- if user_input == my_age:
- print(
- "Congratulations, you got it !"
- )
- elif
- user_input <my_age:
- print(
- "Oops,think bigger!"
- )
- else:
- print("think smaller!")
For 循环
- #!/usr/bin/env python
- #_*_coding:utf-8_*_
- __author__ = Alex Li
- for i in range(
- 10
- ):
- print("loop:", i )
输出:
- loop: 0
- loop: 1
- loop: 2
- loop:
- 3
- loop:
- 4
- loop:
- 5
- loop:
- 6
- loop:
- 7
- loop:
- 8
- loop:
- 9
还是上面的程序, 但是遇到小于 5 的循环次数就不走了, 直接跳入下一次循环
- for i in range(
- 10
- ):
- if i<
- 5
- :
- continue
- # 不往下走了, 直接进入下一次 loop
- print("loop:", i )
依然还是上面的程序, 但是遇到大于 5 的循环次数就不走了, 直接退出
- for i in range(
- 10
- ):
- if i>
- 5
- :
- break
- # 不往下走了, 直接跳出整个 loop
- print("loop:", i )
while loop 循环
- count = 0
- while True:
- print(
- "你是风儿我是沙, 缠缠绵绵到天涯..."
- ,count)
- count +=1
以上的循环是死循环, 运行的时候 它会一直运行下去. 如果你去查看 CPU 使用率, 可以看到瞬间上升了不少. 所以死循环要少写...
在上面的程序中, 加入一个 break , 当循环次数达到 100 次时, 程序停止运行
- count = 0
- while True:
- print(
- "你是风儿我是沙, 缠缠绵绵到天涯..."
- ,count)
- count +=1
- if count ==
- 100
- :
- print(
- "循环 100 次已经完成..."
- )
- break
用 for 循环写一个猜年龄的程序
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- my_age =
- 28
- count = 0
- while count <
- 3
- :
- user_input = int(input(
- "input your guess num:"
- ))
- if user_input == my_age:
- print(
- "Congratulations, you got it !"
- )
- break
- elif
- user_input < my_age:
- print(
- "Oops,think bigger!"
- )
- else:
- print("think smaller!")
- count += 1
- # 每次 loop 计数器 + 1
- else:
- print(
- "猜这么多次都不对, 你个笨蛋."
- )