Day01-python简介与基础

 

1.Python前世今生

  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

最新的TIOBE排行榜,Python赶超PHP占据第五!

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维自动化测试大数据分析、爬虫、Web 等。

注视:上述重点字体表示该公司主要使用Python语言开发

2.为什么是Python而不是其他语言?

C 和 Python、Java、C#等

      C语言: 代码编译得到机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作

   其他高级语言: 代码编译得到字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

Python 和 C  Python这门语言是由C开发而来

   对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
   对于速度:Python的运行速度相较与C,绝逼是慢了

Python 和 Java、C#等

   对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
   对于速度:Python在速度上可能稍显逊色

所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。

3.Python的种类

    • Cpython(解释)代码----字节码-----机器码(解释一行,执行一行)
          Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
    • Jyhton
          Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
    • IronPython
          Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
    • PyPy(特殊)(编译)代码---字节码-----机器码(全部转换完之后在执行)
          Python实现的Python,将Python的字节码字节码再编译成机器码。
    • RubyPython、Brython ...     

4.python基础

  —python规则

    1.安装:python解释器(作用:开辟内存,执行结果,检验代码格式是否正确,最终释放内存,给出结果)

        windows--安装目录:C:\python35

    2.写代码(程序)

                

    将内容保存到目录下面,在终端里面执行:c:\python35\python.exe   G:\1.py 

      python内部内部执行顺序:1.打开文件,读取文件内容  2.词法,语法分析  3. 符合规则之后   代码—字节码—机器码

  —解释器

    window环境:解释器—C:\python\python.exe   G:\1.py (给个文件执行)

             C:\python\python.exe  (进入解释器环境,单行执行)

    liunx环境:文件头部信息:#!/usr/bin/env python

                  #-*- coding:utf8 -*-(指定编译器编码)

                 chmod 755 1.py (给文件权限)      ./1.py  (直接执行)

  —潜规则

    文件格式后缀名以.py结尾

  —编码

    最早出现的编码(ascii):只支持英文,8位一个字节(例如a:00000001)

    万国码:(编码至少16位)随着电脑的普及,为了支持其他国家使用,出现支持各种语言的编码。中文占三个字节(24位)。(例如a:00000000 00000001)(对于a类型的来说,位数较多,比较占用内存,所以出现出现万国码的压缩版  utf-8)

    utf-8:中文还是占用三个字符

    gbk,gb2312:正对中文的编码,gb2312比给gbk增加了繁体字,中文只需2个字节

    默认python2编码为ascii码,python3为utf-8

5.IDE(pycharm(软件))

    使用方法:

    a.创建自己的目录(project)

    

      b.每天新建一个新目录

    

    

    c.每个目录里面创建py文件

    

    d.在py文件中右键选择run‘s1’左键执行

    e.修改文件编码 

    f.修改文件模板

    g.改变页面大小

    

 6.注释

    单行注释:代码前面加#  多行注释:三个引号 ("""代码""")  鼠标选中多行ctrl+?键进行多行注释 选择多行注释的代码ctrl+?取消多行注释

7..pyc文件  字节码文件

8.变量(声明变量)

    变量名要求:1.字母          2.数字(不能以数字开头)             3.下划线                     4.不能使用关键字        5.变量名要有意义(中间以下划线分隔,可识别读高)

         示例:

name = 'chengfei'
n = name
print(name)
name = 'wuyanmin'
print(n)
print(name)

 

9.输入 输出

         输入:

    input:v = input ('请输入用户名:')     v = 表示接收用户输入的值(等同于变量)

    import:示例: import getpass   v = getpass.getpass('请输入密码:')

    输出:

    print('内容'):打印括号里面的内容         print(变量):打印变量的内容

   示例: 

name = input('请输入姓名:')
print(name)
import getpass pwd = getpass.getpass ('>>>') print(pwd)
import getpass name = input('请输入姓名:') pwd = getpass.getpass ('请输入密码:') age = input('请输入您的年龄:') print(name) print(pwd) print(age)

 

10.条件语句

    if 条件:                                 if 条件:                                              if 条件:

     成功走这儿                               ...                                                      if 条件:

    else:             elif 条件:                                                  ...

     失败走这儿           ...                                                       elif 条件:

                    elif 条件:                                                   ...

                     ...                                                       else:

                    else:                                                          ...

                     ... 

   示例: 

username = input('请输入用户名:')
if username == 'chengfei':
    print('超级管理员')
elif username == 'wuyanmin':
    print('超级管理员的老婆大人')
elif username == '乖乖':
    print('吾皇')
else:
    print('拜拜。。。')
print('end')
user_type = input('请输入姓名:')
if user_type == '成飞':
    family_job = input('请输入家庭职责:')
    if family_job == '扫地':
        print('你是武艳敏的老公')
    elif family_job == '铲屎':
        print('你是乖乖的铲屎官')
    else:
        print('你不是这个家里的人')
else:
    print('你不是这个家里的人')
    print('滚蛋')

11.循环语句

    while 条件:

      continue  (跳出本次循环,执行下次循环)

      break   (跳出所有循环)

    示例:

i = 1
while i < 11 :
    print(i)
    i +=  1
=========================> while True: username = input('请输入用户名:') pwd = input('请输入密码:') if username == 'chengfei' and pwd == '123': print('登录成功') break else: print('登录失败,请重新登录')
i = 1
while True:
    if i == 7 :
        i += 1
        continue
    print(i)
    i += 1
    if i == 11 :
        break
i = 1
while i < 11 :
    if  i == 7:
        i += 1
        continue
    print(i)
    i += 1
    if i == 11:
        break

12.运算符

    a.算术运算符

    b.比较运算符

    c.赋值运算符

    d.逻辑运算符

    e.成员运算符

13.练习题

1、使用while循环输入 1 2 3 4 5 6 8 9 10

2、求1-100的所有数的和

value = 0 
i= 1
while i < 101:
 value += i
  i+=1
print(value)

3、输出 1-100 内的所有奇数

i = 1
while i < 101:
    if i % 2 == 1:    # i % 2 == 0  输出的是偶数
        print(i)
    i += 1

4、输出 1-100 内的所有偶数

5、求1-2+3-4+5 ... 99的所有数的和

i = 1
value = 0
while i < 100 :
    if i % 2 == 1:
        value += i
    if i % 2 == 0:
        value -= i
    i += 1
print(value)

6、用户登陆(三次机会重试)

i=1
while
i < 4: username = input( '请输入用户名:') pwd = input('请输入密码:') pwd = int (pwd) if username == 'chengfei' and pwd == 123: print('登录成功') break else: print('登录失败,请重新输入') i += 1

14.python类型

    —整数:创建:a = 123 或 a = int(123)  转换:age = ‘18’ ---- new_age = int(age)   print (type(变量)) 查看这个变量是什么类型

    —布尔值 :创建:a = True b = False 转换:数字转换时,只有0是False,其他都是True,字符串转换时,只有为空时是False,其他True(a = 1 -- b = bool(a) print (b))

    —字符串:-创建:a = 'tom' 或 a = str('tom') -转换:age = 18  new_age = str(age)

               -字符串的拼接:如下

str = '我叫成飞,今年18岁,性别:男。'
val = '扯淡'
new_str = str + val
print(new_str)

      -字符串的格式化(占位符):如下

str = '我叫成飞,今年18岁,%s,性别:男。'
new_str = str % ('chedan')
print(new_str)

str = '我叫成飞,今年18岁,%s,性别:男。' % ('chedan')
print(str)

       -判断子序列是否在其中:如下

content = '中国是个共产主义国家'
if '123'in content:
    print('包含敏感字符')
else:
    print(content)

      -去除空白(只能去除前后,不能去除中间)

val = ' 成飞 '
val_1 = val.strip()         #去除左右空白
new_val = val.rstrip()      #去除右边空白
new_new_val = val.lstrip()  #去除左边空白
print(val)
print(val_1)
print(new_val)
print(new_new_val)

      -分割

user_info = 'alex sb123 9'
v = user_info.split(' ')            #分割所有的
val = user_info.split(' ',1)        #分割最左边的
new_val = user_info.rsplit(' ',1)   #分割最右边的
print(v)
print(val)
print(new_val)

      -长度

val = '成飞是男的'
num = len (val)
print(num)

      -索引(0代理表第一个,以此类推)

val = '成飞是男的'
new_val = val [0]
print(new_val)
val = '成飞是男人'
i = 0
while i < len(val):
    print(val[i])
    i += 1                #长度索引加循环的示例

val = input( '>>>')
i = 0
while i < len(val):
    print(val[i])
    i += 1                #长度索引加输入加循环的示例

       -切片(第一个数字指从第几个字符开始,第二数字不填表示到最后一个字符,第三个数字表示步长为几)

str = '我叫成飞,今年18岁,性别:男。'
print(str[0])       #打印第一个字符
print(str[1:6])     #打印第(1<=值>6)的字符
print(str[0:-1])    #打印从第一个开始到不包含最后一个的字符的所有字符
print(str[0:])      #打印所有的字符
print(str[0::3])    #打印所有范围之内步长为3的字符
print(str[-5:-2])   #打印从倒数第五个开始不包括最后两个的字符

15.列表

  -创建列表:a = ['tom','jim',123,'alxe'] 或 a = list(['tom','jim',123,'alxe'])

  -in判断:

a = ['成飞','alxe',123,'guaiguai','武艳敏']
# a = list(['成飞','alxe',123,'guaiguai','武艳敏'])
if '成飞' in a:
    print(a)
    if 'a' in a[1]:
        print(a)

  -索引  val = a [0]   print (val)

  -长度  val = len(a)  print (val)

  -切片  val = a [0::2] print (val)

  -追加 a.append ('chengfei')  追加只能从最后追加

  -插入 a.insert (1,'xo')  在第二个字符串前面插入,这里的0指的是索引

  -删除 a.remove ('tom') 只删除列表中的第一个该字符串   del a [0] 删除列表下的第几个字符串 (可以索引删除,也可以切片删除)

  -修改 a[0] = 'chengfei' 重新给该字符赋值

  -for循环 

a = list(['成飞','alxe',123,'guaiguai','武艳敏'])
for item in a:
    print(item)
    break # continue

16.字典

  -创建 v = {'name':'tom','pwd':'123'}  或  v = dic ({'name':'tom','pwd':'123'})

  -索引 val = v['name']     print(val)

  -增加 (有该值时,修改,没有该值,增加)v['age'] = 18 print (v)

  -删除 del v['name']

  -for循环

  -长度  print (len(v))

  -示例

v = {'name':'chengfei','password':'123123'}
n = v ['name']        #  通过索引keys获取values(只能根据keys获取values)
print(n)

v ['age'] = 18        # 增加  无 增加  有时  修改
print(v)

del v['name']         # 删除
print(v)
for item in v :        # for 循环所有的keys值
    print(item)

for item in v.keys():  # for 循环所有的keys值
    print(item)

for item in v.values(): # for 循环所有的values值
     print(item)

for key,val in v.items():     # for 循环keys,values的值
    print(key,val)

16.字典列表相互嵌套

  -示例

user_list = {
    'k1': 'v1',
    'k2': {'kk1': 'vv1','kk2': 'vv2'},
    'k3': 456,
    'k4': ['tom','jim',123,{'k11':'v11'},['a','b','c']]
}
user_list['k4'][4].append('123')
user_list['k4'][3]['name'] = 'chengfei'
print(user_list)

  -应用

user_list = [
    {'name':'jim','pwd':'123','time':1},
    {'name':'tom','pwd':'123','time':1},
    {'name':'alxe','pwd':'123','time':1}
]
user = input('用户名:')
pwd = input('密码:')
for item in user_list:
    if user == item['name'] and pwd == item['pwd']:
        print('登陆成功')
        break


练习题:
    

a. 元素分类

         有如下值集合 v1 = [11,22,33,44,55,66,77,88,99,90],
         将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
         即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

v1 = [11,22,33,44,55,66,77,88,99,90]
v2 = {'k1':[],'k2':[]}
for item in v1:
    if item < 66:
        v2['k2'].append(item)
    elif item > 66:
        v2['k1'].append(item)
print(v2)

 

b. 功能要求:
         v = 2000
         要求用户输入总资产,例如:2000
         显示商品列表,让用户根据序号选择商品,加入购物车
         购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
         goods = [
                         {"name": "电脑", "price": 1999},
                         {"name": "鼠标", "price": 10},
                         {"name": "游艇", "price": 20},
                         {"name": "美女", "price": 998},
                       ]

v = 2000
goods = [
                {"name": "电脑", "price": 1999},
                {"name": "鼠标", "price": 10},
                {"name": "游艇", "price": 20},
                {"name": "美女", "price": 998}
            ]
for item in goods:
    print(item)
num = input('请输入您要购买的序号:')
new_num = int(num)
if goods[new_num]["price"] < 2000 :
    print(goods[new_num]['name']+'购买成功')
    val = int(goods[new_num]["price"])
    new_val = str(v - val)
    print('您的余额为:'+ new_val)
else:
    print('余额不足,请充值')

 


c. 用户交互,显示省市县三级联动的选择

          dic = {
                    "河北": {
                                   "石家庄": ["鹿泉", "藁城", "元氏"],
                                    "邯郸": ["永年", "涉县", "磁县"],
                                 }
                    "河南": {
                                  ...
                                }
                    "山西": {
                                  ...
                                }
                       }

dic = {
                "河北": {
                    "石家庄": ["鹿泉", "藁城", "元氏"],
                    "邯郸": ["永年", "涉县", "磁县"],
                },
                "河南": {
                    ...
                },
                "山西": {
                    ...
                }
            }
for item in dic.keys():
    print(item)
inp = input('请输入您要查询的省份:')
for city in dic[inp].keys():
    print(city)
cinp = input('请输入您要查询的城市:')
for county in dic[inp][cinp]:
    print(county)

 

posted on 2017-05-04 16:35  冷无颜  阅读(238)  评论(0编辑  收藏  举报