python简介 菜鸟教程_Python简介和入门

Python是一门什么样的语言?

编译型和解释型

编译和解释的区别是什么?

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)

动态语言和静态语言

动态语言和静态语言的区别是什么?

动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

Python解释器

当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。

CPython

当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Python安装

Windows

1. 下载安装包

https://www.python.org/downloads/

2. 安装

默认安装路径:C:\python27

3、配置环境变量

【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path的一行,双击】 --> 【Python安装目录追加到变值值中,用;分割】

第一个Python程序

(venv) C:\Users\win10\PycharmProjects\Py_road>python

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> print("Hello World!")

Hello World!

变量

申明变量

name = "ZhuYuLiang"

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

定义规则

变量名只能是 字母、数字或下划线的任意组合

变量名的第一个字符不能是数字

以下关键字不能声明为变量名

['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']

常量

Python不存在常量,只是使用全部大写的变量名来表示常量

字符编码

ASCII(Python2默认)

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

5c558c81c1f7b9b51f65a58e26236ced.png

Unicode(Python3默认)

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16=65536,注:此处说的的是最少2个字节,可能更多 UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

注释

当行注视:# 被注释内容

多行注释:""" 被注释内容 """

用户交互

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

name = input("What is your name?")

print("Hello " + name )

输出:"Hello ZhuYuLiang"

格式化输出

1.字符串拼接

python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。

name='zyl'

print('My name is '+name+' My job is IT')

My name is zyl My job is IT

2.%s,%d,%f

name = "zyl"

print "i am %s " % name

输出: i am zyl

PS: 字符串是 %s;整数 %d;浮点数%f

3.format

通过关键字

print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))

#通过字典设置参数

site = {"name": "菜鸟教程", "url": "www.runoob.com"}

print("网站名:{name}, 地址 {url}".format(**site))

#通过列表索引设置参数

my_list = ['菜鸟教程', 'www.runoob.com']

print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的

输出结果为:

网站名:菜鸟教程, 地址 www.runoob.com

网站名:菜鸟教程, 地址 www.runoob.com

网站名:菜鸟教程, 地址 www.runoob.com

通过位置

>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序

'hello world'

>>>"{1} {0}".format("hello", "world") # 设置指定位置

'world hello'

if elif else流程判断

my_age = 28

user_input = int(input("input your guess num:"))

if user_input == my_age:

print("Congratulations, you got it !")

elif user_input < my_age:

print("Oops,think bigger!")

else:

print("think smaller!")

while 循环

count = 0

while True:

print("1+1=2",count)

count +=1

else用法

count = 0

while count<3:

print("1+1=2",count)

count +=1

else:

print(count)

正常结束循环后会调用else,如果循环被break掉的话不会调用else。

for 循环

for i in range(10):

print("loop:", i )

步长

每隔一个数打印一次

for i in range(0,10,2):

print("loop:", i )

每日练习

编写登陆接口

输入用户名密码

认证成功后显示欢迎信息

输错三次后锁定

代码如下:

import pickle,os

info={

'wq':[123456,0],

'syf':[123456,0],

'zyl':['zgkm123456.',0]

}

def write_file():

with open('./info.txt','wb') as f:

f.write(pickle.dumps(info))

def read_file():

with open('info.txt','rb') as f:

info=pickle.loads(f.read())

return info

if not os.path.exists('./info.txt'):write_file()

info=read_file()

err_info={}

for i in range(3):

while True:

name=input("请输入用户名: ")

if name.isalpha():

passwd=input("请输入密码")

if passwd.isdigit():

break

else:

print('请输入数字')

else:

print('请输入字母')

if name in info and info[name][0] == int(passwd) and info[name][1] <= 3:

print('欢迎{}用户'.format(name))

break

elif info[name][1] == 3:

print('用户已被锁定')

break

else:

info[name][1]+=1

err_info[name]=info[name][1]+1

continue

for i in err_info:

if info[i][1] == 3:

write_file()

多级菜单

三级菜单

可依次选择进入各子菜单

代码如下:

city_dict = {'广州': {'天河': ['天河体育馆', '金山大夏'],

'越秀': ['越秀公园', '光孝寺'],

'番禺': ['长隆欢乐世界', '大夫山']},

'深圳': {'福田': ['莲花山', '赛格'],

'龙华': ['元山公园', '龙城广场'],

'南山': ['世界之窗', '欢乐谷']},

'佛山': {'禅城': ['梁园', '孔庙'],

'南海': ['千灯湖', '南国桃园'],

'顺德': ['清晖园', '西山庙']}}

def judge_index(index):

if not index.isdigit() or index not in ['0','1','2']:

print('输入错误,请重试')

return 'continue'

def list_index(index):

for i in index:

for j in i:

print(j,end=' ')

print()

while True:

city_index = [(index, key) for index, key in enumerate(city_dict)]

print('欢迎查询城市信息')

print('-'*40)

list_index(city_index)

get_city=input('请输入索引: ')

if judge_index(get_city) == 'continue':

continue

city_index1 = [(index, key) for index, key in enumerate(city_dict[city_index[int(get_city)][1]])]

while True:

list_index(city_index1)

get_city1=input('请输入索引,或按b返回上一级菜单: ')

if get_city1 == 'b':

break

elif judge_index(get_city1) == 'continue':

continue

city_index2 = [(index, key) for index, key in enumerate(city_dict[city_index[int(get_city)][1]][city_index1[int(get_city1)][1]])]

while True:

list_index(city_index2)

get_city1=input('已到结尾按b返回上一级菜单: ')

if get_city1 != 'b':

print('输入错误,请重新输入!')

continue

break

多级菜单(升级版)

city_dict = {'华为':{'A系':{'A1':[1000,1100,1200,],'A2':[2000,2100,2200,],'A3':[3000,3100,3200,],},

'B系':{'B1':[4000,4200,4400,],'B2':[5000,5200,5400,],'B3':[6000,6200,6400,],},

'C系':{'C1':[7000,7300,7600,],'C2':[8000,8300,8600,],'C3':[9000,9300,9600,],},},

'小米':{'M系':{'M1':[610,630,650,],'M2':[710,730,750,],'M3':[810,830,850,],},

'N系':{'N1':[920,950,980,],'N2':[1020,1050,1080,],'N3':[1120,1150,1180],},

'L系':{'L1':[1230,1270,1300,],'L2':[1430,1470,1500,],'L3':[1630,1670,1700,],},},

'魅族':{'X系':{'X1':[599,699,799,],'X2':[699,799,899,],'X3':[799,899,999,],},

'Y系':{'Y1':[1099,1199,1299,],'Y2':[1299,1399,1499,],'Y3':[1499,1599,1699,],},

'Z系':{'Z1':[2099,2199,2299,],'Z2':[2399,2499,2599,],'Z3':[2699,2799,2899,],},},}

fun_info=[[],[]]

def print_menu(*args):

for i in args[0]:print(i)

if len(fun_info[0]) ==3:print('已经到底了,请返回上一级或退出')

choice=input('请选择: ')

if choice == 'b' or (choice == 'q' and len(fun_info[1]) == 0):exit()

if choice == 'q':

return fun_info[0].pop()(fun_info[1].pop())

elif choice in args[0] and len(fun_info[0]) < 3 :

fun_info[0].append(print_menu);fun_info[1].append(args[0])

print_menu(args[0][choice])

else:

print('输入错误,请重试');print_menu(args[0])

print_menu(city_dict)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值