python基础之1-安装

author:headsen chen  

date :2018-03-22  17:16:14

notice :This article created by headsen chen and not allowd to copy.

1,Python安装

windows:下载python3.6_64位,双击,一路默认安装就行了
1)、下载安装包
https://www.python.org/downloads/
2)、安装
默认安装路径:C:\python27
3)、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号

linux、Mac
无需安装,原装Python环境
  
2,Hello World程序
在linux 下创建一个文件叫hello.py,并输入
print("Hello World!")

然后执行命令:python hello.py ,输出
localhost:~ jieli$ echo "print('hello word')" >hello.py
localhost:~ jieli$ python hello.py
Hello World!

3,指定解释器
上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:

localhost:~ jieli$ cat hello.py

#!/usr/bin/env python     ---------> 启用默认的首选python版本,只要是可执行程序,就要告诉操作系统我用什么解释器来解释该程序,如shell写上:#!/bin/bash
print "hello,world"

localhost:~ jieli$ chmod 755 hello.py

如此一来,执行:

localhost:~ jieli$ /tmp/hello.py    (执行前需给予 hello.py 执行权限,chmod 755 hello.py!!!!)

补充:python的程序两种写法:
#!/usr/bin/env python ----> 到整个系统里去找python的环境变量
#!/usr/bin/python ----> 这里指定了只能到这个绝对路径下的python,当你用源码包安装了python时,调用的python仍然是这个绝对路径下的python。

实例

vim chinese.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "你好,世界"

chmod +x chinese.py

4,在交互器中执行(Windows上直接安装python3.6,或者Linux上云溪python) 
除了把程序写在文件里,还可以直接调用python自带的交互器运行代码, 
localhost:~ jieli$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World!")
Hello World!

5,脚本开头模板配置方法:
#!/usr/bin/env python   ------------------>  在Windows中不需要这一条。windows中的pycharm中不需要这一条
#_*_coding:utf-8_*_    ------------------>  使得该文件支持中文,否则中文显示乱码。补:python3.x默认支持utr-8,不加也可以

# Descripe: xxx

# Author:chen

# Date: xxx

 

配置默认的模板:视图--》工具栏(view ---> toolbar),点击新生成的双头扳手的图标,编辑器(editor)--->文件和代码模板(file and code templates)-->pythor script,添加以上信息--->点击应用,确定。


6,pycharm安装及使用方法:
Windows上安装好之后:运行:先注册,引用python3.6执行程序的绝对路径,新建一个项目,新建一个目录,新建一个python file。直接编辑,


7,变量(pycharm里面演示) 
声明变量
#!/usr/bin/env python ------------------>在Windows中不需要这一条。
#_*_coding:utf-8_*_
# Author:chen
name = "Abcd JCK"
print(“My name is ”,name)

上述代码声明了一个变量,变量名为: name,变量name的值为:"Abcd JCK" 
注意:代码里中间有个逗号,作用是将代码和变量区分开,代表了两个参数传给了print,否则代码错误,运行后则正常在一起的。

变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合,不能有特殊字符。
变量名的第一个字符不能是数字,变量名中间不能有空格。
以下关键字不能声明为变量名 ['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']
实例:girl_of_oldboy

理解变量的赋值,变量是保存在内存中的。供后续的程序随时调用
name = "Alex Li"
name2 = name
print(name,name2)
name = "Jack"
print(name,name2) ——————> Jack Alex Li

python里的变量分两种:常量和变量
常量:NAME = abc 大写的变量名,代表这个变量不要改。
变量:name = abc,这个变量的值可以随便重新替换。


8,字符编码
ython解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号,GB2312 支持的汉字太少。
GBK1.0 ,1995年的汉字扩展规范,收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。
GB18030,2000年的 是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。


显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

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

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

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

报错:ascii码无法表示中文
#!/usr/bin/env python
print "你好,世界"

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

注意:python3里面默认就采用utf-8 的编码解释器,所以 # -*- coding: utf-8 -*- 可以省略不写。python2里面必需加上才能支持中文。

 

9,python里注释的写法:
单行注释:# 被注释内容
多行注释:,,, 被注释内容 ,,, (注意:双引号也可以。python中无区别,完全一样

,,,另外一个作用:打印多行:
name = ,,,
abadf = asdfaf
sssssss
5555555555
,,,
print(name)  

 

10,用户输入:input函数,将输入的数值赋予给变量。

例1:

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

#name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name?")
print("Hello " + name )

扩展:
#_*_coding:utf-8_*_
# Author:chen
name = input('What is your name?')
print('\033[031mHello\033[0m','\033[032mname\033[0m')

 

颜色的输入方法:

红色:\033[031m xxx \033[0m

绿色\033[032m xxx \033[0m

蓝色:\033[033m xxx \033[0m

 

输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

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

import getpass

# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")

# 打印输入的内容
print(pwd)


11,格式化输出

例1:

name = input('name:' )
age = input('age:' )
job = input('job:' )
salary = input('salary:' )

info = '''
------ info of %s  ----   ------>s是string的简写,这里的%s表示引用变量的占位符,表示这个位置为变量,该变量可以是字符也可以是数字,但数字也当成字符串的类型来处理,d为纯数字类型的。引入这个的作用就是判断输入的数据的类型。
name:%s
age:%s
job:%s
salary:%s
''' % (name,name,age,job,salary)    ------> 将占位符与具体的变量对应上。这里必需与站位符一一对应,否则报错。
print(info)         -----------------> 注意。引用变量时不能加引号,加了引号就成了打印这个字符串了。

s:string 字符串
d:数字(整数)
f:浮点(小数)
引入这个的作用就是判断输入的数据的类型。

打印一个变量的数据类型:
age = input(age: )
print(type(age))

---->
age:22
<class 'str'> -------------类型:字符串
注意:python中默认所有的输入(当你输入数字123时),都当成了字符串类型的来处理:str

字符串类型转换

强制将一个字符型转成整数型:int函数来处理:integer:整形,整数形式
age = int(input(age: ))
print(type(age),type(str(age)))
------>
age:11
<class 'int'><class 'str'>

扩展:将一个整形的输入再转成字符串:
age = int(input('age:'))
print(age,type(age),type(str(age)))

例2:字符串变量里的一种字符串引用方式:.format使用方法

name = input(name: )
age = input(age: )
job = input(job: )
salary = input(salary: )
info3 = '''
----------- info of {0}---------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
''' .format(name,age,job,salary)
print(nifo)


12,输入密码时,隐藏密码,在pycharm里不好使,在Python里可以用

12.1,明文输入,例:
username = input('username:')
password = input('password:')
print(username,password)
执行后上面的password是明文的形式

12.2,getpass模块使用

要想将密码的明文改成密文,要引用python自带的一个标准库里的getpass模块。在pycharm里做实验不好使,写法如下:
该实验在cmd里的python中运行和在windows上安装的python3.6上运行的效果一样,都可以模拟一下的实验效果,逐行敲一下命令就可以了
import getpass
username = input("username: ")
password = getpass.getpass("password: ") -------------------getpass是一个模块。模块是一个已经封装好的一堆功能得程序,导入之后就可以直接用,不用重新写了
print(username,password)

实演过程如下(直接在python软件里运行或者开始---cmd ---调用python命令行后运行):
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import getpass
>>> username = input('username:')
username:jack
>>> password = getpass.getpass('password:')
password:
>>> print(username,password)
jack abc123
>>>

开始--->运行--->cmd--->
cd C:\Users\Administrator\AppData\Local\Programs\Python\Python3.6
python
... 下面的过程和上面的一样

补:模块又叫库,分为标准库和第三方库。
标准库:不需要安装,只要导入就可以用的库
第三方库:


windows里运行:在python里运行:
python passwd.py
--->username:alex
--->password: -----------此时输入的密码就不显示出来了
--->alex dfsfsglasjgjasl

验证密码

完整代码:
#_*_coding:utf-8_*_
# Author:chen
_username = 'alex'
_password = 'abc123'
username = input('username:')
password = input('password:')
if _username == username and _password == password:
   print('Welcome user {name} login to here.'.format(name=username)) ------------》或者用这种 {0} .fromat{username}
else:
   print('Invalid username or password!')

分项解释如下:
_username = 'alex' -------------- 如果写成:_username = alex 此时后面的Alex表示一个变量,将Alex变量的值赋给_username这个变量
_password = 'abc123'
username = input('username:')
password = input('password:')

if _username == username and _password == password: -------------冒号:换行时下一行自动缩进。所以下行会自动有空格
print('Welcome user {name} login ...'.format(name=username)) -------->或者写成:print(‘Welcome user {0} login...’.format(username))
else:
print('Invalid username or password!') ------------------ 可以看做是else的子语句。

shell中不需要缩进。但要有fi来结束。for循环中需要done来结束。在Python中没有这些结尾,Python有强制缩进,所以不需要这些结尾标识符
IndentationError:就是缩进的错误。Python语句中不能随便的缩进。只能顶格写,只能是该语句是上个语句的子语句时才会自动的缩进。

 

13,if语句和while循环

猜一次就退出,无循环,判断之后就退出了
age_of_oldboy = 56
guess_age = input('guess age:') ------改成:guess_age = int(input('guess age:')) #若不改,会报错,因为你输入的字符串的类型,无法和56进行比较大小

if guess_age == age_of_oldboy:
  print("yes,you got it.")
elif guess_age > age_of_oldboy:
  print(‘think smaller’)
else:
  print('think bigger!')

注意:Python3里你输入的不论是数字还是字符串都当成字符串,而字符串是不能进行大小比较的

....................................................................................
count = 0
while True:
  print('count:',count)
  count = count +1 -----------> count +=1 也可以, 此时,该循环会无限循环下去。
  if count == 1000: ------------> 当count达到1000时,跳出循环。
    break  -------> 跳出break的上层的循环,而不是上上层的循环

扩展实例:

for i in range(10):
print(i)
if i==3:
for j in range(10):
print(j)
if j==5:
break

效果如下:

0     ------------ i = 0 
1     ------------ i = 1
2     ------------ i = 2
3     ------------ i = 3
0     ------------ j = 0
1     ------------ j = 1
2     ------------ j = 2

3     ------------ j = 3
4     ------------ j = 4
5     ------------ j = 5  ,然后break生效,跳出当前层次for的循环
4     ------------ i = 4  继续上一层的for循环。
5     ------------ i = 5
6     ------------ i = 6
7
8
9

 


..................................................................................
猜对时才退出:while True 就是死循环,一直循环下去
age_of_oldboy = 56
while True:
  guess_age = input('guess age:') ------改成:guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜对了,就跳出循环。不再进行该循环了。不加会一直执行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
..................................................................................
猜对和猜不对有三次时退出

age_of_oldboy = 56
count == 0
while True:
  if count ==3:
    break
  guess_age = input('guess age:') ------改成:guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜对了,就跳出循环。不再进行该循环了。不加会一直执行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1
..........................................................................
上述代码优化下:

age_of_oldboy = 56
count = 0
while count <3:
  guess_age = input('guess age:') ------改成:guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜对了,就跳出循环。不再进行该循环了。不加会一直执行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1
.......................................................................................
三次猜错加提示:
age_of_oldboy = 56
count = 0
while count <3:
  guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜对了,就跳出循环。不再进行该循环了。不加会一直执行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1

if count =3: ------------------------------------- 当三次都猜错时,出一个提示。
print('you have tried too many times,fuck off.')

..........................................................................................
上述代码优化如下:while ... else...结构使用
age_of_oldboy = 56
count = 0   ---------------------》 注意:这里的不能用==,而只能用=,赋值的意思。
while count <3:   ---------------------》当是while True时,不走else下的代码
  guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1

else:    ---------》当while的条件成立时,走上面的代码,当while的代码不成立时,走else下的代码,当条件是while True时,不走else下的代码
  print('you have tried too many times,fuck off.')

注意:shell中没有这种语法。


14,for循环

for i in range(10): -------> i就是临时变量,range(10) 就是循环了10次。赋值从0开始,到9结束。和shell中seq 10不同,从1开始到10结束
print('loop',i)

隔着数循环(从0开始,每次增加2,到10结束,不包括10):
for i in range(0,10,2):
  print('loop',i)
------ >
loop 0
loop 2
loop 4
loop 6
loop 8

for i in range(0,10,3): ---> 此时的循环就是:0, 3, 6,9

延伸:for ... else ... 结构(for下面循环走完,走else下面的代码)
age_of_oldboy = 56
for i range(3): --------------------------------> 只循环三次
guess_age = int(input('guess age:'))
if guess_age == age_of_oldboy:
  print("yes,you got it.")
  break
elif guess_age > age_of_oldboy:
  print(‘think smaller’)
else:
  print('think bigger!')

else:     意思:当for循环里的代码正常走完了,就执行else下的代码;不正常走完(break)时,就不走else代码,原理和while...else...一样的。
  print('you have tried too many times,fuck off.')


15,continue:跳出本次循环,继续下次循环
break:结束本次循环,跳出整个循环

eg:

for i in range(10):
  if i <3:
    print("loop",i)
  else:
    continue
    print("hehe......")   注意:此时不打印下面的print内容,又跑到第一层去了。continue继续执行下次循环,本次循环没有执行完成的不执行了(continue后的不执行)

上例要想显示出“hehe......”就得改成:
for i in range(10):
  if i<3:
  print('loop',i)
else:
  print('hehe.....')
  continue   可以省略掉,效果一样的。因为实在for循环里,自动循环,而且该循环有结束的控制条件:range(10)

posted @ 2018-03-22 18:08  开始认识  阅读(494)  评论(0编辑  收藏  举报