zoukankan      html  css  js  c++  java
  • Python 第一课笔记

    本节内容

    1.     Python介绍
    2.     Python类型
    3.     安装
    4.     Hello World程序
    5.     Pycham安装
    6.     变量
    7.     字符编码
    8.     注释
    9.     用户输入
    10.     格式化输出
    11.     模块初识
    12.     表达式if ...else语句
    13.     表达式for 循环
    14.     break and continue
    15.     表达式while 循环

    1.python介绍

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

    目前Python主要应用领域:

    • 云计算: 云计算最火的语言, 典型应用OpenStack
    • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
    • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
    • 系统运维: 运维人员必备语言
    • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
    • 图形GUI: PyQT, WxPython,TkInter

    2.Python 是一门什么样的语言?

    编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。

    编译和解释的区别是什么?
    编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
    解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)

    编译型vs解释型
    编译型
    优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
    缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

    解释型
    优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
    缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

    python是解释型

    3.python 安装

    Windows

    1、下载安装包
        https://www.python.org/downloads/
    2、安装
        默认安装路径:C:python27
    3、配置环境变量
        【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
        如:原来的值;C:python27,切记前面有分号

    Linux ,Mac

    无需安装,原装Python环境
      
    ps:如果自带2.6,请更新至2.7

    4、Hello World程序的两种方法

    在windows下执行

    1、编辑器里输入,不用编译

    print("Hello World!") 直接就可以运行

    2、可以存成一个程序再运行

    存成一个文本,新建一个.py文件。到cmd中执行

     运行脚本  python  Hello.py

     
    在linux下执行

    在linux 下创建一个文件叫hello.py 并输入

    print("Hello World!")

     执行前需给予 hello.py 执行权限,chmod 755 hello.py

    1 #!/usr/bin/env python
    2   
    3 print "hello,world"
    #!/usr/bin/env python   #可写可不写
    要是把代码变成一个可执行程序,必须在第一行声明解释器是什么
    这个声明有两种写法
    1 #!/usr/bin/env python   #第一种写法
    2 
    3 #!/usr/bin/python       #第二种写法
    
    
    env是找环境变量 ,到整个系统里找一个叫python的环境变量
    第二种是写死了就找/usr/bin/python目录下的文,如果装了3.5,仍然用的是系统原装2.7版本的python不好,不要用这个
    
    

    5、Pycham安装

    pycharm创建项目
     
     

     进入项目,修改模板【view】——》【Toolbar】

     

     写好程序运行程序,右键【run】

    右运行后自动保存

    6、变量

    什么是变量,用来存东西的,后面要调用的,变量存在内存里,

    1 name = "rainbow"

    变量名,给变量赋值

    1 name = "rainbow"
    2 
    3 print("my name is ",name)

     以下代码:运行结果【my name is  rainbow rainbow】

    1 name = "rainbow"
    2 
    3 name2=name
    4 print("my name is ",name,name2)

    以下代码运行结果

    my name is rainbow rainbow
    Paoche ge rainbow

    1 name = "rainbow"
    2 name2=name
    3 print("my name is ",name,name2)
    4 name="Paoche ge"
    5 print(name,name2)

    实际name2只是向name问路,自己指向内存地址,而不是指向name

    变量定义的规则:

      • 变量名只能是 字母、数字或下划线的任意组合
      • 变量名的第一个字符不能是数字
      • 以下关键字不能声明为变量名

    变量名要有含义

    复杂的变量名用下划线区分,或者驼峰法表示

    1 gf_of_oldboy="Amy"
    2 GfOfOldboy="lala"

     如何定义常量呢,不支持常量,但是想表示的话

     变量名大写,表示常量

    1 PIE=3.14               #不应该改,但是可以改而已,尽量不改

     7、字符编码

    ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

    用0和1表示数字,通过1010组合表示

    1 128 64  32 16  8  4  2  1
    2  1   1  1  1   1  1  1  1

     二进制是计算机中能表示的最小单位,

    一个二进制位bit

    8 4 2 1 的规律,之前所有数字之和加1,也是2的n次方

    8bit=1byte字节

    1024byte=1kbyte

    1024kbyte=1mbyte

    1024mbyte=1gb

    1024gb=1T

    任意数字要用一个bit表示,8个字节表示,

    字符编码把二进制和字母转换

    ASCII码,最多用8位表示一个字节,8位表示255个符号

    关于中文

    为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

    从128到255留给中文等做扩展

    GB2312——1980年 (7445个字符)

    GBK——1995年 (2W+个字符)

    GB18030——2000年 (27484个字符)

    显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

    Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,

    规定所有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
    注:此处说的的是最少2个字节,可能更多
    UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

    UTF-8可变长度的英文ASCII码格式

    Unicode占2个字节16位、ASCII占1个字节8位、UTF-8中文占3个字节

    8、注释

     1 #单行注释
     2 '''
     3 多行注释
     4     1行
     5     2行
     6     3行
     7     4行
     8     5行
     9     6行
    10     7行
    11     8行
    12 '''

    #号单行指数

    ‘’‘多行注释‘’‘  三个单引号或者三个双引号

    1 msg='''
    2 1、aaaaaaaaaaaa
    3 2、bbbbbbbbbbbb
    4 3、cccccccccccc
    5 4、555555555555
    6 
    7 '''
    8 print(msg)

    【运行结果】

    1、aaaaaaaaaaaa
    2、bbbbbbbbbbbb
    3、cccccccccccc
    4、555555555555

    9、用户输入   

    input用户交互

    1 username=input("输入用户名:")
    2 pwd=input("输入密码:")
    3 print(username,pwd)
    输入用户名:阿斯蒂芬
    输入密码:asdf
    阿斯蒂芬 asdf

    10.格式化输出

     1 name=input("name")
     2 age=input("age")
     3 job=input("job")
     4 Salary=input("Salary")
     5 
     6 
     7 info='''
     8 ---------Info of '''+ name +'''-------------
     9 Name:'''+ name +'''
    10 Age:'''+ age +'''
    11 job:'''+ job +'''
    12 Salary:'''+ Salary +'''
    13 -------------------------------
    14 '''
    15 print(info)

    【运行结果】

     1 name kaka
     2 age 18
     3 job IT
     4 Salary 20000
     5 
     6 ---------Info of  kaka-------------
     7 Name: kaka
     8 Age: 18
     9 job: IT
    10 Salary: 20000
    11 -------------------------------

     另外一种写法

     1 name=input("name")
     2 age=input("age")
     3 job=input("job")
     4 Salary=input("Salary")
     5 
     6 
     7 info='''
     8 ---------Info of %s-------------
     9 Name:%s
    10 Age:%s
    11 job:%s
    12 Salary:%s
    13 -------------------------------
    14 '''%(name,name,age,job,Salary)
    15 print(info)

     【运行结果】

    namenono
    age19
    jobart
    Salary15000
    
    ---------Info of nono-------------
    Name:nono
    Age:19
    job:art
    Salary:15000
    -------------------------------

     %s是占位符,代表string

    %d是数字类型,帮助验证输入的数据类型是否正确

    %f浮点,可以理解为小数

     1 name=input("name")
     2 age=input("age")
     3 job=input("job")
     4 Salary=input("Salary")
     5 
     6 
     7 info='''
     8 ---------Info of %s-------------
     9 Name:%s
    10 Age:%d
    11 job:%s
    12 Salary:%s
    13 -------------------------------
    14 '''%(name,name,age,job,Salary)
    15 print(info)

     【运行结果】报错

    namebaby
    age34
    jobshowgirl
    Salary30000
    Traceback (most recent call last):
      File "D:/Python/s014/Day1.py", line 16, in <module>
        '''%(name,name,age,job,Salary)
    TypeError: %d format: a number is required, not str

     调试状态

    1 name=input("name:")
    2 age=input("age:")
    3 #打印一个变量的数据类型
    4 print(type(age))
    5 job=input("job:")
    6 Salary=input("Salary:")

     运行结果,默认输入的都是字符串,需要强行转换一下

    name:aaaa
    age:33
    <class 'str'>
    job

     强制转换,并打印

    1 name=input("name:")
    2 age=int(input("age:"))
    3 #打印一个变量的数据类型
    4 print(type(age),type(str(age)))
    5 
    6 job=input("job:")
    7 Salary=input("Salary:")

      [运行结果]

    name:kiwi
    age:18
    <class 'int'> <class 'str'>
    job:

     第二种格式输出,格式化拼接

     1 name=input("name:")
     2 age=int(input("age:"))
     3 job=input("job:")
     4 Salary=input("Salary:")
     5 
     6 
     7 info2='''
     8 ---------Info of {_name}-------------
     9 Name: {_name}
    10 Age: {_age}
    11 job:{_job}
    12 Salary:{_Salary}
    13 -------------------------------
    14 '''.format(_name=name,
    15            _age=age,
    16            _job=job,
    17            _Salary=Salary
    18 )
    19 print(info2)

    【运行结果】

     1 name:nana
     2 age:36
     3 job:IT
     4 Salary:50000
     5 
     6 ---------Info of nana-------------
     7 Name: nana
     8 Age: 36
     9 job:IT
    10 Salary:50000
    11 -------------------------------

     第三种方式的拼接

     1 name=input("name:")
     2 age=int(input("age:"))
     3 job=input("job:")
     4 Salary=input("Salary:")
     5 
     6 
     7 info3='''
     8 ---------Info of {0}-------------
     9 Name: {0}
    10 Age: {1}
    11 job:{2}
    12 Salary:{3}
    13 -------------------------------
    14 '''.format(name,age,job,Salary)
    15 
    16 print(info3)

     【运行结果】

     1 name:pink
     2 age:67
     3 job:study
     4 Salary:12345
     5 
     6 ---------Info of pink-------------
     7 Name: pink
     8 Age: 67
     9 job:study
    10 Salary:12345
    11 -------------------------------

     11、初识模块

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。

    引用的时候必须把模块导入到程序中

    1 import  getpass
    2
    3 4 username=input("输入用户名:") 5 pwd=getpass.getpass("输入密码:") 6 print(username,pwd)

     运行结果不正确,结论是Pycharm中getpass不好用,只能在cmd中执行

    表达式if ...else语句

    没有大括号,必须有缩进

     1 _name="alex"
     2 _password="abc123"
     3 
     4 
     5 username=input("输入用户名:")
     6 pwd=input("输入用户名:")
     7 
     8 if _name==username and _password==pwd:
     9     print("Welcome user {name} ,login......".format(name=username))
    10 else:
    11     print("invalid username or paddword!")

    【输出结果1】

    1 输入用户名:aa
    2 输入用户名:asdf
    3 invalid username or paddword!

    【输出结果2】

    1 输入用户名:alex
    2 输入用户名:abc123
    3 Welcome user alex ,login......

     猜年龄小游戏

     1 age_of_old_boy=56
     2 
     3 guessage=int(input("guess age:"))
     4 
     5 if guessage==age_of_old_boy:
     6     print("Yes,you got it!")
     7 elif guessage > age_of_old_boy:
     8     print("Too old")
     9 else:
    10     print("Too young")

     【运行结果】

    1 guess age:56
    2 Yes,you got it!
    1 guess age:1
    2 Too young
    1 guess age:59
    2 Too old

    while循环

    1 count=0 #添加一个计数器
    2 
    3 while True: #永远成立,永远执行
    4 print(count) 5 count+=1 #循环一次自增加1
     1 ……
     2 859725
     3 859726
     4 859727
     5 859728
     6 859729
     7 859730
     8 859731
     9 859732
    10 859733
    11 859734
    12 859735
    13 859736
    14 859737
    15 859738
    16 859739
    17 859740
    18 859741
    19 859742
    20 859743
    21 859744
    22 859745
    23 859746
    24 859747
    25 859748
    26 859749
    27 859750
    28 859751
    29 859752
    30 859753
    31 859754
    32 859755
    33 859756
    34 859757
    35 859758
    36 859759
    37 859760
    38 859761
    39 859762
    40 859763
    41 859764
    42 859765
    43 859766
    44 859767
    45 859768
    46 859769
    47 859770
    48 859771
    49 859772
    50 859773
    51 859774
    52 859775
    53 859776
    54 859777
    55 859778
    56 859779
    57 859780
    58 859781
    59 859782
    60 859783
    61 859784
    62 859785
    63 859786
    64 859787
    65 859788
    66 859789
    67 859790
    68 859791
    69 859792
    70 859793
    71 859794
    72 859795
    73 859796
    74 859797
    75 859798
    76 859799
    77 859800
    78 859801
    79 859802
    80 859803
    81 859804
    82 ……

     循环猜年龄

     1 age_of_old_boy=56
     2 
     3 count = 0
     4 while count < 3:
     5     guessage=int(input("guess age:"))
     6 
     7     if guessage==age_of_old_boy:
     8         print("Yes,you got it!")
     9         break
    10     elif guessage > age_of_old_boy:
    11         print("Too old")
    12     else:
    13         print("Too young")
    14     count += 1
    15 
    16 else:
    17     print("too meny times you have try,fuck off...")
    1 guess age:57
    2 Too old
    3 guess age:23
    4 Too young
    5 guess age:99
    6 Too old
    7 too meny times you have try,fuck off...

    表达式for循环

    1 for i in range(10):
    2     print("loop:",i)

     【运行结果】

     1 loop: 0
     2 loop: 1
     3 loop: 2
     4 loop: 3
     5 loop: 4
     6 loop: 5
     7 loop: 6
     8 loop: 7
     9 loop: 8
    10 loop: 9

     以上程序用for的实现

     1 age_of_old_boy=56
     2 
     3 for i in range(3):
     4     guessage=int(input("guess age:"))
     5 
     6     if guessage==age_of_old_boy:
     7         print("Yes,you got it!")
     8         break
     9     elif guessage > age_of_old_boy:
    10         print("Too old")
    11     else:
    12         print("Too young")
    13 else:#正常走完流程的时候执行else,如果上面语句break不执行此句
    14     print("too meny times you have try,fuck off...")

     【运行结果一样】

    1 guess age:67
    2 Too old
    3 guess age:33
    4 Too young
    5 guess age:56
    6 Yes,you got it!

     【程序】隔一个打一次

    #跳着打印,每隔一个打一次
    for i in range(0,10,2):#从0开始,到10结束,步长是2
        print("loop:",i)

     【运行结果】

    1 loop: 0
    2 loop: 2
    3 loop: 4
    4 loop: 6
    5 loop: 8

     【打印奇数】

    1 for i in range(1,10,2):#从0开始,到10结束,步长是2
    2     print("loop:",i)
    1 loop: 1
    2 loop: 3
    3 loop: 5
    4 loop: 7
    5 loop: 9

    continue、break和exit()

     1 age_of_old_boy=56
     2 
     3 count = 0
     4 while count < 3:
     5     guessage=int(input("guess age:"))
     6 
     7     if guessage==age_of_old_boy:
     8         print("Yes,you got it!")
     9         break
    10     elif guessage > age_of_old_boy:
    11         print("Too old")
    12     else:
    13         print("Too young")
    14     count += 1
    15     if count==3:#询问是否退出,不想退出继续循环
    16         continue_or_not=input("continue play?")
    17         if continue_or_not != 'n':
    18             count=0#清空计数器,重新来过
    19 else:
    20     print("too meny times you have try,fuck off...")

    1、continue是结束本次循环跳到下一个循环

    1 #continue的用法
    2 for i in range(0,10):#从0开始,到10结束
    3     if i < 5 :
    4         print("loop:",i)
    5     else:
    6         continue
    7     print("hehe....")#
     1 loop: 0
     2 hehe....
     3 loop: 1
     4 hehe....
     5 loop: 2
     6 hehe....
     7 loop: 3
     8 hehe....
     9 loop: 4
    10 hehe....

     程序打上断点都

    *******continue是跳出本次循环,继续到下次循环,**********

    *******break是结束整个循环***************************

     

    2、break是结束当前循环层

    for循环嵌套

    1 for i in range(10):
    2     print("*******外循环次数**********",i)
    3     for j in range(10):
    4         print("....内循环次数....",j)
    5         if j > 5:
    6             break #退出本次循环,而不是外层循环

    运行结果

     1 *******外循环次数********** 0
     2 ....内循环次数.... 0
     3 ....内循环次数.... 1
     4 ....内循环次数.... 2
     5 ....内循环次数.... 3
     6 ....内循环次数.... 4
     7 ....内循环次数.... 5
     8 ....内循环次数.... 6
     9 *******外循环次数********** 1
    10 ....内循环次数.... 0
    11 ....内循环次数.... 1
    12 ....内循环次数.... 2
    13 ....内循环次数.... 3
    14 ....内循环次数.... 4
    15 ....内循环次数.... 5
    16 ....内循环次数.... 6
    17 *******外循环次数********** 2
    18 ....内循环次数.... 0
    19 ....内循环次数.... 1
    20 ....内循环次数.... 2
    21 ....内循环次数.... 3
    22 ....内循环次数.... 4
    23 ....内循环次数.... 5
    24 ....内循环次数.... 6
    25 *******外循环次数********** 3
    26 ....内循环次数.... 0
    27 ....内循环次数.... 1
    28 ....内循环次数.... 2
    29 ....内循环次数.... 3
    30 ....内循环次数.... 4
    31 ....内循环次数.... 5
    32 ....内循环次数.... 6
    33 *******外循环次数********** 4
    34 ....内循环次数.... 0
    35 ....内循环次数.... 1
    36 ....内循环次数.... 2
    37 ....内循环次数.... 3
    38 ....内循环次数.... 4
    39 ....内循环次数.... 5
    40 ....内循环次数.... 6
    41 *******外循环次数********** 5
    42 ....内循环次数.... 0
    43 ....内循环次数.... 1
    44 ....内循环次数.... 2
    45 ....内循环次数.... 3
    46 ....内循环次数.... 4
    47 ....内循环次数.... 5
    48 ....内循环次数.... 6
    49 *******外循环次数********** 6
    50 ....内循环次数.... 0
    51 ....内循环次数.... 1
    52 ....内循环次数.... 2
    53 ....内循环次数.... 3
    54 ....内循环次数.... 4
    55 ....内循环次数.... 5
    56 ....内循环次数.... 6
    57 *******外循环次数********** 7
    58 ....内循环次数.... 0
    59 ....内循环次数.... 1
    60 ....内循环次数.... 2
    61 ....内循环次数.... 3
    62 ....内循环次数.... 4
    63 ....内循环次数.... 5
    64 ....内循环次数.... 6
    65 *******外循环次数********** 8
    66 ....内循环次数.... 0
    67 ....内循环次数.... 1
    68 ....内循环次数.... 2
    69 ....内循环次数.... 3
    70 ....内循环次数.... 4
    71 ....内循环次数.... 5
    72 ....内循环次数.... 6
    73 *******外循环次数********** 9
    74 ....内循环次数.... 0
    75 ....内循环次数.... 1
    76 ....内循环次数.... 2
    77 ....内循环次数.... 3
    78 ....内循环次数.... 4
    79 ....内循环次数.... 5
    80 ....内循环次数.... 6
  • 相关阅读:
    codeforces 501 C,D,E
    bzoj 3172 单词 ac自动机|后缀数组
    HDU2459 后缀数组+RMQ
    POJ 3294 二分找超过一半字符串中存在的子串
    头文件
    python爬取文本
    python爬取图片
    NEW
    dsu on tree 练习题
    lzz分块+莫队
  • 原文地址:https://www.cnblogs.com/meihan/p/6259196.html
Copyright © 2011-2022 走看看