一 python编程基础
一. 基础概念
-
编程与编程语言
python是一门编程语言,搞明白三点:
1、编程目的?
计算机的发展就是为解放人力,机器是死的,所以人必须找到一种能够被机器识别的表达式从而把自己的思想按照这个表达方式传递机器,完成机器可以自发的工作。
2、什么是编程语言?
上面所说的表达方式指的就编程语言
英语 python 单词 关键字(if while for and or) 语法 语法 作文 编程 3、什么是编程?
按照某种编程语言的语法风格写程序,程序在未执前就是一对普通文件。
-
编程语言的分类
程序员(奴隶主) 计算机(奴隶)
1. 机器语言:站在奴隶角度说计算机能听懂的话,直接用二进制编程,直接操作硬件
优点:执行效率快
缺点:学习难度大,开发效率低
2. 汇编语言:站在奴隶角度说计算机能听懂的话,用一些英文标签来代替一串特定的意义的二进制,还是直接操作硬件
优点:执行效率快,不如机器语言快
缺点:学习难度大,开发效率低,比机器语言降一个难度
3. 高级语言:站在人的角度说人话,机器无法理解,所以需要翻译
- 编译型(C):相当于百度翻译,翻译一次,拿着该翻译的结果去执行。
优点:执行效率高
缺点:开发效率低
- 解释型(Python):相当于同声传译,一边解释一边执行。
优点:开发效率高
缺点:执行效率低
以上三种语言
执行效率:从高到低
开发效率:从低到高
学习难度:从难到易
执行效率不是关键,开发效率才是王道
-
写程序的两种方式
- 交互式环境, 可以随时调试
- 文件的方式, 比如python3 C:\test.py
-
变量
什么是变量?
变指的是“变化”,量指的反映某种状态
变量名的命名规则
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 关键字不能声明为变量名
判断值是否相等:==
判断id是否相等:is
-
执行的过程
python3 C:\test.py执行这条命令的时候都发生了什么
- 先启动python3.exe
- 把C:\test.py从硬盘读入内存
- 解释执行文件内容(识别python语法)
二. 数据类型
1. 整形
整型:int
状态:等级,年龄
level=10 #level=int(10)
print(level,type(level),id(level))
2. 浮点型
浮点型:float
状态:薪资,身高,体重
salary=3000.3 #salary=float(3000.3)
print(salary,type(salary),id(salary))
3. 字符串
字符串:在引号(单引号,双引号,三引号)里定义的一堆字符
状态:描述性的内容,比如名字,性别,国籍
gender='male' #gender=str('male')
print(type(gender))
#多行
msg='''
111
111
222
333
'''
print(msg)
字符串的运算只包括"+"和"*"
info1='hello'
info2='world'
res=info1+info2
print(res)
#输出结果
#>>> ab
print('*'*10)
#输出结果
#>>> **********
4. 列表
列表:在[]内,用逗号分隔开,存放多个任意类型的元素
状态:有序存放多个值
l=[1,2,'a','b',['w','t','p']] #l=list([...])
print(l[0])
5. 字典
字典类型:定义花括号内,用逗号分割key:value, value可以是任意类型,但是key必须不可变类型
状态:存放多个值
dic={
'name':'Ross_Geller',
'age':18,
'gender':'male',
'profession':'paleontologist'
}
print(dic['name'])
#输出结果:
#>>> Ross_Geller
6. 布尔
布尔:True,False
状态:成立,不成立,用来做逻辑运算---》判断
print(type(True))
#输出结果
#>>> True
age=38
print(age > 18)
#输出结果
#>>> True
7. 可变类型与不可变类型
- 可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
- 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间), 如int, float, str
8. 格式化输出
%d只能接收数字,而%s既可以接收数字又可以接收字符串
name=input('name>>: ')
age=input('age>>: ')
sex=input('sex>>: ')
job=input('job>>: ')
msg='''
------------ info of %s -----------
Name : %s
Age : %s
Sex : %s
Job : %s
------------- end -----------------
''' %(name,name,age,sex,job)
print(msg)
三. 基本运算符
运算按种类可分为
- 算数运算
- 比较运算
- 逻辑运算
- 赋值运算
- 成员运算
- 身份运算
- 位运算
-
算数运算
以下假设变量: a=10 b=20
运算符 | 描述 | 实例 |
---|---|---|
+ | 两个对象相加 | a+b 输出结果30 |
- | 得到负数或是一个数减去另一个数 | a-b 输出结果-10 |
* | 两个数相乘或是返回一个重复若干次的字符串 | a*b 输出结果200 |
/ | x/y | b/a 输出结果2 |
% | 取模-返回除法的余数 | b/a 输出结果0 |
** | x**y-返回x的y次幂 | a**b s输出结果100000000000000000000 |
// | 取整-返回商的整数部分 | 9//2结果为4, 9.0//2.0结果为4.0 |
-
比较运算
以下假设变量:a=10,b=20
运算符 | 描述 | 实例 |
---|---|---|
== | 等于-比较对象是否相等 | a==b 返回False |
!= | 不等于-比较对象是否不相等 | a!=b 返回True |
<> | 不等于-比较对象是否不相等 | a<>b 返回True |
> | 大于 | a>b 返回False |
< | 小于 | a<b 返回True |
>= | 大于等于 | a>=b 返回False |
<= | 小于等于 | a<=b 返回True |
-
赋值运算
以下假设变量:a=10,b=20
运算符 | 描述 | 实例 |
---|---|---|
= | 简单赋值运算符 | c=a+b 即将a+b的结果赋值给c |
+= | 加法赋值运算符 | c+=a 即c=c+a |
-= | 减法赋值运算符 | c-=a 即c=c-a |
*= | 乘法赋值运算符 | c*=a 即c=c*a |
/= | 除法赋值运算符 | c/=a 即c=c/a |
%= | 取模赋值运算符 | c%=a 即c=c%a |
**= | 幂赋值运算符 | c**=a 即c=c**a |
//= | 取整除运算符 | c//=a 即c=c//a |
#赋值
a=2
b=a
#链式赋值
a=b=c=2
#交叉赋值
m=1
n=2
m,n=n,m
print(m,n)
#>>> 2 1
#解压
l=[1,2,3,4]
a,b,c,d=l
print(a)
print(b)
print(c)
print(d)
-
逻辑运算
运算符 | 描述 | 实例 |
---|---|---|
and | 与-如果x为False, x and y返回False, 否则他返回y的计算值 | 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 |
#三者的优先级从高到低分别是:not,or,and
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False
#最好使用括号来区别优先级,其实意义与上面的一样
>>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
False
-
身份运算
#is比较的是id
#而==比较的是值
四. 流程控制之if...else
-
语法
if 条件1:
缩进的代码块
elif 条件2:
缩进的代码块
elif 条件3:
缩进的代码块
......
else:
缩进的代码块
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
score=80
if score >= 90:
print('优秀')
elif score >= 80 and score < 90:
print('良好')
elif score >= 70 and score < 70:
print('普通')
else:
print('很差')
五. 流程控制之while循环
-
语法
while 条件:
# 循环体
# 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
# 如果条件为假,那么循环体不执行,循环终止
循环嵌套与tag
tag=True
while tag:
......
while tag:
........
while tag:
tag=False
-
while循环练习题
#1. 使用while循环输出1 2 3 4 5 6 8 9 10
count=1
while count <= 10:
if count == 7:
count+=1
continue
print(count)
count+=1
count=1
while count <= 10:
if count != 7:
print(count)
count+=1
#2. 求1-100的所有数的和
res=0
count=1
while count <= 100:
res+=count
count+=1
print(res)
#3. 用户登陆(三次机会重试)
count=0
while count < 3:
name=input('请输入用户名:')
password=input('请输入密码:')
if name == 'egon' and password == '123':
print('login success')
break
else:
print('用户名或者密码错误')
count+=1
#8:猜年龄游戏升级版
#要求:
# 允许用户最多尝试3次
# 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
# 如何猜对了,就直接退出
#啰嗦版
Age=32
count=0
tag=True
while tag:
Age_Input=int(input("Let's guess: "))
if Age_Input==Age:
print("excelent")
tag=False
else:
if count<2:
count += 1
continue
else:
flag=input('continue or quit? Please input Y or N: ')
if flag=='Y' or flag=='y':
count = 0
continue
else:
tag=False
#小清新版
Age=73
count=0
while True:
if count == 3:
choice=input('继续(Y/N?)>>: ')
if choice == 'Y' or choice == 'y':
count=0
else:
break
guess=int(input('>>: '))
if guess == Age:
print('you got it')
break
count+=1