python基础之day1

时间:2021-08-16 16:17:50

Python 简介

Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

Python为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。

除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

1.Python的种类

  • Cpython:Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
  • Jyhton:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
  • IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
  • PyPy(特殊):Python实现的Python,将Python的字节码字节码再编译成机器码。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高                       Python代码的执行速度。
  • RubyPython、Brython ...

Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

2.Python环境安装

windows:

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

linux:

Linux的yum依赖自带Python,为防止错误,如果需要安装一个更高版本如下:

查看默认Python版本

python -V 1、安装gcc,用于编译Python源码
yum install gcc
2、下载源码包,https://www.python.org/ftp/python/
3、解压并进入源码文件
4、编译安装
./configure
make all
make install
5、查看版本
/usr/local/bin/python2.7 -V
6、修改默认Python版本
mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
7、防止yum执行异常,修改yum使用的Python版本
vi /usr/bin/yum
将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6

Python基础之变量、字符编码、用户输入、流程控制

第一个Python

在python IDLE 下输入如下程序

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print ("Hello,world")
Hello,world

执行python 程序文件,在Linux或者windows 下创建hello.py 输入如下内容

#!/usr/bin/env python                #指定Python解释器

print('hello, world')                      #打印"hello,world 信息"

变量

1.声明变量

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

name = "Derby"

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

变量定义的规则:

    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 以下关键字不能声明为变量名
      ['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']

2、变量的赋值

#!/usr/bin/env python
# -*- coding: utf-8 -*- name1 = "dengbinbin"
name2 = "derby"

 python基础之day1

#!/usr/bin/env python
# -*- coding: utf-8 -*- name1 = "Derby"
name2 = name1

  python基础之day1

3、Python内置特殊变量

(1). __doc__、__package__

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : test1.py """
这是注释
""" import sys,os
from lib import common print(__doc__) #表示一个文件的注释 print(__package__) #代表一个包的名称(此文件没有包)
print(common.__package__) #(从lib包里导入的文件) >>>这是注释 >>>None
>>>lib

(2). __file__

获取当前文件名称

import sys,os

print(__file__) #代表当前文件名(如果在创建的工程内能表示全路径)

#os.path.abspath(__file__) #可以获取文件的绝对路径
print(os.path.abspath(__file__)) #经常用于获取文件的包名,导入包 print(os.path.dirname(os.path.abspath(__file__))) #获取文件的path路径
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #获取上一级包名 >>>C:/Users/Administrator/PycharmProjects/dbb0928/1106/lib/common.py
>>>C:\Users\Administrator\PycharmProjects\dbb0928\1106\lib\common.py
>>>C:\Users\Administrator\PycharmProjects\dbb0928\1106\lib
>>>C:\Users\Administrator\PycharmProjects\dbb0928\1106

(3). __name__

当直接运行某个Python文件时,解释器内部把一个特殊变量__name__会置为__main__,如果是导入函数或模块的则不会

import sys,os
from lib import common print(__name__)
print(common.__name__) >>>__main__
>>>lib.common

一般用于主函数判断

#!/usr/bin/env python3
# -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import sys def test():
args = sys.argv
if len(args)==1:
print('Hello, world!')
elif len(args)==2:
print('Hello, %s!' % args[1])
else:
print('Too many arguments!') if __name__=='__main__':
test()

  

字符编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(Python2默认ascill,Python3默认为utf-8)

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

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

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

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

更多内容参考

注释

  当行注视:# 被注释内容

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

pyc 文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

用户输入

Python2和Python3 用户输入的区别如下:

#!/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 )

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/10/4 12:59
# @Author : Derby
# @File : VerifyPasswd.py import getpass username = input('please input you username:')
#passwd = input('please input you passwd:') #直接输入看到密码
passwd = getpass.getpass("input passwd:") #不会回显密码 注意:只在Linux或windows命令行执行有效 if username == "derby" and passwd == "123456" :
print('Congratulation! authentication pass...') else:
print('username and password does not match... ')

  

流程控制

1.if...else  判断

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/10/4 13:52
# @Author : Derby
# @File : JudgeUser.py #判断输入用户的身份 name=input('请输入用户:')
if name == "admin":
print("超级管理员账户")
elif name == "user":
print ('管理员账户')
else:
print('普通用户')

Judge user

2.while和for 循环

while循环

while 条件:

    # 循环体

    # 如果条件为真,那么循环体则执行
# 如果条件为假,那么循环体不执行 while True: # while 条件永远为真 # 循环体中没有任何跳出循环语句
# 此循环为死循环

for 循环

for  循环元素   in   循环元素集 :

      #循环体
e,g: for i in range(10):
print("loop:", i )

跳出循环之break 和 continue

break用于退出所有循环

while True:
print "123"
break
print "456" #以上输出为 123 continue用于退出当前循环,继续下一次循环 while True:
print "123"
continue
print "456" #以上输出一直输出123 直到你的机器牺牲

应用场景之猜数字  

实现让用户不断的猜数字,但只给最多10次机会,猜玩三次提示用户是否继续,最后猜不对就退出程序,一下是逻辑图:

python基础之day1

 #!/usr/bin/env python
#-*- coding:utf-8 -*-
#author:Derby a=12
counter = 0
for i in range(10):
if counter<3:
guessNum=int(input("please input you guess number:"))
if guessNum==a :
print ("Congretulation! you guess right!")
break
elif guessNum<a:
print ("Think bigger!")
else:
print ("Think smaller!")
else:
answer=input("Do you want continue? \n press Y or N \t")
if answer=="y":
counter = 0
else:
break
counter += 1

猜数字