pyhton笔记(一):字符编码、变量
一、什么是python?
python是一种面向对象、解释型的计算机语言,它的特点是语法简洁、优雅、简单易学。
编译型语言:
写好代码之后把代码编译成二进制文件,运行时运行编译好的二进制文件。比如C、C++、C#,运行速度快,但编译过程慢。
解释型语言:
运行一行代码编译一行,什么时候运行代码,什么时候编译。比如,php、pyhton、ruby、java、go、JavaScript,运行速度较慢,性能差一些。
Java虽然编译成calss文件,但不是二进制的,在jvm中运行
脚本语言:
功能单一的语言。比如shell、vb、javascript、html、bat
指定解释器
python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py
,那么就需要在 hello.py 文件的头部指定解释器,如下
#!/usr/bin/env python
print
"hello,world"
如此一来,执行: ./hello.py
即可。
ps:执行前需给予 hello.py 执行权限,比如,chmod 755 hello.py
pycharm设置默认的模板:
view -> 勾选toolbar -> settings :
pycharm设置字符编码:
python中的单引号、双引号:
字符串都用引号引起来,单引号和双引号没有区别,如果字符串里面包含单引号的话,外面就用双引号,里面有双引号的话,外面就用单引号
单行注释:#
多行注释:''' ''' 或 """ """ (定义多行的字符串,保持原有的格式)
pycharm快捷键:
注释 :ctrl + /
复制一行:ctrl + d
二、字符编码发展史:
--->ASCII 最多只能表示 255 个符号,即:2**8 -1 = 256-1 1bytes(8位)
--->1980年 gb2312 7445个字符
--->1995年 GBK1.0 21886个符号
--->2000年 GB18030 27484个汉字
---> Unicode(统一码、万国码、单一码) ,最少由2bytes(16位)表示,即:2 **16 = 65536 (对于英文存储来说比较浪费空间)
--->UTF-8 对Unicode编码的压缩和优化,使得ascii码中的字符用1个字节保存、欧洲的字符用2个字节保存、东亚的字符用3个字节保存。
进制:
二进制:0 1
八进制:0 1 2 3 4 5 6 7
十进制:0 1 2 3 4 5 6 7
十六进制: 0123456789ABCDEF(0~15)
py3默认字符集是unicode
字符编码与转码:
查看当前默认编码:
import sys
print(sys.getdefaultencoding()) #py3pycharm设置成的是utf-8,但python系统默认的是Unicode。
Python3:
#coding:gbk #文件编码
import sys
print(sys.getdefaultencoding()) #pycharm默认utf-8 s = '你好'
s_to_gbk = s.encode('gbk') #b'\xc4\xe3\xba\xc3'
print(s.encode('utf-8')) #b'\xe4\xbd\xa0\xe5\xa5\xbd' #s.encode()相当于:
gbk_to_utf8 = s_to_gbk.decode('gbk').encode('utf-8')
print(gbk_to_utf8) #b'\xe4\xbd\xa0\xe5\xa5\xbd'(和直接encode一样)
三、变量:为了方便再次调用
python中定义变量很简单,一个等号就搞定,不需要指定数据类型。python变量指向的是一个内存地址。
name = 'aaa'
name2 =name #将name赋值给name2
print('name:%d, name2:%d' % (id(name),id(name2))) name = 'bbb' #name的值改变
print('name:%d, name2:%d' % (id(name),id(name2))) name:23346048, name2:23346048
name:23346144, name2:23346048 #name的值改变后,指向的内存地址也改变
print(id('aaa'),id('bbb')) #19741568 19741664
变量的定义规则:
变量名要见名知意(下划线或驼峰的方式命名)
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
定义常量:变量名大写
以下关键字不能声明为变量名:
['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']
二、输入、输出
接收用户输入:
name = input('请输入姓名:') #input接收输入的值都是string类型的
age = int(input('age:')) #将input接收的字符串转换成整型 today = str(num) #整型、日期类型等转换成字符串型
raw_input() #python2中使用的方法
输出:
print("输入的年龄是:%s" % age)
字符串的格式化:
第一种方式:字符串的拼接(不推荐)
welcome = "欢迎光临:" + username #第一种方式:字符串连接,不推荐
第二种方式:使用占位符
占位符 --- %s :字符串,%d:整数 ,%.2f: float型(小数点后多少位,自动四舍五入)
welcome = "欢迎光临:%s,今天是:%s" %(username, today) #多个占位符
第三种方式:s.format(xx=xx,xx=xx):
age = 18
name = 'zhangsan'
sex = 'male'
sql = "insert into user VALUES ('{name}','{sex}',{age});"
new_sql = sql.format(age=age,sex=sex,name=name)
print(new_sql)
三、条件判断
if 条件:
xxx
else:
xxx
多条件判断:
score = input('请输入score:')
score = int(score) #input接收的输入是字符串string类型的,此处需要转换成int型 if score>=90:
print('优秀')
elif score>=75 and score <90:
print('良好')
elif score>=60 and score<75:
print('合格')
else:
print('不合格')
“or” 的使用:
if sex==’男’ or sex == ‘xx’:
“!=”的使用:
if sex!==’xx’ and/or xxx
四、循环(迭代、遍历):
while循环:while循环必须有一个计数器,每次循环计算器+1
count = 0
while count<10:
print('Hello world!') #循环时重复执行循环体中的语句
count = count + 1
else: #与while想对应的else,循环正常结束后才会执行它(前面有break,就不会执行)
xxx
for循环 :不需要定义计算器,每次循环,自动+1(for循环不能写出死循环)
for i in range(3): #循环3次
print(i)
print('hello h')
else:
print('正常循环后执行')
break和continue,都只能用在循环里面,它们有以下区别:
break:立即结束循环,不管循环有没有循环完
continue:结束本次循环,进行开启下一次循环(执行continue,它后面的代码就永远执行不到)
#while和for循环最后的else,如果前面有break就不算正常循环完,就不会执行else中的语句
五、小练习
写个猜数字的小游戏,要求:
产生一个随机数字,1-100之间,接收用户输入;
如果猜对了,游戏结束;如果猜大了,提示猜大了;如果猜小了,提示猜小了;
错误次数限制3次。
产生随机数模块使用random.randint(1,101),是一个标准包,导入即可。
import random
num = random.randint(1,10)
#print(num)
count = 0
while count<3:
guess = input("请输入数字:")
guess = int(guess) #转换成int类型
if guess<num:
print("小了小了")
elif guess>num:
print("大了大了")
else:
print("恭喜猜对了")
break #break立即结束循环,不管循环有没有循环完
count = count + 1 #或者写成:count += 1
else: #三次循环结束执行else,如果是前面是break,就不执行此else
print("游戏次数已经用完了。")
六、range的使用:
for i in range(101):
if i%2 == 0:
print(i)
七、字符串格式化:
占位符:%s -字符串,%d -整数 ,%.2f -float(自动四舍五入)
import datetime
today = datetime.date.today()
username = input("请输入用户名:")
#welcome = "欢迎光临:" + username #第一种方式:字符串连接,不推荐
#welcome = "欢迎光临:%s" %username #使用占位符格式化字符串
welcome = "欢迎光临:%s,今天是:%s" %(username, today) #多个占位符
print(welcome)
八、练习
使用while循环:
#1、登录 username、passwd
#输入用户和密码输入正确的话,提示:xxx,欢迎登录,今天的日期是xxx,程序结束
#输入错误的话,提示“账号/密码输入错误”
# 2、最多输入错误3次,输入错误超过3次,提示错误次数过多 #循环
# 3、账号密码,要校验输入为空的情况, import datetime uname = 'test'
pwd = ''
today = datetime.date.today() #获取今天的日期 count = 0
while count<3:
username = input("请输入用户名:").strip() #strip()去掉空格
passwd = input("请输入密码:").strip()
if len(username)==0 or len(passwd)==0:
#if username=='' or passwd=='': #或者为空
print("账号或密码不能为空,请重新输入")
#continue
elif username==uname and passwd==pwd:
print("%s,欢迎登录,今天的日期是:%s" % (username,today))
break
else:
print("账号或密码输入错误!")
count += 1 else:
print("输入错误超过3次,错误次数过多!") #循环正常结束,使用else
使用for循环:
import datetime uname = 'test'
pwd = ''
today = datetime.date.today() #获取今天的日期 for i in range(3):
username = input("请输入用户名:").strip() #strip()去掉空格
passwd = input("请输入密码:").strip()
if len(username)==0 or len(passwd)==0:
#if username=='' or passwd=='': #或者为空
print("账号或密码不能为空,请重新输入")
elif username==uname and passwd==pwd:
print("%s,欢迎登录,今天的日期是:%s" % (username,today))
break
else:
print("账号或密码输入错误!")
else:
print("输入错误超过3次,错误次数过多!") #循环正常结束,使用else
九、变量的交换
a = b = c = 0 #定义了3个变量,都是0
python中直接交换两个变量的值:
b, a = a, b #交换两个变量的值(python底层帮你引用了一个三方变量) print(a,b) a,b,c =c,b,a #多个变量交换值
【列】通过引入三方变量来交换位置:
a = 1
b = 2
c = None c = b
b = a
a = c
print(a,b)
#不通过引用三方变量,交换位置:
#不通过引用三方变量,交换位置: a = 1
b = 2
a = a + b #a=3
b = a - b #b=3-2=1
a = a - b #a=3-1=2
print(a,b)
name = 'aaa'
name2 =name #将name赋值给name2
print('name:%d,
name2:%d' % (id(name),id(name2)))
name = 'bbb' #name的值改变
print('name:%d,
name2:%d' % (id(name),id(name2)))
pyhton笔记(一):字符编码、变量的更多相关文章
- MySQL学习笔记之一---字符编码和字符集
前言: 一般来说,出现中文乱码,都是客户端和服务端字符集不匹配导致的原因. (默认未指定字符集创建的数据库表,都是latinl字符集, 强烈建议使用utf8字符集) 保证不出现乱码的思想:保证客户 ...
- python笔记:字符编码
ASCII编码 知识点:计算机中最小的单位是bit,bit就咱们常说一位二进制,一位二进制要么是0 要么是 1.但是bit这个单位太小了,我们用字节(byte)来表示.换算的规则如下: 8b = 1B ...
- 吴裕雄--天生自然JAVAIO操作学习笔记:字符编码与对象序列化
public class CharSetDemo01{ public static void main(String args[]){ System.out.println("系统默认编码: ...
- [python之路]变量和字符编码
变量和字符编码 #变量##声明变量```#_*_coding:utf-8_*_ name = "Tom"```上述代码声明了一个变量,变量名为: name,变量name的值为:&q ...
- python学习笔记(基础一:'hello world'、变量、字符编码)
第一个python程序: Hello World程序 windows命令行中输入:python,进入python交互器,也可以称为解释器. print("Hello World!" ...
- Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序
第一个python程序 Windows:设置环境变量,X:\pthonxxx,xxx是版本号 在命令提示符下 输入python,进入解释器 >>>print(“Hello World ...
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Python学习Day2笔记(字符编码和函数)
1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...
- 字符编码笔记:ASCII,Unicode和UTF-8 转
本文出处 http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 只是为了记录一下省得要去搜. 今天中午,我突然想搞清楚 ...
随机推荐
- [oracle,2017-11-28] 怎么判断oracle数据库中字段是否为空
要给oracle某个字段插入空值非常简单 insert into table(column) values('') 但是查询的时候通过语句 select * from table where colu ...
- 寻找cost函数最小值:梯度下降与最小二乘法
Editted by MarkDown 寻找cost函数最小值:梯度下降与最小二乘法 参考:最小二乘法小结--刘建平 背景: 目标函数 = Σ(观测值-理论值)2 观测值就是我们的多组样本,理论值就是 ...
- iPhone may be running a version of iOS that is not supported by this version of Xcode
Xcode6.0.1对ios8.1真机不识别,升级Xcode6.0.1为Xcode6.1,就行了.也可以,降低手机版本为以前的版本,想要降低手机版本请看我的另一片博客<iphone手机版本降级& ...
- web:频繁刷新浏览器的页面【小工具】
[目的] 频繁刷新某一浏览器页面,小测试一下加载性能,或者打开的文件是否及时关闭,会不会导致服务器奔溃 [小工具] 新建txt,输入以下内容,并保存为html的格式,然后在浏览器中打开,则会定时刷新指 ...
- hive 函数
collect_set(x) 列转行函数---没有重复, 组装多列的数据的结构体collect_list(x) 列转行函数---可以有重复,组装多列的数据的结构体concat_ws 拼接函数, 用 ...
- [ 记录 ] Vue 对象数组中一项数据改变,页面不更新
问题描述:将data中数据列表渲染到页面,循环生成 el-switch,点击页面中 el-switch 后数组中某项值改变,但是页面不更新 数据格式如下 export default{ data(){ ...
- react-native-vector-icons 图标库使用
安装链接 yarn add react-native-vector-icons react-native link react-native-vector-icons 在项目工程中打开 .xcodep ...
- C++中map用法详解《转》
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! . map最基本的构造函数: map<string ...
- sql中的函数
函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如 COUNT.SUM.MIN 和 MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 将值从一种数据类型转换为另一 ...
- vue 源码阅读记录
0.webpack默认引入的是vue.runtime.common.js,并不是vue.js,功能有略微差别,不影响使用 1.阅读由ts编译后的js: 入口>构造函数 >定义各类方法 &g ...