python基础一

一,Python介绍

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

目前Python主要应用领域:

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

二,计算机基础

cpu:

  相当于人的大脑,运算与控制中心。
  速度 飞机
内存:

  时存储,供给CPU数据。
  速度 高铁。成本高,断电即消失。
硬盘:

  相当于电脑的数据库,存储着大量的数据,文件,音频文件。
  速度 走。成本低
操作系统:

  执行者,支配所有关系。windows,linux,mac...

python流行的原因
1.大量第三方库
2.Diango

三、python的历史

Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
python 2x和3x在同一年诞生,2x是10月,3是12月
python 2x:源码混乱,重复代码较多,冗余。
python 3x: 源码规范,崇尚优美、清晰,简单

四、python 2x,python 3x的区别

1.print方法有区别
python 3x print('内容')
python 2x print()或者print '内容'

2.编码方式不一样
python 3x 默认编码:utf-8
python 2x 默认编码: ascii 只包含英文字母和特殊字符以及数字
不支持中文
解决方式:
在头部增加

1
# -*- coding: utf-8 -*-

3.input不同
python 2x: raw_input()
python 3x: input()

五、开发语言的分类

解释型:当程序运行时,将代码一行一行的解释成二进制,再运行。
优点:排错快,开发效率高,可以跨平台
缺点:执行效率相对低
典型:python,

编译型:将代码一次性全部编译成二进制,然后运行。
缺点:排错慢,开发效率低,不能跨平台(操作系统)。
优点:执行效率高
典型:C

python的种类

CPython 默认解释器,转换为字节码,再转换为c语言010101...
IPython
PyPy 一次性全部转化成二进制,执行效率高。
Jython 把Python代码编译成Java字节码执行
IronPython

虽然解释器不同,但是写python代码的规则还是统一的。

六、运行第一个python程序

如果想要windows电脑同时有2个python环境,Python2.7和Python3.5

先安装python2.7

1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27

勾选添加环境变量

再安装python3.5

选择自定义安装,勾选添加环境变量

安装路径设置为C:\Python35

进入目录C:\Python27

将python.exe更改为python2.exe

打开windows命令行模式

输入python2就是2.7版本

输入python就是3.5版本

新建一个test.py文件,内容如下

1
print('你好,世界')

使用命令行方式

我的代码路径在E:\python_script\day1

进入目录,执行代码

使用python2执行

执行报错

因为默认python2x编码是ascii,不支持中文

在第一行添加

# -*- coding: utf-8 -*-

再次执行,就可以了

如果python安装完成之后,发现执行python有问题时
可以把所有python版本卸载,重新安装一次,确保环境变量已经删除,文件后缀是可以显示的。

七、变量

变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用。

变量定义的规则:

1,变量必须由数字,字母,下划线任意组合。
2,变量不能以数字开头。
3,变量不能是python中的关键字。(不用背)
['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']
4,变量要具有可描述性。
5,变量不能是中文。
6,变量不能太长。
7,官方推荐:

1
2
3
4
5
6
#驼峰体
AgeOfOldboy = 56
NumberOfStudents = 100
#下划线
age_of_oldboy = 56
number_of_students = 80

一般推荐使用第2种,也就是下划线的方式。

下面几个例子,判断变量名是否合法

1
2
3
4
5
6
w__ = 22
e_a_ = '太白'
e$ = 'fdsa'
-_ = '15'
2g = 33
__ = '老村长'

3,4,5行的变量,是不合法的,其他的都是合法的。

赋值计算
先计算等号右边的,把计算的值赋值给左边的

python是解释型语言,代码是一行一行执行
后面的变量会覆盖前面的。

1
2
3
4
5
age1 = 12
age2 = age1
age3 = age2
age2 = 6
print(age1,age2,age3)

执行输出

12 6 12

看一个图

age1~3的值,存储在内存中。当age2等于6时,age2值的指向就发生了变化,值为6

7.常量
常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量
默认全部大写的变量,称之为常量。

1
CITY_LIST = 'beijing'

11.注释
为什么有注释?
帮助你记起之前的代码,或者帮助别人看懂你的代码
不宜多,精就行

单行注释: #被注释内容
多行注释: '''被注释内容''' 或者 """被注释内容"""

1
2
3
4
5
6
7
8
9
10
#定义一个变量
name1 = "taibai"
'''
虞美人·碧苔深锁长门路
 
清代:王国维
 
碧苔深锁长门路。总为蛾眉误。自来积毁骨能销。何况真红一点臂砂娇。
妾身但使分明在。肯把朱颜悔。从今不复梦承恩。且自簪花坐赏镜中人。
'''

八、基础数据类型初始

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长整型

字符串类型(str)

在Python中,加了引号的字符都被认为是字符串!

1
2
msg = "My name is xiao,I'm 22 years old!"
num = '12'

这种会出错

1
msg = "My name is xiao,I"m 22 "years old!"

双引号,只看2头的,从左到右

一般3个引号的,用到多行的场景,有行号符的。
一行很少用3个引号的

1
2
3
4
5
6
7
shi = '''
马汗踏成泥,朝驰几万蹄。
雪中行地角,火处宿天倪。
塞迥心常怯,乡遥梦亦迷。
那知故园月,也到铁关西。
'''
print(shi)

执行输出

马汗踏成泥,朝驰几万蹄。
雪中行地角,火处宿天倪。
塞迥心常怯,乡遥梦亦迷。
那知故园月,也到铁关西。

3个单引号,没有赋值,是用来注释的

比如上面的唐诗《虞美人·碧苔深锁长门路》

字符串只能相加和相乘

相加

1
2
3
4
n1 = '她的名字是'
n2 = '南宫紫菱'
n3 = n1 + n2
print(n3)

执行输出

她的名字是南宫紫菱

相乘

1
2
n1 = '我好爱你!'
print(n1 * 3)

执行输出

我好爱你!我好爱你!我好爱你!

九、布尔值(True,False)

布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断

1
print(1 > 2)

执行输出

False

返回false
布尔值是不带引号的

1
print(1 > 2 and 3 < 4 or 4 > 5)

执行输出

False

布尔值判断时,如果出现false,结果返回false

九、查看数据类型

使用type()方法

1
2
3
4
5
6
n1 = 'nan'
n2 = False
n3 = 'False'
print(type(n1))
print(type(n2))
print(type(n3))

执行输出

<class 'str'>
<class 'bool'>
<class 'str'>

十、用户交互 input

input出来的数据类型,都是字符串

1
2
3
4
5
name = input('请输入你的名字: ')
age = input('请输入你的年龄: ')
hobby = input('请输入你的爱好: ')
s = '我的名字是' + name + '\n我的年龄是' + age + '\n我的爱好是' + hobby
print(s)

执行效果

十一、if语句

第一种结构

1
2
if 条件:
    结果

举例

1
2
if 3 > 2:
    print(666)

执行输出

666

第二种结构

1
2
3
4
if 条件:
    结果
else:
    结果

举例

1
2
3
4
if 3 > 2:
    print(666)
else:
    print(333)

执行输出

666

第三种结构

1
2
3
4
5
6
if 条件1:
    结果1
elif 条件2:
    结果2
elif 条件3:
    结果3

举例

1
2
3
4
5
6
7
choice = input('请输入你猜的数字:')
if choice == '2':
    print('我请你吃饭')
elif choice == '6':
    print('免一周作业')
elif choice == '3':
    print('一起去玩耍')

执行输出

第4种结构

1
2
3
4
5
6
7
8
if 条件1:
    结果1
elif 条件2:
    结果2
elif 条件3:
    结果3
else:
    结果4

举例

1
2
3
4
5
6
7
8
9
choice = input('请输入你猜的数字:')
if choice == '2':
    print('我请你吃饭')
elif choice == '6':
    print('免一周作业')
elif choice == '3':
    print('一起去玩耍')
else:
    print('输入错误')

执行输出

== 表示做比较
= 表示赋值

第5种结构

1
2
3
4
5
6
7
if 条件:
    if 条件:
        结果
    else:
        结果
else:
    结果

只要需求存在,就可以一直嵌套if

举例

1
2
3
4
5
6
7
8
age = int(input('请猜我的年龄:'))
if True:
    if age == 18:
        print('恭喜你猜对了')
    else:
        print('这都看不出来...')
else:
    print('输入错误')

执行输出

字符串之间不能比较大小,只能比较相等

int ---> str str(12)  转换成字符串,使用str()
str ---> int int(12) 全部由数字组成的字符串才能转化为数字

十二、while循环

用来执行重复的代码

1
2
3
4
5
while True:
    print('痒')
    print('凉凉')
    print('体面')
    print('社会摇')

执行输出


凉凉
体面
社会摇

...

while True 代表死循环

另外一个例子

1
2
3
4
5
print(222)
while True:
    print(111)
    print(333)
print(444)

执行输出

222

111
333

111
333

....

444永远不会执行

跳出循环的条件:
1.改变条件
2.breck

标志位flag

从1打印到100

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#标志位
flag = True
#初始值
count = 1
while flag:
    #第一次,打印初始值。之后打印自增值
    print(count)
    #循环一次,自增1
    count = count + 1
    #当等于100时,循环终止
    if count == 100:
        #打印100
        print(count)
        flag = False

执行输出

1

2

3

...

100

第2种写法

1
2
3
4
5
6
7
#初始值
count = 1
while count < 101:
    #第一次,打印初始值。之后打印自增值
    print(count)
    #循环一次,自增1
    count = count + 1

执行输出,效果同上

breck:结束循环

1
2
3
4
5
while True:
    print(111)
    print(222)
    break
    print(333)

执行输出

111

222

遇到breck,终止循环,下面的代码不执行

continue:结束本次循环,继续下一次循环。
continue 相当于见底了

1
2
3
4
5
while True:
    print(111)
    print(222)
    continue
    print(333)

执行输出

111

222

....

333永远不会执行,为什么呢?遇到continue时,下面代码不执行,继续执行下一次循环,由于循环无法终止,所以最后一行代码,始终不会执行。

使用breck方式,打印1到100

1
2
3
4
5
6
7
8
9
10
#初始值
count = 1
while True:
    #第一次,打印初始值。之后打印自增值
    print(count)
    #循环一次,自增1
    count = count + 1
    if count == 101:
        break
        执行输出1100

执行输出1到100

十三、相关练习题

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

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

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

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

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

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

习题分析:

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

观察题目,发现1~10,少了一个数字7

思路如下:

1.先输出1~10

1
2
3
4
5
#初始值
count = 0
while count < 10:
    count = count + 1
    print(count)

执行输出1~10

2.遇到7的时候,不执行print()就可以了

如果直接用breck,那么循环就终止了。这个时候,需要用到continue了

最终代码如下:

1
2
3
4
5
6
7
8
9
#初始值
count = 0
while count < 10:
    #自增1
    count = count + 1
    #判断为7时,终止此次循环,继续下一次循环
    if count == 7:
        continue
    print(count)

执行输出

1
2
3
4
5
6
8
9
10

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

思路如下:

1.先输出1~100

1
2
3
4
5
6
#初始值
count = 0
while count < 100:
    #自增1
    count = count + 1
    print(count)

2.需要定义一个总和变量the_sum,每次要向前推进加数字,就比如吃豆游戏一样

1
2
3
4
5
6
7
8
9
10
11
#初始值
count = 0
#总和的初始值
the_sum = 0
while count < 100:
    #自增1
    count = count + 1
    the_sum = the_sum + count
    print(the_sum)
 
print(the_sum)

执行输出

1
3
6

...

5050

上面的代码,我把每次相加的结果给打印出来了。

0+1+2+3+....+100

计算过程是从左至右的,0+1=1,再计算1+2=3,再计算3+3=6....

解释一下代码执行过程

第一次count=0,the_sum=0 执行到第7行时,count=1,那么the_sum结果1,所以输出1

第二次count=1(因为whlie循环会迭代),执行到第7行时,count=2(1+1=2),那么the_sum的结果为3。因为第一次the_sum的值为1,所以这里为1+2=3

第三次,count=2,执行到第7行时,count=3,那么the_sum的结果为6(3+3=6)

所以最终结果为4950+100=5050

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

先来介绍求奇数和偶数的方法

用数字和2整除,取余 %
等于1为奇数
等于0为偶数

思路和第2题类似

1.先输出1~100

1
2
3
4
5
6
#初始值
count = 0
while count < 100:
    #自增1
    count = count + 1
    print(count)

执行输出1~100

2.用count和2整除取余,如果为1,输出数字,否则不输出

1
2
3
4
5
6
7
8
9
10
#初始值
count = 0
while count < 100:
    #自增1
    count = count + 1
    #取余,和2整除
    yushu = count % 2
    #为1表示奇数
    if yushu == 1:
        print(count)

执行输出

1
3
5

...

99

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

方法和第3题类似,把取余部分修改一下

1
2
3
4
5
6
7
8
9
10
#初始值
count = 0
while count < 100:
    #自增1
    count = count + 1
    #取余,和2整除
    yushu = count % 2
    #为0表示偶数
    if yushu == 0:
        print(count)

执行输出

2
4
6

...

100

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

从这个公式可以发现出规律

为偶数的是做减法

为奇数的是做加法

思路:

在第二个题目基础上来做,第二个是1到100的求和

1.先把第2题的代码贴过来

2.在此基础上做一下稍微的改动,最终代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 初始值
count = 0
#计算最终值的初始值
final_value = 0
while count < 99:
    #自增1
    count = count + 1
    #取余,和2整除
    yushu = count % 2
    # 为1表示奇数
    if yushu == 1:
        # 做加法运算
        final_value = final_value + count
        print(final_value)
    # 偶数
    else:
        # 做减法运算
        final_value = final_value - count
        print(final_value)
 
print(final_value)

执行输出

1
-1
2

...

50

最终结果为50

注意: 这里最后一个数字是99,而不是100,所以是while count < 99

上面的代码,我把每次计算的结果给打印出来了。

0+1-2+3-4....+99

计算过程是从左至右的,0+1=1,再计算1-2=-1,再计算-1+3=2....

解释一下代码执行过程

第一次count=0,final_value=0,执行到第7行时,count=1。做取余计算 1 / 2,结果为1。

if判断等于1,结果成立,所以为奇数。计算等式final_value + count  也就是0+1=1,输出1

第二次count=1,final_value=1,执行到第7行时,count=2。做取余计算 2 / 2,结果为0。

if判断等于1,结果不成立,所以为偶数。计算等式final_value - count  也就是1-2=-1,输出-1

第三次count=2,final_value=-1,执行到第7行时,count=3。做取余计算 3 / 2,结果为1。

if判断等于1,结果成立,所以为奇数。计算等式final_value + count  也就是-1+3=2,输出2

所以最终结果为-49+99=50

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

1.先来做简单的登录验证

1
2
3
4
5
6
username = input('请输入用户名:')
password = input('请输入密码:')
if username == "xiao" and password == '123':
    print('ok')
else:
    print('登录失败超过三次,请稍后重试!')

2.用while循环来执行输入框,可以无限次尝试登录

1
2
3
4
5
6
7
while True:
    username = input('请输入用户名:')
    password = input('请输入密码:')
    if username == "xiao" and password == '123':
        print('ok')
    else:
        print('登录失败超过三次,请稍后重试!')

3.做一个变量用来记录登录失败次数,初始为0,如果登录失败,次数加1。达到3次,直接结束程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#登录次数
logins = 0
while True:
    #判断登录次数
    if logins == 3:
        print('登录失败超过三次,请稍后重试!')
        break
    username = input('请输入用户名:')
    password = input('请输入密码:')
    #判断用户名和密码
    if username == "xiao" and password == '123':
        print('ok')
        break
    else:
        #次数加1
        logins += 1
        print('登录失败!')

执行输出


参考资料:

Django 基础教程

转载声明:
作者:肖祥
出处: https://www.cnblogs.com/xiao987334176/

python全栈开发,Day1(python介绍,变量,if,while)的更多相关文章

  1. python 全栈开发:python基础

    python具有优美.清晰.简单,是一个优秀并广泛使用的语言.诞生于1991年2.python历史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自 ...

  2. Python 全栈开发四 python基础 函数

    一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...

  3. Python 全栈开发一 python初识

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

  4. Python 全栈开发二 python基础 字符串 字典 集合

    一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...

  5. Python 全栈开发三 python基础 条件与循环

    一. 条件语句 python条件语句是根据一条或多条语句的执行结果的真假(True Or False)来决定代码块的执行. 而执行内容可以多行,以缩进来区分表示同一范围. 1.Python判断条件真假 ...

  6. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  7. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  8. Python全栈开发

    Python全栈开发 一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“ ...

  9. Win10构建Python全栈开发环境With WSL

    目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...

  10. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

随机推荐

  1. C/C++宏定义交换两个值

    #define SWAP(t,a,b) \ do{ \ t c = a; \ a = b; \ b = c; \ }); void main() { ,b=; SWAP(int,a,b); }

  2. JXOI2018守卫 区间DP

    链接 https://loj.ac/problem/2545 思路 f[i][j]表示i到j区间的最小监视人数 可以预处理出来g[i][j],表示i能否监视到j (其实预处理的关系不大,完全可以直接判 ...

  3. SpringBoot Redis使用fastjson进行序列化

    在使用spring-data-redis,默认情况下是使用org.springframework.data.redis.serializer.JdkSerializationRedisSerializ ...

  4. Pig项目&Spring Boot&Spring Cloud学习

    1.Spring条件加载原理(@Conditional,@ConditionalOnXXX注解) https://fangjian0423.github.io/2017/05/16/springboo ...

  5. LuoguP1072 Hankson的趣味题

    题目 原题链接 题解 题意即为 \[ gcd(x,a0)=a1 \\ lcm(x,b0)=b1 \\ 求x个数 \] 根据\(lcm\)的求解方式\(lcm(a,b)=a*b/gcd(a,b)\)可以 ...

  6. EPPlus实战篇——Excel读取

    .net core 项目 可以从excel读取任何类型(T)的数据,只要T中的field的[Display(Name = "1233")]中的name==excel column ...

  7. function CONVERSION_EXIT ****INPUT/OUTPUT说明

    CONVERSION_EXIT_ALPHA_INPUT和CONVERSION_EXIT_ALPHA_OUTPUT 函数说明 CONVERSION_EXIT_MATN1_INPUT 物料号码转换函数 C ...

  8. 集成算法——Ensemble learning

    目的:让机器学习效果更好,单个不行,群殴啊! Bagging:训练多个分类器取平均 Boosting:从弱学习器开始加强,通过加权来进行训练 (加入一棵树,比原来要强) Stacking:聚合多个分类 ...

  9. android activity全屏

    有两种方法: 1.在AndroidManifest.xml的配置文件里面的<activity>标签添加属性: android:theme="@android:style/Them ...

  10. 每日质量NPM包复制_copy-to-clipboard

    一.copy-to-clipboard 官方定义: Simple module exposing copy function 理解: 一个超级简单的复制功能,并且这种方法适用于通过别的事件触发复制功能 ...