一、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/字符集编码/

需要注意:

中文字符——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)
(2) 布尔值
  • 创建

    a = True

    b = False
  • 转换
    • 数字转换,只有0是False,其他True
    • 字符串, 只有""是False,其他True
    • 待续...
(3) 字符串
  • 创建

    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编程-编码、变量、数据类型的更多相关文章

  1. python编程之变量和简单的数据结构

    一.变量 前面我们用python输出了“hello world!” 这次我们在前面加入一行,定义一个变量,然后修改第二行. 添加变量导致Python解释器需要做更多工作.处理第1行代码时,它将文本“H ...

  2. Python编程-编码、文件处理、函数

    一.字符编码补充知识点 1.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的,断电后 ...

  3. python基础知识 变量 数据类型 if判断

    cpu 内存 硬盘 操作系统 cpu:计算机的运算和计算中心,相当于人类的大脑 飞机 内存:暂时存储一些数据,临时加载数据和应用程序 4G 8G 16G 32G 速度快,高铁 断电即消失 造价高 硬盘 ...

  4. Python基础编程:字符编码、数据类型、列表

    目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...

  5. python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)

    一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...

  6. Python编程从入门到实践笔记——变量和简单数据类型

    Python编程从入门到实践笔记——变量和简单数据类型 #coding=gbk #变量 message_1 = 'aAa fff' message_2 = 'hart' message_3 = &qu ...

  7. Python编程笔记二进制、字符编码、数据类型

    Python编程笔记二进制.字符编码.数据类型 一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存 ...

  8. 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  9. Python编程:从入门到实践—变量和简单数据类型

    变量的命名和使用 #!/usr/bin/env python# -*- encoding:utf-8 -*- message ="Hello Python world!"print ...

随机推荐

  1. python3----ljust rjust center

    Python中打印字符串时可以调用ljust(左对齐),rjust(右对齐),center(中间对齐)来输出整齐美观的字符串,使用起来非常简单,包括使用第二个参数填充(默认为空格).看下面的例子就会明 ...

  2. hoj 2739 中国邮局问题

    /*若原图的基图不连通, 或者存在某个点的入度或出度为 0 则无解. 统计所有点的入度出度之差 Di, 对于 Di > 0 的点, 加边(s, i, Di, 0); 对于 Di < 0 的 ...

  3. EasyNVR摄像机无插件流媒体服务器对所在操作系统配置的需求

    背景需求 随着EasyNVR使用的用户越来越多,用户在使用过程中的常见问题我们也做出了一定的总结,以及在升级到3.0版本之后,我们的启动方式和配置 功能也有了一些改变.因此在此做出一些总结. 对于Ea ...

  4. Consul文档收藏

    英文:https://www.consul.io/intro/getting-started/install.html 中文:http://www.liangxiansen.cn/2017/04/06 ...

  5. make tree install 目录树状结构工具安装

    http://futeng.iteye.com/blog/2071867 http://zhou123.blog.51cto.com/4355617/1196415 wget ftp://mama.i ...

  6. DIV背景图片

    .bigY{    position:absolute;     width:95px;     height:93px;     visibility:visible;     right: 277 ...

  7. 一个jsp页面引入另一个jsp页面的三种方式 及静态引入和动态引入的区别

    转载下, 转载自:http://blog.csdn.net/fn_2015/article/details/70311495 1.第一种:jstl  import <c:import url=& ...

  8. IBM WebSphere cannot start in RAD 9.1

    Have solved the problem. Solutions follows Step 1: double click on "WebSphere Application Serve ...

  9. dbUtils 工具类介绍

    导包: commons-dbutils.jar 核心类: QueryRunner 常用方法: // 执行增,删,改语句, 返回影响的行数 int update(String sql,Object... ...

  10. 使用 adb logcat 显示 Android 日志

    本文为转载.  地址:http://www.hanshuliang.com/?post=32 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. ...