零基础学Python3.x笔记day01

编译和解释的区别是什么?
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;

而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.

这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
编译型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:")

登录写法

pycharm不支持getpass

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