Python编程-编码、变量、数据类型
一、Python和其他语言对比
C语言最接近机器语言,因此运行效率是最高的,但需要编译。
JAVA更适合企业应用。
PHP适合WEB页面应用。
PYTHON语言更加简洁,丰富的类库,使初学者更易实现应用开发,但运行速度不如其他语言。
高级语言都是通过各自的解释器,将代码编译成字节码,再将字节码编译成机器码。
二、Python种类
CPython:用C语言实现的Python解释器
执行过程:代码 -> C字节码 -> 机器码 (一行一行编译)
JPython:用JAVA实现的Python解释器
IronPython:用.NET实现的Python解释器
执行过程:代码 -> 其他字节码 -> 机器码
PyPy:用Python实现的Python解释器
执行过程:代码 -> C字节码 -> 机器码 全部转换完 -> 执行
三、Python基础
1.IDE工具
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
简单设置
(1)设置编码UTF-8
(2)设置模板temp
(3)设置鼠标滚动放大
2.编码
以下链接已经详细描述了各种编码
http://www.china-bigcloud.online/2017/04/11/%E5%AD%97%E7%AC%A6%E9%9B%86%E7%BC%96%E7%A0%81/
需要注意:
中文字符——utf-8,需要使用三个字节来表示 24位
gbk,gbk2312 需要使用二个字节来表示 16位
Python编码
python3默认编码方式是UTF-8
文件编码 # -- coding:utf-8 --
解释器编码
3.注释
(1)# 单行注释
(2)""" """ 多行注释
(3)IDE中使用ctrl+?注释代码
4. .pyc文件
由py文件经过编译后二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同。
pyc文件是用来保存python虚拟机编译生成的byte code的。在python的运行过程中,如果遇到import首先在设定好的path中寻找对应的.pyc或者.dll文件。如果没有这些文件,则编译成对应的PycodeObject并穿件.pyc文件写入中间结果。
5.变量
- 字母
- 数字(不能开头)
- 下划线
- 不能使用python内置关键字
- 变量命名时,名字要有可读性,一般以下划线分割,如user_id
6.输入,输出
(1)input
v = input("请输入:")
运行结果: 请输入:abc
(2)getpass
从终端输入一行字符串,关闭了回显(输入时不显示输入的字符串),适用于用密码的输入
import getpass v = getpass.getpass('请输入:') print(v)
此方法只在终端测试时有效,在IDE测试时无效
运行结果: C:\Python35\python.exe E:\s17\day01-0423\test.py 请输入: asdgajlksd
(3)print
v = "你好,This is 5!" print(v)
运行结果: 你好,This is 5!
7.条件语句
(1)形式1
if 条件:
成功走这里
else:
失败走着
示例:
import getpass name = input("请输入姓名:") pwd = getpass.getpass('请输入密码:') if name == 'xiaoda' and pwd == '123456': print(pwd) print('欢迎登陆') else: print(pwd) print('退出')
运行结果: C:\Python35\python.exe E:\s17\day01-0423\test.py 请输入姓名:xiaoda 请输入密码: 346134 退出 C:\Python35\python.exe E:\s17\day01-0423\test.py 请输入姓名:xiaoda 请输入密码: 123456 欢迎登陆
(2)形式2
if 条件:
...
elif 条件:
...
else:
...
示例:
username = input('>>>') if username == 'alex': print('普通管理') elif username == 'oldboy': print('超级管理') elif username == '郭少龙': print('人') elif username == '刘一': print('装逼犯') else: print('再见...') print('end')
运行结果: 请输入姓名:达达 超级管理 end 请输入姓名:xiaoda 帅哥 end 请输入姓名:武总 再见... end
8.循环语句
while 条件:
continue # 立即开始下次循环
break # 跳出所有循环
示例:
练习1:使用while循环输出1 2 3 4 5 6 8 9 10 i = 1 while True: if i == 7: i = i + 1 continue print(i) i = i + 1 if i == 11: break
运行结果: 1 2 3 4 5 6 8 9 10
练习2:求1-100的所有数的和 value = 0 i = 1 while i < 101: value = value + i i = i + 1 print(value)
运行结果: 5050
练习3:输出 1-10 内的所有奇数 i = 1 while i < 11: a = i % 2 if a == 1: print(i) i = i + 1
运行结果: 1 3 5 7 9
练习4:输出 1-10 内的所有偶数 i = 1 while i < 11: a = i % 2 if a == 0: print(i) i = i + 1
运行结果: 2 4 6 8 10
练习5:求1-2+3-4+5 ... 99的所有数的和 value = 0 i = 1 while i < 100: if i % 2 == 1: #奇数 value = value + i i += 1 else: #偶数 value = value - i i += 1 print(value)
运行结果: 50
练习6:用户登陆(三次机会重试) i = 0 while i < 3: username = input('请输入姓名:') pwd = input('请输入密码:') if username == 'xiaoda' and pwd == '123123': print('登录成功') break else: print('用户名或密码错误,请重新输入。') i += 1 else: print('您已输入错误3次,请核对后重试。')
运行结果: 请输入姓名:dog 请输入密码:1234 用户名或密码错误,请重新输入。 请输入姓名:cat 请输入密码:123456 用户名或密码错误,请重新输入。 请输入姓名:mouse 请输入密码:123123 用户名或密码错误,请重新输入。 您已输入错误3次,请核对后重试。 请输入姓名:xiaoda 请输入密码:123123 登录成功
9.运算符
(1)算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
(2)比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
(3)赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | 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 |
(4)位运算符
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
/ | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a / b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
(5)逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
(6)成员运算符
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
(7)身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , is 返回结果 1 |
is not | is not是判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1 |
(8)运算符优先级
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ / | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
注意: a. i += 1 b. if 1 == 1 or 1 > 2 and 1 == 4: print('正确') else: print('错误') 运行结果: 正确 注意:同为逻辑判断没有优先级,自左向右,符合条件即为真 c. content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个" if "前几天去" in content: print('包含敏感字符') else: print(content) 运行结果: 包含敏感字符
10.Python数据类型
(1) 整数 int- 创建
a = 123
a = int(123) - 转换
age = "18"
new_age = int(age)
- 创建
a = True
b = False - 转换 数字转换,只有0是False,其他True
- 字符串, 只有""是False,其他True
- 待续...
- 创建
a = "alex"
a = str('alex') 转换
age = 19
new_age = str(age)- 字符串的拼接
name = 'alex' gender = '女' new_str = name + gender print(new_str)
运行结果: alex女
- 字符串格式化
占位符
name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!' new_str = name %('男',19,) print(new_str)
运行结果: 我叫李杰,性别:男,我今年19岁,我在说谎!
name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!' %('男',19,) print(name)
运行结果: 我叫李杰,性别:男,我今年19岁,我在说谎!
- 判断子序列是否在其中
content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个" if "前几天去" in content: print('包含敏感字符') else: print(content)
- 移除空白
val = " alex " print(val) new_val = val.strip() # 左右 print(new_val) new_val = val.lstrip()# 左边 print(new_val) new_val = val.rstrip() # 右边 print(new_val)
运行结果: alex alex alex alex
- 分割
user_info = "alex|sb123|9" v = user_info.split('|') print(v) v = user_info.split('|',1) print(v) v = user_info.rsplit(' ',1) print(v)
运行结果: ['alex', 'sb123', '9'] ['alex', 'sb123|9'] ['alex|sb123|9']
- 长度(字符)
val = "李杰nb" v = len(val) print(v)
运行结果: 4
- 索引
val = "李杰nb" v = val[0] print(v)
运行结果: 李
val = input('请输入:') i = 0 while i < len(val): print(val[i]) i += 1
运行结果: 请输入:啥空间大概xck23 啥 空 间 大 概 x c k 2 3
- 切片
name = '我叫李杰,性别我今年岁,我在说谎!' print(name[0]) print(name[0:2]) print(name[5:9]) print(name[5:]) print(name[5:-2]) print(name[-2:])
运行结果: 我 我叫 性别我今 性别我今年岁,我在说谎! 性别我今年岁,我在说 谎!(4) 列表
创建:
a = ['alex','狗','eric',123]
a = list(['alex','狗','eric',123])- in判断:
if 'al' in a: pass
if 'al' in a[0]: pass
- 索引:
val = a[0]
- 长度:
val = len(a)
- 切片:
a = ['alex','狗','eric',123] v = a[0::2] print(v)
- 追加:
a = ['alex','狗','eric',123] a.append('xxoo') print(a)
运行结果: ['alex', '狗', 'eric', 123, 'xxoo']
- 插入:
a = ['alex','狗','eric',123] a.insert(1,'牛') print(a)
运行结果: ['alex', '牛', '狗', 'eric', 123]
- 删除:
a = ['alex','eric','狗','eric',123] a.remove('eric') print(a) del a[1] print(a)
运行结果: ['alex', '狗', 'eric', 123] ['alex', 'eric', 123]
- 更新:
a = ['alex','eric','狗','eric',123] a[1] = '阿斯顿发送到' print(a)
运行结果: ['alex', 'eric', '阿斯顿发送到', 'eric', 123]
- For循环:
a = ['alex','eric','狗','eric',123] for item in a: print(item) # break # continue
运行结果: alex eric 狗 eric 123(5) 字典操作
- 创建
v = { 'name': 'alex', 'password': '123123' }
- 索引获取值
n = v['name'] print(n)
无数据时为增加;有数据时为修改
v['age'] = 19 print(v)
删除
del v['name'] print(v)
循环
for item in v.keys(): print(item) for item in v.values(): print(item) for key,val in v.items(): print(key,val)
- 长度
print(len(user_dict))
以上操作运行结果: alex {'age': 19, 'password': '123123', 'name': 'alex'} {'password': '123123', 'age': 19} password age 123123 19 password 123123 age 19 2
- 相互嵌套
user_dict = { 'k1': 'v1', 'k2': {'kk1':'vv1','kk2':'vv2'}, 'k3': 123, 'k4': ['alex','eric',['a','b','c'],'李杰',{'k11':'vv1'}], } user_dict['k4'][2].append('123') user_dict['k4'][4]['n'] = '过啥龙'
运行结果: {'k1': 'v1', 'k4': ['alex', 'eric', ['a', 'b', 'c', '123'], '李杰', {'k11': 'vv1'}], 'k3': 123, 'k2': {'kk2': 'vv2', 'kk1': 'vv1'}} {'k1': 'v1', 'k4': ['alex', 'eric', ['a', 'b', 'c', '123'], '李杰', {'n': '过啥龙', 'k11': 'vv1'}], 'k3': 123, 'k2': {'kk2': 'vv2', 'kk1': 'vv1'}}
示例1:
user_list = [ {'name':'alex','pwd':'123123','times':1}, {'name':'eric','pwd':'123123','times':1}, {'name':'tony','pwd':'123123','times':1}, ] user = input('用户名:') pwd = input('密码:') for item in user_list: if user == item['name'] and pwd == item['pwd']: print('登录成功') break
运行结果: 用户名:eric 密码:123123 登录成功
示例2:
读取文件,重新赋值
(1)创建一个普通文件
db alex|123123|3 eric|123123|3
(2)读取文件,根据条件,重新赋值
```
login.py
#!/usr/bin/python # -*- coding:utf-8 -*- # 1. 打开并读取文件内容 f1 = open('db','r') data = f1.read() f1.close() # 2. 格式化,列表中嵌套字典 print(data) user_info_list = [] user_str_list = data.split('\n') for item in user_str_list: temp = item.split('|') v = { 'name': temp[0], 'pwd': temp[1], 'times': temp[2] } user_info_list.append(v) user_info_list[1]['times'] = 3 print(user_info_list) # 3. 列表中嵌套的字典 # # 4. 重新写入文件 target = """alex|123123|3\neric|123123|3""" f2 = open('db','w') f2.write(target) f2.close()
```
- Python笔记——基本语法:标识符、数据类型、变量、运算符及表达式/编码风格
- python教程1:Python基础之数据类型和变量、字符串和编码
- Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set
- Python基础系列----语法、数据类型、变量、编码
- Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
- python(一)变量,常量,编码,数据类型
- python(一)变量,常量,编码,数据类型
- Python中数据类型变量,编码以及格式化注意细节O(∩_∩)O
- Python基础知识-数据类型和变量,字符和编码及格式化
- Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set
- Python笔记——基本语法:标识符、数据类型、变量、运算符及表达式/编码风格
- Python【基础:数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set】注意事项(与java,c比较)
- python 编程从入门到实践 第二章 变量和简单数据类型
- python学习(一)变量和数据类型
- C++与Python的混合编程-调用有参函数以及C++数据类型与Python数据类型间的转换
- 我与python约个会:09.程序编程基础3~组合数据类型
- 从C#到Python —— 1 变量和数据类型
- Python学习笔记-数据类型,运算,变量