chenhongl

导航

 

一、什么是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 = '123456'
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 = '123456'
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)))

 

posted on 2018-04-06 23:50  chenhongl  阅读(253)  评论(0编辑  收藏  举报