Python学习笔记1(环境配置,变量,数据结构,输入输出,分支与循环)

1.环境配置
 
Windows: 安装python IDLE,配置环境变量
 
Ubuntu下可使用iPython(支持tab键补全命令)
sudo apt-get install ipython
 
使用vim编辑python文件
运行python文件: python hello.py
 
运行流程:
.py文件被python解释器转换成字节码文件,该文件会再次被python解释器转换成可以被计算机识别的二进制文件
字节码文件: .pyc/.pyo文件
python -m py_compile hello.py -->转成pyc文件(打开后是乱码,字节码文件,可直接用python命令来执行,能提高加载效率,但是不能提高运行效率)
python -O -m py_compile hello.py -->转成pyc文件(.pyo是优化编译的.pyc文件,可直接用python命令来执行)
 
Windows下使用pycharm或Eclipse
 
Eclipse安装PyDev插件:
help --> install new software --> add --> PyDev --> url: http://pydev.org/updates --> 勾选PyDev --> next --> PyDev for Eclipse --> next --> 勾选Brainwy Software; PyDev; Brainwy
 
Eclipse新建Python工程:
file --> new --> project --> PyDev Project --> 输入project名字 --> finish
在新建的工程里新建python文件(要写上后缀.py
run as --> python run
 

Windows+Python3(安装时勾选配置环境变量)+Pycharm
Pycharm配置:
1.配置默认使用utf-8编码
2.配置默认文件开头的注释

Python解释器
.pyc文件:字节码文件,提高加载速度,但不能提高运行速度
.pyo文件:优化编译的pyc文件

 

2.Python变量与解释器内存管理
 
>>python变量:
不需要声明,第一次赋值时会自动声明,也不需要声明类型
将变量名和内存中的值绑定(引用)
解释器根据语法和操作数决定对象的类型
 
Python中的赋值,是将变量名和在内存中的值做绑定,也就是引用
好处是节省内存,多个变量可以指向一个地址
坏处是如果修改变量的值在内存中不存在,需要重新申请内存,绑定变量名和地址,降低了执行效率
 
可以多个变量绑定到一个地址:
>>> x=10
>>> y=20
>>> id(x)
34424364    //内存中的地址
>>> id(y)
34424244
>>> x=20
>>> id(x)
34424244
 
>>解释器/内存管理机制:
内存池机制:提前申请等量的内存空间,如果够就直接用内存池,如果不够再重新申请
PyObject_Malloc机制
 
>>命名规则:
变量名:必须字母或下划线开头,不能是关键字,大小写敏感
 
>>赋值方式:
增量赋值:x=2; x+=2    //一行有多个语句时用分号分隔
多重赋值:a=b=c=10
多元赋值:x,str1=10,'str'
 
>>数据类型:数字(整型,布尔,浮点,复数)、序列(字符串、列表、元组、字典)
 
>>语法:
缩进:使用缩进控制代码块和逻辑
 
//逻辑控制
a=10;
if(a>=10):
    print a
else:
    print 'a<10' 
 
//代码块控制
def test_fun(c):
    print 'this is test'
 
class test:
    def __init__(self):
        print 'init'
 
需要输入中文时第一行输入: # -*- coding: utf-8 -*-            (python3中不再需要,默认用的unicode编码)
 
连接符'\'    --链接多个物理行
display = "This is test func\
                  This is test func\
                  This is test func"
 
单引号,双引号,三引号表示字符串变量
 
逻辑运算符:
and -- 如果操作数都是真,返回最后一个操作数,否则返回false
or -- 如果操作数全为false/0,返回false,否则返回第一个是真的操作数
not -- 如果操作数是true,返回false
 
3. 数据结构
数字:int long float complex bolean
获取各种类型数字所占空间大小:
import sys
sys.getsizeof(10)
sys.getsizeof(10L)   //python解释器对long型大小没有限制,其他类型大小限制是固定的
sys.getsizeof(3.14)
sys.getsizeof(3+10j)
sys.getsizeof(True)
 
long型所占的空间可变,其他类型的都是固定的
==============================================================
sys.maxint  //获取int类型最大值
hex(sys.maxint)  //将int类型最大值转换为16进制
==============================================================
根据数值判断数据类型,使用type函数
type(10)
type(3.14)
==============================================================
优先级: complex>float>long>int
如果操作数是complex,那么另外一个操作数也会被转换为complex进行操作
。。。。。。
==============================================================
类型强制转换:
int(x)  //强制转换x为整形
long(x)
float(x)
complex(x) //将x转换为实部x和虚部为0的复数
complex(x,y) //将x转换为实部x和虚部为y的复数
===============================================================
计算机数字存储方式
原码:在数值前直接加符号位
反码:
正数 - 正数的反码与原码相同 
负数 - 负数的反码,符号位为“1”,数值部分按位取反
补码:
正数 - 正数的补码与原码相同
负数 - 符号位不变,其他位按位取反后加1,也就是反码+1
 
计算机中数值一律用补码表示和存储
补码转原码:
正数 - 补码和原码相同
负数 - 符号位不变,其他位按位取反再+1
 
 
4.输入输出
 
格式化输出的两种方式:
# -*- coding:utf-8 -*-
# Author: Xiang

name = input("name:")
age = int(input("age:"))
print(type(age),type(str(age)))
job = input("job:")
salary = input("salary:")

info1 = """
------------- info1 of %s -------------
Name: %s
Age: %d
Job: %s
Salary: %s
""" % (name,name,age,job,salary)

info2 = '''
------------- info2 of {_name} -------------
Name: {_name}
Age: {_age}
Job: {_job}
Salary: {_salary}
'''.format(_name = name,
_age = age,
_job = job,
_salary = salary)

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

print("info1:",info1)
print("info2:",info2)
print("info3:",info3)

使用密文的密码:
import getpass

username = input("username:")
password = getpass.getpass("password:")

print(username,password)
(注意:pycharm中无法在运行窗口使用getpass,只能在CMD窗口用python命令执行文件)
 
5.分支与循环
 
三次机会猜年龄:

age_of_oldboy = 56
n = 0

while (n<3):
n = n + 1
guess_age = int(input("guess age of oldboy:"))

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")

if n == 3:
print("you lose")
猜三次之后给机会继续猜:
age_of_oldboy = 56
n = 0

while (n<3):
n = n + 1
guess_age = int(input("guess age of oldboy:"))

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")

if n == 3:
continue_confirm = input("do you want to continue?")
if continue_confirm != 'n':
n = 0

posted on 2017-02-15 09:05  小温xy  阅读(178)  评论(2)    收藏  举报