码迷,mamicode.com
首页 > 编程语言 > 详细

python学习总结1

时间:2018-01-17 15:58:10      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:xxxx   java语言   format   except   区分   final   asc   sse   数据分析   

本文内容

1. 为什么要学python?

2. python是一种什么语言?

3. python安装过程

4. 第一个程序之helloworld

5. 变量

6. 用户输入

7. 格式化输出

8. 表达式 if else

9. 表达式while loop

10. 表达式for loop

11. break和continue

 

一、为什么要学python

随着人工智能的火爆发展,python也迎来了使用量的激增。最新的TIOBE排行榜如下图所示:

技术分享图片

 

python不仅用于人工智能,还应用于数据分析、网络编程、图像处理、数值计算。学习Python,是快速跻身互联网行业的一种途径。

二、 python是一种什么语言?

python是一种动态、强类型、解释性语言

动态和静态:

(1)动态:指程序运行期间进行数据类型检查的语言。定义变量的时候不需要进行数据类型定义,赋值即可。python、matlab都是动态语言。

(2)静态:程序在编译期间进行数据类型检查,写程序时必须定义好数据类型。c/c++、java、c#都是静态语言。

强类型和弱类型:

(1)强类型:强制数据类型定义的语言。一个变量被定义为一种数据类型,不经过强制类型转换,那么它就一直是这种数据类型。强类型语言是一种类型安全的语言。

(2)弱类型:数据类型可以被忽略,一个变量可以赋值不同数据类型的值。不是类型安全的语言。

强类型语言速度略逊于弱类型语言,但是安全性远远高于弱类型语言,更加严谨。

解释型和编译型:

编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。

(1)编译:程序先经过编译器,生成相应的可执行代码,然后再经过链接程序,生成可执行文件。

(2)解释:我的理解是一边进行编译,一边执行,由解释器进行这些操作。

编译型语言速度快,但是移植性差,需要环境配置。

解释型语言速度慢,但是可移植性强。

java很好的折衷了这两种特点,Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码是介于机器码和Java源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解释器)解释执行。它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预编译工作,所以执行起来比“纯解释型”程序要快许多。“一次编译,到处执行”。

三、 python安装过程

四、第一个程序之helloworld

 

1 # -*- coding:utf-8 -*-
2 #py2中打中文的方法,需要声明上一句话
3 name = "你好,世界"
4 print(name)
5 print("Hello World!")#就这一句话就可以了!

 

上面是在pycharm中运行,如果想在交互界面运行,在dos下python目录下输入python,新一行出现>>>,表明进入交互界面,可以直接输入python命令。

技术分享图片

打印hello world:

技术分享图片

或者先编写好py文件再执行:

技术分享图片

技术分享图片

注意保存时后缀必须为py

技术分享图片

五、变量

变量名:gf_of_oldboy 、GFOfOldboy,命名时用下划线或者大写字母区分。一般大写就表示常量。

 

字符编码的发展历程:ASCII 255 1bytes---->gb2312 7000+ ----> GBK1.0 2w+ ----> GBK18030 27000+
unicode 2bytes ----> utf-8 English:1byte hanzi:3bytes

 

变量定义的规则:

 

      • 变量名只能是 字母、数字或下划线的任意组合
      • 变量名的第一个字符不能是数字
      • 以下关键字不能声明为变量名
        [‘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 name = "Feng"
2 name2 = name
3 print("My name is",name,name2)

不用定义数据类型,直接写就可以,真的方便。注意:Feng也可以用‘‘单引号。

注释:单行注释用#,多行注释用‘‘‘ xxx ‘‘‘ """ xxx"""

打印单行输出:逗号不打印,用于连接。字符串用双引号括起来,变量直接写。单引号里面的特殊字符不打印,双引号里面特殊字符(单引号)打印。

print("My name is",name,name2)

打印多行输出:变量=‘‘‘ xxx ‘‘‘,打印此变量。 

1 msg = ‘‘‘
2 print(name,name2)
3 ‘‘‘
4 print(msg)
5 
6 msg1 = "i‘m feng"
7 print(msg1)

打印结果:

print(name,name2)

i‘m feng

 

六、 用户输入

input命令。

1 name = input("name:")
2 age = int(input("age:"))
3 print(type(age),type(str(age)))
4 job = input("job:")
5 salary = input("salary:")

PS:输入的变量默认为str(字符串型),如果需要别的类型需要进行强制类型转换,如第二行。

输入用户名和密码,判断是否正确。

 1 _username = feng
 2 _password = abc123
 3 username = input("username:")
 4 password = input("password:")
 5 if _username == username and _password == password:
 6     print("Welcome user {name} login...".format(name=username))
 7 else:
 8     print("Error!")
 9 
10 print(username,password)

附加密码不可见的功能。加入注释内容即可。

 1 import getpass
 2 _username = feng
 3 _password = abc123
 4 username = input("username:")
 5 password = input("password:")
 6 #password = getpass.getpass("password:")
 7 #密码不是明文   但是不能在这运行 在dos可以运行
 8 if _username == username and _password == password:
 9     print("Welcome user {name} login...".format(name=username))
10 else:
11     print("Error!")
12 
13 print(username,password)

 

七、 格式化输出

有四种格式化输出的方法:

第一种是‘‘‘+xxx+‘‘‘

第二种是%s %d %f  后面%(XXX,XXX,XXX)     XXX是变量

第三种是{形参}  后面 .forma(形参1=xxx,形参2=xxx,形参3=xxx) 

第四种是{数字}  后面.FORMAT(XXX,XX,XXX)

例子:

 1 #强制类型转换( 默认输入就是字符串 ) 打印变量%s %d %f
 2 #格式化输出    1、‘‘‘+ name +‘‘‘ 不用这个 开辟多块内存   2、%s替代符 %(xx,xx,xxxx)  3、 .format
 3 name = input("name:")
 4 age = int(input("age:"))
 5 print(type(age),type(str(age)))
 6 job = input("job:")
 7 salary = input("salary:")
 8 #第一种格式化输出的方法
 9 info = ‘‘‘
10 ----------- info of ‘‘‘+name + ‘‘‘ -------
11 Name:‘‘‘+name + ‘‘‘
12 Age:‘‘‘+age + ‘‘‘
13 Jod:‘‘‘+job + ‘‘‘
14 Salary:‘‘‘+salary + ‘‘‘
15 
16 ‘‘‘
17 #第二种格式化输出的方法
18 info = ‘‘‘
19 ----------- info of %s -------
20 Name:%s
21 Age:%d
22 Jod:%s
23 Salary:%s
24 ‘‘‘%(name,name,age,job,salary)
25 
26 #第三种格式化输出的方法  建议这种!
27 info2 = ‘‘‘
28 ----------- info of {_name} -------
29 Name:{_name}
30 Age:{_age}
31 Jod:{_job}
32 Salary:{_salary}
33 ‘‘‘.format(_name=name,
34            _age=age,
35            _job=job,
36            _salary=salary)
37 #第四种格式化输出的方法
38 info3 = ‘‘‘
39 ----------- info of {0} -------
40 Name:{0}
41 Age:{1}
42 Jod:{2}
43 Salary:{3}
44 ‘‘‘.format(name,name,age,job,salary)
45 print(info2)

八、 表达式 if else

1、用户登录验证

设置好用户和密码,用户输入用户名和密码。对,欢迎;错,错误。

 1 import getpass
 2 _username = feng
 3 _password = abc123
 4 username = input("username:")
 5 password = input("password:")
 6 #password = getpass.getpass("password:")
 7 #密码不是明文   但是不能在这运行 在dos可以运行
 8 if _username == username and _password == password:
 9     print("Welcome user {name} login...".format(name=username))
10 else:
11     print("Error!")
12 
13 print(username,password)

注意:if 条件输入完以后要加:,else、while、for同样。

2、猜年龄游戏

设定一个年龄,用户输入猜测的年龄。猜对了,对;猜大了,告诉用户猜大了;猜小了,告诉用户猜小了。

1 age_of_oldboy = 56
2 guess_age = int(input("guess age:"))
3     if guess_age == age_of_oldboy:
4         print("yes,you get it.")
5     elif guess_age > age_of_oldboy:
6         print("think smaller!")
7     else:
8         print("think bigger!")

注意,输入数字,要进行强制类型转换,将输入的字符串转换成数字。(看似输入的是数字,其实在py中是字符串)

九、表达式while loop

将猜年龄游戏加入循环,只能猜三次,猜对了用break退出程序;三次都猜错了也退出程序。

 1 age_of_oldboy = 56
 2 count = 0
 3 while count<3:
 4     guess_age = int(input("guess age:"))
 5     if guess_age == age_of_oldboy:
 6         print("yes,you get it.")
 7         break
 8     elif guess_age > age_of_oldboy:
 9         print("think smaller!")
10     else:
11         print("think bigger!")
12     count+=1
13 else: # not  if count ==3:
14     print("You have tried too many times..fuck off")
15     #while 1st
16     #count = 0
17     # while count
18           # if count==3:
19            #    break

注释中是实现程序的另外的方法,比较笨,现在的代码是优化后的,用一个大的else就可以,所以说while也可以与else结合?

再改进下这个猜年龄游戏,改成猜对了就跳出;猜错了询问用户是否继续,继续随便输入一个字符即可,不继续输入n,终止程序。

 1 age_of_hu=56
 2 
 3 count=0
 4 while count<3:
 5     guess_age = int(input("guess_age:"))
 6     if age_of_hu==guess_age:
 7         print("yes")
 8         break
 9     elif age_of_hu>guess_age:
10         print("think smaller")
11     else :
12         print("thinnk bigger")
13     count+=1
14     if count==3:
15         guess_confirm=input("Do you want to keeping guessing?:")
16         if guess_confirm!=n:
17             count=0

 

死循环:能一直运行的循环

1 count=0
2 while True:
3     print("yes",count)
4     count+=1

循环一百次:

1 count=0
2 while True:
3     print("count:",count)
4     count=count+1  #count +=1
5     if count == 1000:
6         break

十、表达式for loop

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_oldboy = 56
 2 for i in range(3):
 3     guess_age = int(input("guess age:"))
 4     if guess_age == age_of_oldboy:
 5         print("yes,you get it.")
 6         break
 7     elif guess_age > age_of_oldboy:
 8         print("think smaller!")
 9     else:
10         print("think bigger!")
11 else:#上面代码正常执行完才执行下面
12     print("You have tried too many times..fuck off")

 

十一、break和continue

break和continue:

continue :跳出本次循环,进行下次循环。
break :结束本次循环, 如果是嵌套,跳出第一层循环。

例1:

1 count=0
2 while True:
3     print("count:",count)
4     count=count+1  #count +=1
5     if count == 1000:
6         break

 例2:

1 for i in range(0,10):
2     if i<5:
3         print("loop",i)
4     else:
5         continue
6     print("hehe...")

输出:

loop 0
hehe...
loop 1
hehe...
loop 2
hehe...
loop 3
hehe...
loop 4
hehe...

 用continue:设置断点进行调试的时候,发现i=6以后还会进行i=7一直到i=9,但是不打印后面的hehe。

用break:设置断点进行调试的时候,发现i=6以后程序直接终止。

例3:

1 for i in range(10):
2 
3     print(------------,i)
4     for j in range(10):
5         print(j)
6         if j>5:
7             break  #跳出j循环 不跳出i循环

输出:

------------ 0
0
1
2
3
4
5
6
------------ 1
0
1
2
3
4
5
6
------------ 2
0
1
2
3
4
5
6
------------ 3
0
1
2
3
4
5
6
------------ 4
0
1
2
3
4
5
6
------------ 5
0
1
2
3
4
5
6
------------ 6
0
1
2
3
4
5
6
------------ 7
0
1
2
3
4
5
6
------------ 8
0
1
2
3
4
5
6
------------ 9
0
1
2
3
4
5
6

 

python学习总结1

标签:xxxx   java语言   format   except   区分   final   asc   sse   数据分析   

原文地址:https://www.cnblogs.com/winderFF/p/8301716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!