Python1~3天的学习

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

Python是一门什么样的语言?
python是一门动态解释性的强类型定义语言

Python的优缺点:
优点:
1.Python的定位是“优雅”、“明确”、“简单”
2.开发效率非常高,Python有非常强大的第三方库
3.高级语言
4.可移植性
5.可扩展性
6.可嵌入性
缺点:
1.速度慢,
2.代码不能加密
3.线程不能利用多CPU问题
....

Python解释器:
CPython:
当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:
CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython:
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,
但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
PyPy:
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),
所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码
在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython:
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython:
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
小结:
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,
而是通过网络调用来交互,确保各程序之间的独立性。

二、Python发展史
...略过

三、Python 2 or 3?
//总结:2.x的版本将会过时,3.x的版本就牛或成未来的语言
In summary : Python 2.x is legacy, Python 3.x is the present and future of the language
print "hello world" # 2.x版本打印输出的语句
print("hello world") # 3.x版本打印输出的语句

2.x = 默认编码 =ASSIC =不支持中文
3.x = 默认编码 =UNICODE =默认支持中文

python版本 3 vs 2:
  1。 默认支持中文
  2. 不兼容2.x
  3. 核心语法调整,更易学
  4. 新特性默认只在3.x上有

四、Python安装
windows:
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
#cmd里面能实现python b:/a.py
D:\Program Files\Python35\Scripts\;
D:\ProgramFiles\Python35\;
linux、Mac:
无需安装,原装Python环境
ps:如果自带2.6,请更新至2.7



五、Hello World程序
print("Hello World!") # 3.x版本的
其他语言的hello world:
c++:
#include <iostream>
int main(void)
{
td::cout<<"Hello world";
}
c:
#include <stdio.h>
int main(void)
{
printf("\nhello world!");
return 0;
}
php:
<?php
echo "hello world!";
?>

六、变量\字符编码 
变量:
变量用于存储要在计算机程序中引用和操作的信息。它们还提供了一种用描述性名称标记数据的方法,这样读者和我们自己
就能更清楚地理解我们的程序。将变量视为保存信息的容器是很有帮助的。它们的唯一目的是在内存中标记和存储数据。
然后可以在整个程序中使用这些数据。
声明变量:
#_*_coding:utf-8_*_
name = "Alex Li"

上述代码声明了一个变量,变量名为: name,变量name的值为:"Alex Li" 

变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
['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']
变量的赋值:
name = "alex Li"
name2 = name
print(name,name2) # alex Li alex Li
name = "Jack"
print("What is the value of name2 now?")
print(name,name2) # Jack alex Li

七、字符编码
python2.x解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
报错:ascii码无法表示中文
#!/usr/bin/env python
print "你好,世界"

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "你好,世界"

新出一种可以代表所有字符和符号的编码,即:Unicode:
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode
是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了
统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:
ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
Assic -->Gb2312 ->gbk1.0-->gb18030
Assic -->unicode -->utf-8 /utf-16

Python2.x == Assic 默认编码
#!-*- coding:utf-8 -*- #这行不加上的话,如果打印中文,一般会报错
#coding:utf-8 # 这一行和上面的效果差不多一样
print u"奥术大师大所"
python3.x == unicode默认编码

# 让2.x版本支持中文,这么去写,还有字符串的前面都加u
#coding:utf-8
msg = u"我爱北京天安门"
print(msg)

注释:
  当行注视:# 被注释内容
   多行注释:""" 被注释内容 """


八、用户输入
#!/usr/bin/env python # 在linux系统的操作下,一般都会写这一行,但是window下一般不写
#_*_coding:utf-8_*_ # 2.x一般会写这个,3.x一般没有
#name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name?")
print("Hello " + name )

输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
# -*- coding: utf-8 -*-
import getpass
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")
# 打印输入的内容
print(pwd)

用户交互.py
death_age = 80
name = input("your name:")
age = input("your age:") # input 接受的所有数据都是字符串,即使你输入的是数字,但依然会被当成字符串来处理
print(type(age))

# int integer = 整数 把字符串转成int(被转的数据)
# str string = 字符串 把数据转成字符串用str(被转的数据)
print("Your name:",name)
print("You can still live for",str(death_age - int(age)),"years ....")

十三、表达式if ... else
# 猜岁数(demo1)
guess_age.py
age_of_princal = 56 #
guess_age = int(input(">>>:")) # 输入自己要猜的岁数
if guess_age == age_of_princal: # 如果 什么等于什么(成立输入下面语句)
print("Yes,you got it...")
else: # 不成立输出下面语句
print("No,it's wrong")

# 判断分数的等级(demo2)
guess_score.py
score = input("请输入你的分数:")
# 下面会对输入的分数进行判断,符合其中一个条件就会退出整个判断
if score > 90:
print("A")
elif score > 80:
print("B")
elif score > 70:
print("C")
elif score > 50:
print("D")
else:
print("滚")

# 作业

十四、表达式for loop

最简单的循环10次

1
2
3
4
5
6
#_*_coding:utf-8_*_
__author__  =  'Alex Li'
 
 
for  in  range ( 10 ):
     print ( "loop:" , i )

输出:

1
2
3
4
5
6
7
8
9
10
loop:  0
loop:  1
loop:  2
loop:  3
loop:  4
loop:  5
loop:  6
loop:  7
loop:  8
loop:  9

需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环

1
2
3
4
for  in  range ( 10 ):
     if  i< 5 :
         continue  #不往下走了,直接进入下一次loop
     print ( "loop:" , i )

需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出

1
2
3
4
for  in  range ( 10 ):
     if  i> 5 :
         break  #不往下走了,直接跳出整个loop
     print ( "loop:" , i )

十五、while loop   

 有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。

海枯石烂代码

1
2
3
4
5
count  =  0
while  True :
     print ( "你是风儿我是沙,缠缠绵绵到天涯..." ,count)
     count  + = 1
    

 break这个关键字是跳出循环,直接将循环中断不再运行

比如aa.py

  count = 4  

  for i in range(10):

    if count == 4:

      break

    else:

      print(i)

  

其实除了时间,没有什么是永恒的,死loop还是少写为好 

上面的代码循环100次就退出吧

作业一:博客(自己去创建一个博客,然后写自己每一天所学到的笔记)

作业二:编写登陆接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

uname = "root"
pword = "1234"
count = 0
while True:
username = input("please into your username:")
password = input("please into your password:")
if uname == username and password ==pword:
print("欢迎━(*`∀´*)ノ亻!")
else:
count+=1
if count == 3:
print("你的用户已经被锁定")
break

猜你喜欢

转载自www.cnblogs.com/niuwang666/p/10441570.html