python开发基础篇

Posted 瘦头陀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python开发基础篇相关的知识,希望对你有一定的参考价值。

变量及其定义规范

1 #变量名(相当于门牌号,指向值所在的空间),等号,变量值
2 name=\'Egon\'
3 sex=\'male\'
4 age=18
5 level=10

变量的定义规范

#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

定义变量会有:id,type,value
#1 等号比较的是value,
#2 is比较的是id

#强调:
#1. id相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下
>>> x=\'Info Egon:18\'
>>> y=\'Info Egon:18\'
>>> id(x)
4376607152
>>> id(y)
4376607408
>>>
>>> x == y
True
>>> x is y
False

 常量

常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量
举例,假如老男孩老师的年龄会变,那这就是个变量,但在一些情况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
AGE_OF_OLDBOY = 56

#ps:在c语言中有专门的常量定义语法,const int count = 60;一旦定义为常量,更改即会报错

用户交互

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

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

注释

    随着学习的深入,用不了多久,你就可以写复杂的上千甚至上万行的代码啦,有些代码你花了很久写出来,过了些天再回去看,发现竟然看不懂了,这太正常了。 另外,你以后在工作中会发现,一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,这产会挨打的。所以为了避免这种尴尬的事情发生,一定要增加你代码的可读性。

    代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号""" """

代码注释原则

#1. 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可
#2. 注释可以用中文或英文,但不要用拼音

文件头注释

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

基本数据类型

什么是数据?为何要有多种类型的数据?

#数据即变量的值,如age=18,18则是我们保存的数据。
#变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数据去标识

数字

#int整型
定义:age=10 #age=int(10)
用于标识:年龄,等级,身份证号,qq号,个数

#float浮点型
定义:salary=3.1 #salary=float(3.1)
用于标识:工资,身高,体重,
#int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
#long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
>>> a= 2**64
>>> type(a)  #type()是查看数据类型的方法
<type \'long\'>
>>> b = 2**60
>>> type(b)
<type \'int\'>

#complex复数型
>>> x=1-2j
>>> x.imag
-2.0
>>> x.real
1.0
其他数字类型(了解)

字符串

#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:name=\'Dean\' #name=str(\'Dean\') 
用于标识:描述性的内容,如姓名,性别,国籍,种族
#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is Egon , I\'m 18 years old!"

#多引号什么作用呢?作用就是多行字符串必须用多引号
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个任意类型的值
定义:students=[\'egon\',\'alex\',\'wupeiqi\',] #students=list([\'egon\',\'alex\',\'wupeiqi\',]) 
用于标识:存储多个值的情况,比如一个人有多个爱好
#存放多个学生的信息:姓名,年龄,爱好
>>> students_info=[[\'egon\',18,[\'play\',]],[\'alex\',18,[\'play\',\'sleep\']]]
>>> students_info[0][2][0] #取出第一个学生的第一个爱好
\'play\'
列表嵌套实例

字典

#为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下
>>> info=[\'egon\',\'male\',18]
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
>>> info[2]
18
但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
即:
        #name, sex, age
info=[\'egon\',\'male\',18]
而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={\'name\':\'egon\',\'age\':18,\'sex\':18} #info=dict({\'name\':\'egon\',\'age\':18,\'sex\':18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
info={
    \'name\':\'egon\',
    \'hobbies\':[\'play\',\'sleep\'],
    \'company_info\':{
        \'name\':\'Oldboy\',
        \'type\':\'education\',
        \'emp_num\':40,
    }
}
print(info[\'company_info\'][\'name\']) #取公司名


students=[
    {\'name\':\'alex\',\'age\':38,\'hobbies\':[\'play\',\'sleep\']},
    {\'name\':\'egon\',\'age\':18,\'hobbies\':[\'read\',\'sleep\']},
    {\'name\':\'wupeiqi\',\'age\':58,\'hobbies\':[\'music\',\'read\',\'sleep\']},
]
print(students[1][\'hobbies\'][1]) #取第二个学生的第二个爱好
字典嵌套

布尔

# 在python3的学习中,有些地方是把布尔类型与数字类型放在一起的
#布尔值,一个True一个False
#计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
>>> a=3
>>> b=5
>>> 
>>> a > b #不成立就是False,即假
False
>>> 
>>> a < b #成立就是True, 即真
True

接下来就可以根据条件结果来干不同的事情了:
if a > b 
   print(a is bigger than b )

else 
   print(a is smaller than b )
上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。

布尔类型重点!!!

 

#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真

 

数据类型分类(重要)

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

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

 格式化输出

程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式

    比如要求用户输入用户名和年龄,然后打印如下格式:

    My name is xxx,my age is xxx.

    很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。

    这就用到了占位符,如:%s、%d

#%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,所以会报错
练习:用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Egon -----------
Name  : Egon
Age   : 22
Sex   : male
Job   : Teacher 
------------- end -----------------
一个小练习

基本运算符

计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

    算数运算

    以下假设变量:a=10,b=20

                     

    比较运算

    以下假设变量:a=10,b=20

                    

 赋值运算

    以下假设变量:a=10,b=20

         

    逻辑运算

        

 

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

身份运算

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

流程控制之if···else

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

1 如果:女人的年龄>30岁,那么:叫阿姨

age_of_girl=31
if age_of_girl > 30:
    print(\'阿姨好\')

2 如果:女人的年龄>30岁,那么:叫阿姨,否则:叫小姐姐

age_of_girl=18
if age_of_girl > 30:
    print(\'阿姨好\')
else:
    print(\'小姐姐好\')

3 如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨

age_of_girl=18
height=171
weight=99
is_pretty=True
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
    print(\'表白...\')else:
    print(\'阿姨好\')
#在表白的基础上继续:
#如果表白成功,那么:在一起
#否则:打印。。。

age_of_girl=18
height=171
weight=99
is_pretty=True

success=False

if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
    if success:
        print(\'表白成功,在一起\')
    else:
        print(\'什么爱情不爱情的,爱nmlgb的爱情,爱nmlg啊...\')
else:
    print(\'阿姨好\')
if嵌套

    4 如果:成绩>=90,那么:优秀

       如果成绩>=80且<90,那么:良好

       如果成绩>=70且<80,那么:普通

       其他情况:很差

score=input(\'>>: \')
score=int(score)

if score >= 90:
    print(\'优秀\')
elif score >= 80:
    print(\'良好\')
elif score >= 70:
    print(\'普通\')
else:
    print(\'很差\')
参考代码
  if 条件1:

    缩进的代码块

  elif 条件2:

    缩进的代码块

  elif 条件3:

    缩进的代码块

  ......

  else:  

    缩进的代码块
#!/usr/bin/env python

name=input(\'请输入用户名字:\')
password=input(\'请输入密码:\')

if name == \'egon\' and password == \'123\':
    print(\'egon login success\')
else:
    print(\'用户名或密码错误\')
练习一,登陆验证
#!/usr/bin/env python
#根据用户输入内容打印其权限

\'\'\'
egon --> 超级管理员
tom  --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
\'\'\'
name=input(\'请输入用户名字:\')

if name == \'egon\':
    print(\'超级管理员\')
elif name == \'tom\':
    print(\'普通管理员\')
elif name == \'jack\' or name == \'rain\':
    print(\'业务主管\')
else:
    print(\'普通用户\')
根据用户输入内容打印其权限
# 如果:今天是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循环

1 为何要用循环

#上节课我们已经学会用if .. else 来猜年龄的游戏啦,但是只能猜一次就中的机率太小了,如果我想给玩家3次机会呢?就是程序启动后,玩家最多可以试3次,这个怎么弄呢?你总不会想着把代码复制3次吧。。。。

age_of_oldboy = 48

guess = int(input(">>:"))

if guess > age_of_oldboy :
    print("猜的太大了,往小里试试...")

elif guess < age_of_oldboy :
    print("猜的太小了,往大里试试...")

else:
    print("恭喜你,猜对了...")

#第2次
guess = int(input(">>:"))

if guess > age_of_oldboy :
    print("猜的太大了,往小里试试...")

elif guess < age_of_oldboy :
    print("猜的太小了,往大里试试...")

else:
    print("恭喜你,猜对了...")

#第3次
guess = int(input(">>:"))

if guess > age_of_oldboy :
    print("<

以上是关于python开发基础篇的主要内容,如果未能解决你的问题,请参考以下文章

Python自动化开发学习18-Django基础篇

[资料分享]Python视频教程(基础篇进阶篇项目篇)

Python开发第一篇基础题目

python3-开发面试题(python)6.23基础篇

python基础篇

Python代码阅读(第19篇):合并多个字典