编译和解释的区别是什么?
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
编译型vs解释型
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
hello word!第一个程序(仪式感)
print("hello word!")
python不需要先声明变量,可以直接定义变量,但定义后就必须赋值
声明变量
name = "zwnsyw"
print(name)
上述代码声明了一个变量,变量名为: name,变量name的值为:“zwnsyw”
变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
['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 = "zwnsyw"
print(name)
字符串需要用" " 或 ’ ’ 括起来,必须两边成对出现
中文编码
ASCII—>GB2312—>GBK1.0—>GB18030–>unicode–>utf-8
注释
当行注视:# 被注释内容
多行注释:""" 被注释内容 “”"
用户输入 input()
name=input("请输入你的名字:")
print("你好"+name)
如果需要输入密码为不可见,可以使用getpass模块中的getpass方法
需 先导入getpass模块
import getpass
username=input("username:")
passwd=getpass.getpass("passwd:")
登录写法
import getpass
_username = "zwnsyw"
_passwd = "qwe123"
username = input("Username:")
#passwad = getpass.getpass("Passwad")
passwad = input("Passwad")
if _passwd == passwad and _username == username:
print("Welcom user {name}login...".format(name=passwad))
else:
print("Invalid username or passwad!")
print("the ture userbname and passwad is:",username,"and",passwad)
数据类型初识
1、数字
2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。
int(整型)
在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
2、布尔值
真或假
1 或 0
3、字符串
“hello world”
字符串的拼接“+”会开开辟许多空间,尽量不用拼接
字符串的格式化输出
name=“zwnsyw”
print(‘I am i is %s’,%name)
PS: 字符串是 %s;整数 %d;浮点数%f
字符串常用功能:
移除空白
分割
长度
索引
切片
列表
创建列表:
**name_list = ["www.","zwnsyw",".com"]
或者
name_list =list( ["www.","zwnsyw",".com"])**
元组(不可变列表)
创建元组
**name_ = ("www.","zwnsyw",".com")
或者
name = tuple("www.","zwnsyw",".com")**
元组的标志是()加 ,
表达式 if…else…elif
import getpass
name = raw_input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')
if name == "zwnsyw" and pwd == "cmd":
print("欢迎",name)
else:
print("用户名和密码错误")
**表达式for…else…break…continue **
for i in range(10)
print("count",i)
步长写法
for j in range(0,10,2) #2表示步长为2
print("步长为2:",j)
guess_age_for.py
age = 23
for i in range(3):
guess_age = int (input("My age:"))
if age ==guess_age:
print("nice, you got it")
break
elif age < guess_age:
print("guess bigger!think smaller.")
else:
print("guess smaller,think bigger.")
else:
print("\nyou have try so much time,Fuck oof!")
表达式 while…else…break
count = 0
while True:
print("count:",count)
count+=1
if count == 5:
break
guess_age_while任性玩.py
age = 23
count=0
while count<3:
guess_age = int (input("My age:"))
if age ==guess_age:
print("nice, you got it")
break
elif age < guess_age:
print("guess bigger!think smaller.")
else:
print("guess smaller,think bigger.")
count=count+1
if count==3:
keep=input("\ndo you want to keeping guess?if no,input a n.")
if keep!="n":
count=0
print("bey bey!")