Python 入门

变量

    • 什么是变量?
      变量就是变化的量,核心是“变”和“量”两个字,变就是变化,量就是衡量状态。
    • 为什么需要变量?
      程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说保存下来程序执行时状态以及状态的变化。
    • 如何定义变量
      变量名(相当于门牌号,指向所在的空间),等号,变量值
      name=’Egon’
      sex=’male’
      age=18
      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’]
    • 定义方式
      1. 驼峰体
        AgeOfOldboy = 56
        NumberOfStudents = 80
      2. 下划线
        age_of_Oldboy = 56
        number_of_students = 80
    • 定义变量名不好的方式
      1. 变量名为中文、拼音
      2. 变量名过长
      3. 变量名词不达意
    • 定义变量会有:id, type, value

  • 常量
    常量即指不变的量,如 π 3.141592653… 或在程序运行过程中不会改变的量
    举例,假如老师的年龄会变,那这就是个变量,但在一些情况下,他的年龄不会变了,那就是常量。在 Python 中没有一个专门的语法代表常量,程序员约定俗称用变量名全部大写代表常量
    AGE_OF_OLDBOY = 56
    PS:在c语言中有专门的常量定义语法, const int count = 60;一旦定义为常量,更改就会报错。

用户与程序交互

古时候,我们去银行取钱,需要一个银行业务元等着我们把自己的账号密码输入给他,然后他去进行验证,成功之后,我们再将取款金额输入/告诉她
骄傲的现代人,会为客户提供一台ATM(就是一台计算机),让ATM机跟用户交互,从而取代人力。然而机器是死的,我们必须为其编写程序来运行,就是要求我们的编程语言中能够有一种能与用户交互,接收用户输入数据的机制

注释

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

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

代码注释的原则:

  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位,取值范围为 -231~231-1,即-2147483648~2147483647
在 64 位计算机上,整数的位数为64位,取值范围为 -263~263-1,即-9223372036854775808~9223372036854775807

long(长整形)
跟C语言不同,Python的长整数没有指定位宽,即:Python 没有限制长整数数值的大小,但是实际由于机器的内存有限,我们使用的长整数数值不可能无限大
注意,自从 Python 2.2 起,如果整数发生溢出,Python 会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在 Python3 里不再有 long 类型了,全都是int

1
2
3
4
5
6
7
8
9
In [7]: a = 2**64

In [8]: type(a)		# type() 是查看数据类型的方法
Out[8]: int In [9]: b = 2**60 In [10]: type(a)
Out[10]: int

complex复数型

1
2
3
4
5
6
7
In [11]: x=1-2j

In [12]: x.imag
Out[12]: -2.0 In [13]: x.real
Out[13]: 1.0

字符串

在python中,加了引号的字符就是字符串类型,python并没有字符类型
定义:name=’egon’ #name=str(‘egon’)
用于识别:描述性的内容,如姓名,性别,国际,种族

那单引号、双引号有什么区别呢?让我大声告诉你,单双引号没有任何区别,只有下面这种情况,你需要考虑单双的配合
msg = "My name is Egon, I'm 18 years old!"

多引号什么作用呢?作用就是多行字符串必须用多引号

1
2
3
4
5
6
7
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)

数字可以进行加减乘除运算,字符串呢?字符串也是可以的,但是只能进行“相加”和“相乘”的运算。

1
2
3
4
5
6
7
8
9
In [14]: name='egon'

In [15]: age='18'

In [16]: name+age	#相加就是简单的拼接
Out[16]: 'egon18' In [17]: name*5
Out[17]: 'egonegonegonegonegon'

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

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

列表

在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=[‘egon’, ‘alex’, ‘wupeiqi’,] #students=list([‘egon’, ‘alex’, ‘wupeiqi’,])
用于标识:存储多个值的情况,比如一个人有多种爱好

存放多个学生的信息:姓名,年龄,爱好

1
2
3
4
In [18]: students=[['egon', 18, ['play',]], ['alex', 18, ['play', 'sleep']]]

In [19]: students[0][2][0]	#取出第一个学生的爱好
Out[19]: 'play'

字典

为啥还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下

1
2
3
4
In [20]: info=['egon', 'male', 18,]
# 定义列表的目的不单单是为了存,还要考虑取值,如果我想取出个人的年龄,可以用
In [21]: info[2]
Out[21]: 18

但是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄

1
2
	# name	  sex	age
info=['egon', 'male', 18]

而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们就要寻求一种,既可以存放多个任意类型的值,有可以硬性规定值的映射关系的类型,比如 key=value,这就用到了字典。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
info={
'name':'egon',
'hobbies':['play', 'sleep'],
'company_info':{
'name':'Oldboy',
'type':'education',
'employee_number':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(student[1]['hobbies'][1]) #取第二个学生的第二个爱好

布尔

布尔值,一个True一个False
计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识

1
2
3
4
5
6
7
8
9
In [1]: a=3

In [2]: b=5

In [3]: a > b
Out[3]: False In [4]: a < b
Out[4]: True

接下来就可以根据条件结果来干不同的事情了:

1
2
3
4
5
if a > b
print(a is bigger than b ) else
print(a is smaller than b )

上面是伪代码,但意味着,计算机已经可以想人脑一样根据判断结果不同,来执行不同的动作。

重点:

  1. 可变类型:在 id 不变的情况下,value 可以变,则称为可变类型,如列表,字典
  2. 不可变类型:value一旦改变,id也改变。则称为不可变类型(id变,意味着创建了新的内存空间)

格式化输出

程序中经常胡有这样的场景:要求用户输入信息,然后打印成固定的格式
比如要求用户输入用户名和年龄,然后打印如下格式:
My name is xxx, my age is xxx.
很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的 xxx 位置,而且数字也必须经过 str(数字) 的转换才能与字符串进行拼接。
就用到了占位符,如:%s、%d

1
2
3
4
5
6
7
8
>>> print('My name is %s, my age is %s' %('egon','18'))   #%s字符串占位符:可以接收字符串,也可以接收数字
My name is egon, my age is 18
>>> print('My name is %s, my age is %d' %('egon','18')) #%d是数字占位符:只能接收数字
Traceback (most recent call last):
File "<stdin>", line 1, in <module> # 报错
TypeError: %d format: a number is required, not str
>>> print('My name is %s, my age is %d' %('egon',18))
My name is egon, my age is 18
1
2
3
4
5
6
7
8
9
10
>>> name=input('your name: ')
your name: renkeju
>>> age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d
your age: 18
>>> print('My name is %s, my age is %s' %(name, age))
My name is renkeju, my age is 18
>>> print('My name is %s, my age is %d' %(name, age)) #age为字符串类型,无法传给%d,所以会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
name = 'renkeju'
age = 22
sex = 'male'
job = 'student'
print("""
----------- info of %s ------------
Name : %s
age : %d
sex : %s
job : %s
-------------- end ----------------
""" \
%(name, name, age, sex, job)) ----------- info of renkeju ------------
Name : renkeju
age : 22
sex : male
job : student
-------------- end ----------------

基本运算符

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

算数运算

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

运算符 描述 实例
+ 加 - 两个对象相加 a + b 输出结果 30
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ 除 - x除以y b/a 输出结果2
% 取模 - 返回除法的余数 b % a 输出结果0
** 幂 - 返回x的y次幂 a**b 为10的20次方,输出结果 1000000000000000000000
// 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

比较运算

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

运算符 描述 实例
== 等于 - 比较对象是否相等 (a == b) 返回 false
!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 true
<> 不等于 - 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 !=
> 大于 - 返回x是否大于y (a > b) 返回 False。
< 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量
True和False等价。注意,这些变量名的大写
(a < b) 返回 True
>= 大于等于 - 返回x是否大于等于y (a >= b) 返回 False
<= 小于等于 - 返回x是否小于等于y (a <= b) 返回 True

赋值运算

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

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c / a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 = a 等效于 c = c a
//= 取整除赋值运算符 c //= a 等效于 c = c // a

逻辑运算

运算符 描述 实例
and 布尔“与” - 如果x为False, x and y 返回 False, 否则它返回 y 的计算值 (a and b) 返回 true
or 布尔“或” - 如果x是True,它返回True,否则它返回y的计算值 (a or b) 返回 true
not 布尔“非” - 如果x为True,返回False。如果x为False,它返回True。 not(a and b)返回 False

身份运算

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

流程控制之 if…else

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

比如:
如果: 女性的年龄大于30岁,那么:叫阿姨

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

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

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('阿姨好')
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好 如果成绩="">=70且<80,那么:普通
其他情况:很差

流程控制之 while 循环

i = 0
guess=input('guess a number:')
num=int(10)
guess=int(guess) while i < 2:
if num == guess:
print("恭喜你,猜对了!")
break
elif guess > num:
print('大了')
guess = input('guess a number:')
guess = int(guess)
else:
print('小了')
guess = input('guess a number:')
guess = int(guess)
i+=1

python入门基础的更多相关文章

  1. Python 入门基础6 --字符编码、文件操作1

    今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...

  2. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  3. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  4. Python入门基础学习 一

    Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...

  5. Python入门 ---基础知识

    Python入门不知道这些你还是承早放弃吧!真的 Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言 ...

  6. Python入门基础教程(儿童版) [分享一本入门级教程]

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1. 推荐书名 No Starch--Python for ...

  7. Python 入门基础学习

     Python入门学习  我们使用python3.0版本 首选来入门  带你进入Hello World >>> print ("Hello World")Hell ...

  8. python入门基础—安装

    说明:0基础,那就先练习python语言基础知识,等基础知识牢固了,再对各开发平台分别进行介绍.这里只介绍两个简单而又容易搭建开发平台Anaconda和pycharm Anaconda是一个开源的Py ...

  9. Python入门基础教程-准备工作

    作为一名Python的忠实爱好者,在Python的学习过程中趟过了很多坑.不论是在基础语法.爬虫.可视化的学习,亦或是在数据挖掘的项目开展中,整个过程有痛苦也有收获,有捶胸顿足也有仰天长笑.所以在以后 ...

随机推荐

  1. Shuffle过程的简单介绍

    Shuffle是连接Map和Reduce的桥梁 Shuffle分为Map端的Shuffle和Reduce端的Shuffle Map端的shuffle 1输入数据和执行任务: 分片后分配Map任务,每个 ...

  2. ⒃bootstrap组件 轮播图 基础案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Spring IOC容器分析(1) -- BeanFactory

    搭建好源码阅读环境后,就可以慢慢走进Spring殿堂了.IOC是Inversion of Control的缩写,控制反转的意思.很多人可能都知道IOC是spring的核心,将对象的创建初始化等权限交由 ...

  4. HTTP中的Range: bytes=0-

    HTTP中的Range就是分段请求字节数,也是大家经常说的断点续传.Range头域可以请求实体的一个或者多个子范围,Range的值为0表示第一个字节,也就是Range计算字节数是从0开始的 表示第二个 ...

  5. linux-echo

    echo 更新时间: 2017-10-11-11:55:24 echo:打印输出内容 参数选择 -e 激活转义字符 命令:echo 123    ,此命令 就会输出123 命令: echo -e &q ...

  6. JAVA 的关键字 、

    关键字: 被JAVA语言赋予特定含义的单词, 特点: 组成关键字的单词的字母全部小写 注意: A:goto 和 const 是保留字 B: 类似于Notepad++ 这样的高级记事本,针对关键字有特殊 ...

  7. js实现本地时间同步

    HTML代码 <html> <head> <title>时间</title> <meta charset="utf-8"> ...

  8. C语言函数与程序结构

    title : C语言函数与程序结构 tags : C语言作用域规则 , 外部变量 ,静态变量 ,寄存器变量,宏定义 grammar_cjkRuby: true --- 外部变量 变量声明用于说明变量 ...

  9. R语言高性能编程(三)

    一.使用并行计算加倍提升性能1.数据并行 VS 任务并行实现数据并行的算法scoket 并行性注意并行计算时间并不与执行任务的计算资源数目成正比(计算机核心),amdahl定律:并行代码的速度受限于串 ...

  10. 使用Python操作excel文件

    使用的类库 pip install openpyxl 操作实现 工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 w ...