day01
1.编程语言
主流的像C、java、python、php、C#、等,可以从不同维度分类如下:
- 机器码和字节码
- 机器码: C
- 字节码: 其他
note: 机器码是电脑的CPU可直接解读的数据
字节码通常情况下它是已经经过编译,但与特定机器码无关。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。
- 解释型和编译型
- 解释型:Python、php、java
- 编译型:C#、C
note: 将某种高级语言源代码一次性“翻译”成该平台硬件执行的机器码,这个转换过程称为编译(Compile)
解释型语言是指使用专门的解释器对源程序进行逐行解释成特定平台的机器码并立即执行的语言。
- 难易程度
- C
- C#、Java
- PHP
- Python(类库齐全/模块)
总结
- 安装解释器
- 学习语言规则
- 编写代码
- 解释器运行
2.安装解释器
- cpython解释器(*)
- jpython解释器
- ironPython解释器
- rubyPyhton解释器
note: pypy是另一个Python解释器,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。 而cpython,需要先将你的代码解释成中间的字节码,在去转换成机器码执行。
解释器版本
- 2.7.14
- 3.6.5
note: 区别有以下几个方面
1、 2的默认编码是ascii码,而3的默认编码是utf8
编写程序
#!/usr/bin/python相当于写死了python路径;
#!/usr/bin/env python会去环境设置寻找python目录,推荐这种写法
3.编码
ascii码:一个字节,8位来表示,只英文使用
unicode码: 不能存储,四个字节,32位来表示,也叫万国码
utf8: 压缩unicode,英文用一个字节,中文用三个字节表示
gbk: 亚洲使用,中文是两个字节
4.IDE-Pycharm
实用配置:
file->settings->搜索mouse->general(改变字体大小)
file->settings->file and code template(改变基础模板)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
使用:启动Pycharm:选择已存在的解释器
打开Settings窗口后,选择Project: prjectName下面的Porject Interpreter
5.语法规则
输入输出
输出:print("my name")
输入: name = input("请输入你的名字:"),输入的值需要有变量接收。
变量
变量名规则:
数字、字母、下划线;
不能数字开头;
不能用python关键字。
note: 不能写大写,大写的叫全局变量。
示例一:
name = "alex"
new = name
name = "eric"
print(new)
这里的new指向值等于alex的内存空间,下边即使换了name指向的内存空间,new的值也不会变化,一行一行读。
数据类型
- 整型
age = 18
- 字符串
三引号多行输出;
字符串取值通过索引;
name = "紫薇"
n1 = name[0] 获取紫
n2 = name[1] 获取微
- 列表
user_list = ["alex","eric","houbinglei"]
print(user_list[0]) 输出alex
user_list = ["紫薇","尔康","18","海量","小鸡"]
for xxx in user_list:
print(xxx)
if xxx == '18':
break 只输出到18,就跳出当前for循环
-
字典
user_info = {"name":"紫薇","age":18} n5 = user_info["name"]
n6 = user_info["age"]
user_info['count'] = 666
输出: {"name":"紫薇","age":18,"count":666}
note: 记得字典里的中括号里加引号
n8 = [
"alex",
{'name':'日天','age':18},
[11,22,33]
]
n8[1]["age"] = 19 数据类型嵌套,通过key修改字典元素中的value
if语句
if 条件:
pass
elif 条件:
pass
else:
pass
循环语句while
while True:
print(1)
while True:
print(2)
break 循环输出1、2
for循环
for item in user_list:
if item['username'] == user and item['password'] == pwd:
flag = True
break
else:
pass
当flag等于True时候,break跳出当前for循环,后边的user_list内容不再循环。
作业:用户三次登录机会
user_list = [
{'username':'alex', 'password':'123', 'count':0 },
{'username':'eric', 'password':'123', 'count':0 },
{'username':'tony', 'password':'123', 'count':0 },
{'username':'oldboy', 'password':'123', 'count':0 },
]
i = 1
flag = "false"
while i < 4:
user = input("请输入用户名:")
pwd = input("请输入密码:")
for item in user_list:
if item['username'] == user and item['password'] == pwd:
flag = "True"
break
else:
pass
if flag == "True":
print("登录成功")
break
else:
print('登录第%s次' %i)
i += 1
if flag == "false":
print("超过登录次数")
else:
pass