python入门学习-day1

阅读目录:

  • 一、 编程与编程语言
  • 二、 编程语言的分类
  • 三、 主流编程语言介绍
  • 四、 python介绍
  • 五、 安装python解释器
  • 六、 第一个python程序
  • 七、 变量
  • 八、 用户和程序的交互
  • 九、 基本的数据类型
  • 十、 格式化输出
  • 十一、基本的运算符
  • 十二、流程控制之if...else
  • 十三、流程控制之while循环
  • 十四、流程控制之for循环
  • 十五、开发工具IDE
  • 十六、拓展阅读
  • 十七、作业

一、 编程与编程语言

  python是一门编程语言,作为学习python的开始,需要事先搞明白三个问题:

  1.编程的目的是什么?

  计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果。

  2.什么是编程语言?

  上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工作

  3.什么是编程?

  编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。

  强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义

 二、 编程的语言分类

   编程语言的发展:

   机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件

   汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件;

   高级语言:站在人的角度,用人类的字符去编写程序,屏蔽硬件操作

   编程语言类型:

   编译型(需要编译器):如C,执行速度快,调试麻烦

   解释型(需要解释器):如python,执行速度慢,调试方便

 三、 主流编程语言介绍:

   编程语言使用量统计数据:https://www.tiobe.com/tiobe-index/

   

 

 

 四、 python介绍:

   介绍

   python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

   最新的TIOBE排行榜,Python赶超PHP占据第4, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

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

 五、 安装python解释器:

   打开官网 https://www.python.org/downloads/windows/ 下载中心,下载安装完成就行。

   

 

 六、 python的第一个程序:

print("hello word!")  #输出hello word!

 七、 变量:

  什么是变量?为什么定义变量?:

  变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态,定义变量就是为了记录程序执行的一系列状态的变化。

  变量定义规范和方式:

  

#1. 变量名只能是 字母、数字或下划线的任意组合
#2. 变量名的第一个字符不能是数字
#3. 关键字不能声明为变量名['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']
#驼峰体
AgeOfOldboy = 56 
NumberOfStudents = 80
#下划线(推荐使用)
age_of_oldboy = 56 
number_of_students = 80

   小整数池:整数缓存和回收机制

#1、在交互式模式下
Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收

每创建一个-5到256之间的整数,都是直接从这个池里直接拿走一个值,例如
>>> y=4
>>> id(y)
>>> 
>>> x=3
>>> x+=1
>>> id(x)

#在pycharm中
但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究

小整数池

  常量:

  常量即指程序执行中不变的量

 

 八、 用户和程序交互:

   文件头定义:   

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

  input输入录入程序:

#在python3中
input:用户输入任何值,都存成字符串类型

#在python2中
input:用户输入什么类型,就存成什么类型
raw_input:等于python3的input

 九、 基本的数据类型:

  变量是反映和保持状态以及状态变化的,但不同的状态和变化需要不同类型的数据去标识,so,需要不同的数据类型去定义。

  定义数字数据: 

#int整型
定义:age=10 #age=int(10)

#float浮点型
定义:salary=3.1 #salary=float(3.1)

#long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。

#complex复数型
>>> x=1-2j
>>> x.imag
-2.0
>>> x.real
1.0

type(a)  #type()是查看数据类型的方法

  定义字符串类型数据:

#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:name='egon' #name=str('egon')

#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别

#多引号什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)
#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。
>>> name='egon'
>>> age='18'
>>> name+age #相加其实就是简单拼接
'egon18'
>>> name*5 
'egonegonegonegonegon'


#注意1:字符串相加的效率不高
字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次,

#注意2:只能字符串加字符串,不能字符串加其他类型

  列表:

#在[]内用逗号分隔,可以存放n个任意类型的值
name_list = ["gaor","93brether","IT"]
print(name_list)
print(name_list[0])
print(name_list[1])
print(name_list[2])

#当然,列表中也可以包含各种类型的数据

  字典:

#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值

  布尔值:

#布尔值,一个True一个False
>>> a=3
>>> b=5
>>> 
>>> a > b #不成立就是False,即假
False
>>> 
>>> a < b #成立就是True, 即真
True
#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真 

 重点:

#1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典

#2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)

 

 十、 格式化输出:

  使用命令,按照标准的格式和方式取得或者输出用户所需要的值

  input,print和占位符练习:  

#%s字符串占位符:可以接收字符串,也可接收数字
print('My name is %s,my age is %s' %('egon',18))
#%d数字占位符:只能接收数字
print('My name is %s,my age is %d' %('egon',18))
print('My name is %s,my age is %d' %('egon','18')) #报错

#接收用户输入,打印成指定格式
name=input('your name: ')
age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d

print('My name is %s,my age is %s' %(name,age))

#注意:
#print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错

 十一、基本运算符:

  计算中的运算有很多种,下面一次介绍:

  算数运算:

  

  比较运算:

  

  赋值运算:

  

  逻辑运算:

  

>>> True or Flase and False
True
>>> (True or Flase) and False
False

  身份运算:

#is比较的是id
#而==比较的是值   

 十二、流程控制之if...else:

  既然我们编程的目的是为了控制计算机能够像人脑一样工作,那么人脑能做什么,就需要程序中有相应的机制去模拟。人脑无非是数学运算和逻辑运算,对于数学运算在上一节我们已经说过了。对于逻辑运算,即人根据外部条件的变化而做出不同的反映,if...else让计算机有了自己的逻辑判断能力。

  基本多重判断格式日下:

  if 条件1:

    缩进的代码块

  elif 条件2:

    缩进的代码块

  elif 条件3:

    缩进的代码块

  ......

  else:  

    缩进的代码块

  练习代码:

sex = raw_input("input your sex:")

if sex == "girl":
    print("I would like to have a little monkey with zc!")
elif sex == "man":
    print("Going to homesexual")
else:
    print("pervert!")

  练习升级:

# 如果:今天是Monday,那么:上班
# 如果:今天是Tuesday,那么:上班
# 如果:今天是Wednesday,那么:上班
# 如果:今天是Thursday,那么:上班
# 如果:今天是Friday,那么:上班
# 如果:今天是Saturday,那么:出去浪
# 如果:今天是Sunday,那么:出去浪


#方式一:
today=input('>>: ')
if today == 'Monday':
    print('上班')
elif today == 'Tuesday':
    print('上班')
elif today == 'Wednesday':
    print('上班')
elif today == 'Thursday':
    print('上班')
elif today == 'Friday':
    print('上班')
elif today == 'Saturday':
    print('出去浪')
elif today == 'Sunday':
    print('出去浪')
else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    ''')

#方式二:
today=input('>>: ')
if today == 'Saturday' or today == 'Sunday':
    print('出去浪')

elif today == 'Monday' or today == 'Tuesday' or today == 'Wednesday' \
    or today == 'Thursday' or today == 'Friday':
    print('上班')

else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    ''')


#方式三:
today=input('>>: ')
if today in ['Saturday','Sunday']:
    print('出去浪')
elif today in ['Monday','Tuesday','Wednesday','Thursday','Friday']:
    print('上班')
else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    ''')

 十三、流程控制之while循环:

  循环的作用是让机器重复处理和反应变量状态的操作,while循环让计算机根据一定的条件进行自我的运行,不需要认为的干预。

  条件循环:while的语法日下:

while 条件:    
    # 循环体
    # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
    # 如果条件为假,那么循环体不执行,循环终止

  死循环:

import time
num=0
while True:
    print('count',num)
    time.sleep(1)
    num+=1 

  循环嵌套与tag:

  tag=True 

  while tag:

    ......

    while tag:

      ........

      while tag:

        tag=False

  练习:

#三次之内取出2个数的中间值,失败就退出循环:
Luckey_number = 6
guess_numer = -1
guess_count = 0
#guess_numer = input("please input a number:")
#while guess_numer != Luckey_number and guess_count < 3:
while guess_count < 3:
    guess_numer = input("please input a number:")
    if guess_numer > Luckey_number:
        print("too hight!")
    elif guess_numer < Luckey_number:
        print("too low!")
    else:
        print("BingGO!")
        break
    guess_count += 1
else:
    print("too many retrys!")

  理解break和continue:

#break用于退出本层循环
while True:
    print "123"
    break
    print "456"

#continue用于退出本次循环,继续下一次循环
while True:
    print "123"
    continue
    print "456"

 十四、流程控制之for循环:

  迭代式循环:for,语法如下:

 for i in range(10):

    缩进的代码块

  循环练习:

Luckey_number = 7
guess_count = 0

for i in range(3):
    guess_numer = int(input("please input a number:"))
    if guess_numer > Luckey_number:
        print("too hight!")
    elif guess_numer < Luckey_number:
        print("too low!")
    else:
        print("BingGO!")
        break
    guess_count += 1
else:
    print("too many retrys!")

  循环嵌套打印出九九乘法表:

for i in range(1,10):
    for j in range(1,i+1):
        print('%s*%s=%s' %(i,j,i*j),end=' ')
    print()

 十五、开发工具IDE:

   1 为何要用IDE:

   到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件、写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单的写代码?此时开发工具IDE上场啦,一个好的IDE能帮你大大提升开发效率。很多语言都有比较流行的开发工具,比如JAVA 的Eclipse, C#,C++的VisualStudio, Python的是啥呢? Pycharm,最好的Python 开发IDE

  2 安装

  下载地址:https://www.jetbrains.com/pycharm/download 选择Professional 专业版

Comunnity社区版是免费的,但支持的功能不多,比如以后我们会学的Django就不支持,所以还是用专业版,但专业版是收费的,一年一千多,不便宜。唉,万能的淘宝。。。不宜再多说啦。

   注册完成后启动,会让你先创建一个项目,其实就是一个文件夹,我们以后的代码都存在这里面

  

  创建目录

  你以后写的项目可能有成百上千个代码文件 ,全放在一起可不好,所以一般把同样功能的代码放在一个目录,我们现在以天为单位,为每天的学习创建一个目录day1,day2,day3...这样

  

  执行代码:

   

 十六、拓展阅读:

  核心风格:http://www.cnblogs.com/linhaifeng/articles/5936688.html

 十七、作业:

1 练习题

  1. 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型
  2. 执行 Python 脚本的两种方式是什么
  3. Pyhton 单行注释和多行注释分别用什么?
  4. 布尔值分别有什么?
  5. 声明变量注意事项有那些?
  6. 如何查看变量在内存中的地址?
  7. 写代码
    1. 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!
    2. 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
    3. 实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
  8. 写代码
    a. 使用while循环实现输出2-3+4-5+6...+100 的和
    b. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12 使用 while 循环实现输出 1-100 内的所有奇数

    e. 使用 while 循环实现输出 1-100 内的所有偶数

  9. 现有如下两个变量,请简述 n1 和 n2 是什么关系?

      n1 = 123456
      n2 = n1

2 作业:编写登陆接口

基础需求:

  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序

升级需求:

  • 可以支持多个用户登录 (提示,通过列表存多个账户信息)
  • 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
#!/usr/bin/env python
# -*- coding: utf-8 -*-

information = {
    'gr':{'password':'1233','count':0},
    'zc':{'password':'1234','count':0},
    'cp':{'password':'1235','count':0},
}
#print(information)
file = open("use.txt","r")
total = []
for line in file:
    list = str(line).split(',')
    total.append(list[0])
count = 0
print(total)
while count < 3:
    usr = raw_input("input your name:")
    if usr not in total:
        if usr in information:
            if information[usr]['count'] < 3:
                print("usrname ture!")
                passwd = raw_input("input your passwd:")
                if passwd == information[usr]['password']:
                    print("loading succeed!")
                    break
                else:
                    print("passwd error!")
                    information[usr]['count'] += 1
            else:
                print("该用户密码错误次数过多,已被锁定!")
                file = open("use.txt", "w")
                file.write("%s" %usr)
                break
        else:
            print("usrname is not exist!")
            count += 1
    else:
        print("该用户已经锁定!")
        break
else:
    print("too many retrys!")

 

本文编写主要参考我的老师的博客,链接为:http://www.cnblogs.com/linhaifeng/articles/7133167.html#_label9 
posted @ 2018-06-30 01:09  V小高  阅读(192)  评论(0)    收藏  举报