web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一)
前言:最近新做了一个管理系统,前端已经基本完成,
但是后端人手不足没人给我写接口,自力更生丰衣足食,
所以决定自学python自己给自己写接口哈哈哈哈~
先从hello world开始
输出语法:print()
新建一个文件
hello.py
- //填写内容
- print("hello , world")
运行该文件
这一点与Node很相似,Node运行文件的时候是node xx.js
python运行是python xx.py
如果没有这个文件你就运行的话会报错
- //报错意思是该文件不存在
- python: can't open file 'hello.py': [Errno 2] No such file or directory
输入和输出
刚刚已经提到了输出print()
print()在括号中加上字符串,就可以向屏幕上输出指定的文字
- //比如hello,world
- print("hello,world")
print()也可以接受多个字符串,需要用逗号“,”进行隔开,然后一串输出
- print("薛小白","是","最可爱的","小前端")
//会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的结果是:
//薛小白 是 最可爱的 小前端
print()也可以打印整数或者计算结果
- //打印整数
- print(300)
- //300
- //计算结果
- print(100 + 200)
- //300
- //小小一组合
- print('100 + 200 =', 100 + 200)
- //100 + 200 = 300
- //前半部分当成字符串解析,后半部分计算结果
那如果我们想让用户输入一些东西怎么办
c语言的输入是 scanf(),可以规定输入的是整数%d还是字符串等
像前端可能用的比较多的就是input框获取用户输入的内容
python的输入是input()
- name = input()
- print('hello,', name)
- //此时的name是一个变量,
- //第一句话是让你输出一个内容(此处最好的一个名字,比如:薛小白)
- //第二句话是进行一个输出,同时输出你刚刚填写的内容
- //输入完你想输入的内容后,记得按回车键
这样就可以输入输出了,但是用户体验是有点差的,用户怎么知道什么时候输东西已经输入什么东西呢,我们需要给他们一点提示!
- name = input('please enter your name: ')
- print('hello,', name)
- 这样再运行这个程序的时候,你会发现先打印出 please enter your name:
数据类型和变量
整数、浮点数、字符串
字符串用单引号‘’或者双引号“”包起来,
如果字符串内部包含‘’或者“”需要使用转义字符\
- //一句话的正常写法如下
- I'm ok!
- //因为出现了’所以需要转义字符
- 'I\'m ok!'
转义字符可以转译很多字符,\n表示换行,\\表示字符\,\t
表示制表符(就是tab)
python允许使用r‘’表示‘’内部的字符串默认不转义
- print('\\\t\\')
- //输出结果:\ \
- print(r'\\\t\\')
- //输出结果:\\\t\\
python允许'''内容'''来表示多行内容
- print('''line1
- line2
- line3''')
- line1
- line2
- line3
python里有一个特殊的值,空值None,不可理解为0
除法
- //一种除法/结果是浮点数,无论是否整除结果都是浮点数
- 10 / 3
- 3.3333333333333335
- 9 / 3
- 3.0
- //还有一种除法是//,称为地板除,两个整数的除法仍然是整数
- 10 // 3
- 3
- //取余%
- 10 % 3
- 1
字符串和编码
对于单个字符的编码,python提供了ord()获取字符的整数表示,chr()把编码转换为对应的字符
- ord('A')
- 65
- ord('中')
- 20013
- chr(66)
- 'B'
- chr(25991)
- '文'
- //如果知道字符的整数编码,还可以用十六禁止这么写str
- '\u4e2d\u6587'
- '中文'
在python中采用的格式化的方式和c语言是一样的,用%实现格式化
- Hello, %s' % 'world'
- 'Hello, world'
- 'Hi, %s, you have $%d.' % ('Michael', 1000000)
- 'Hi, Michael, you have $1000000.'
%d整数、%f浮点数、%s字符串、%x十六进制整数
- 'Age: %s. Gender: %s' % (25, True)
- 'Age: 25. Gender: True'
- //有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:
- 'growth rate: %d %%' % 7
- 'growth rate: 7 %'
另一种格式化字符串的方法是使用字符串的format()
方法,它会用传入的参数依次替换字符串内的占位符{0}
、{1}
……,不过这种方式写起来比%要麻烦得多:
- 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
- 'Hello, 小明, 成绩提升了 17.1%'
使用list和tuple
python内置的一种数据类型是列表list,list是一种有序的集合,可以随时添加和删除其中的元素。其实就是js的数组
- classmates = ['Michael', 'Bob', 'Tracy']
- classmates
- ['Michael', 'Bob', 'Tracy']
- classmates[0]
- 'Michael'
- classmates[1]
- 'Bob'
- classmates[2]
- 'Tracy'
前端获取一个数组的长度是arr.length, python使用len()函数获取数组个数,最后一个元素的索引是 len(classmates) - 1
如果要获取最后一个元素,除了使用索引外,还可以使用-1作为索引,直接获取到最后一个元素
- classmates[-1]
- 'Tracy'
以此类推,可以获取倒数第二个、倒数第三个
- classmates[-2]
- 'Bob'
- classmates[-3]
- 'Michael'
给数组添加元素append()
- classmates.append('Adam')
- classmates
- ['Michael', 'Bob', 'Tracy', 'Adam']
把元素插入到指定位置insert()索引值为i
- classmates.insert(i, 'Jack')
- classmates
- ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
删除指定位置的元素pop(),索引值为i
- classmates.pop(1)
- 'Jack'
- classmates
- ['Michael', 'Bob', 'Tracy']
把某个元素替换直接赋值即可
- classmates[1] = 'Sarah'
- classmates
- ['Michael', 'Sarah', 'Tracy']
数组里的数据类型可以不一样,比如[ 'apple' , 1 , true ]
数组里可以包着数组
- s = ['python', 'java', ['asp', 'php'], 'scheme']
- len(s)
- 4
tuple称为有序元素,与list类似,但是一旦初始化无法修改,没有append()、insert()这样的方法,可以使用索引获取元素但不可以赋值成另外的元素
那么他不可改变存在的意义是什么呢?
因为他不可变,所以代码更安全,能用tuple代替list就尽量使用tuple
当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
- t = (1, 2)
- t
- (1, 2)
如果要定义一个空的tuple,可以写成()
- t = ()
- t
- ()
如果要定义一个只有一个元素的tuple,如果你写成 t = (1) 代表
定义的不是tuple,是1
这个数!这是因为括号()
既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
。
所以,只有1个元素的tuple定义时必须加一个逗号,
,来消除歧义:
- t = (1,)
- t
- (1,)
//python在显示只有1个元素的tuple时,也会加一个逗号,
,以免你误解成数学计算意义上的括号。
最后看一个“可变”的tuple
- t = ('a', 'b', ['A', 'B'])
- t[2][0] = 'X'
- t[2][1] = 'Y'
- t
- ('a', 'b', ['X', 'Y'])
//对于tuple而言是没有改变的,改变的是list
条件判断
- //记住写法就可以了,不像前端有(){}
- //记住加:
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
结合input
- birth = input('birth: ')
- if birth < 2000:
- print('00前')
- else:
- print('00后')
- //此时会报错,因为input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数
- s = input('birth: ')
- birth = int(s)//转换成整数
- if birth < 2000:
- print('00前')
- else:
- print('00后')
循环
两种循环,一种是for in,依次把list或tuple中的每个元素迭代出来
- names = ['Michael', 'Bob', 'Tracy']
- for name in names:
- print(name)
- //执行这段代码,会依次打印names的每一个元素
Michael
Bob
Tracy
计算整数之和
- sum = 0
- for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
- sum = sum + x
- print(sum)
如果要计算1-100怎么办呢,python提供一个range()函数,可以生成一个整数序列,再通过list()转换为list
- //range(5)生成的序列是从0开始小于5的整数
- list(range(5))
- [0, 1, 2, 3, 4]
第二种循环是while循环,条件满足不断循环条件不满足退出循环
- //计算100以内的奇数的和
- sum = 0
- n = 99
- while n > 0:
- sum = sum + n
- n = n - 2
- print(sum)
break和continue跟js一样,此处不讲
使用dict和set
dict其实就是对象
- d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
- d['Michael']
如果key不存在,会报错,避免key不存在的错误,通过in判断key是否存在
- 'Thomas' in d
- False
也可以通过get()判断key是否存在
- d.get('Thomas')
- d.get('Thomas', -1)
- -1
//可以返回none或者自己指定的value,返回none时python的交互环境不显示结果
dict占用大量内存,内存浪费多,查找和插入速度快,list占用内存小,查找和插入速度随着元素增加而增加,所以dict是用空间换取时间的一种方法。
dict的key必须是不可变对象
set与dict类似,是key的集合,但不存储value,由于key不能重复,所以set中没有重复的key,类似于js的Set()函数
- s = set([1, 1, 2, 2, 3, 3])
- s
- {1, 2, 3}
set添加元素add(),可以重复添加,但不会有效果:
- >>> s.add(4)
- >>> s
- {1, 2, 3, 4}
- >>> s.add(4)
- >>> s
- {1, 2, 3, 4}
set删除元素remove()
- >>> s.remove(4)
- >>> s
- {1, 2, 3}
set可以看作数学意义上的无序和无重复元素的集合,两个set可以做数学意义上的交集、并集等操作:
- >>> s1 = set([1, 2, 3])
- >>> s2 = set([2, 3, 4])
- >>> s1 & s2
- {2, 3}
- >>> s1 | s2
- {1, 2, 3, 4}
不可变对象
str是不可变对象,list是可变对象
- //可变对象
- >>> a = ['c', 'b', 'a']
- >>> a.sort()
- >>> a
- ['a', 'b', 'c']
- //不可变对象
- >>> a = 'abc'
- >>> a.replace('a', 'A')
- 'Abc'
- >>> a
- 'abc'
>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'
未完。
web前端学习python之第一章_基础语法(一)的更多相关文章
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- 第一章 –– Java基础语法
第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- apue学习笔记(第一章UNIX基础知识)
总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...
- go基础系列 第一章 go基础语法
0.前言 1. go定义变量的几种方式 2. go内建变量类型 3. 常量的定义 4. go枚举 5. go的if语句 零. go语言的换行 go语言对换行很有讲究, 如果想换行,必须有一个逗号, 否 ...
- 第一章JSP基础语法
jsp页面元素构成 jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明. jsp指令 page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令 include指令:将一个 ...
- 【前端】Web前端学习笔记【2】
[2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...
- 【前端】Web前端学习笔记【1】
... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...
- Web前端学习笔记(001)
....编号 ........类别 ............条目 ................明细....................时间 一.Web前端学习笔记 ...
随机推荐
- GRU and LSTM
门控循环单元(GRU): 背景: 当时间步数较大或者时间步数较小的时候,循环神经网络的梯度较容易出现衰减或者爆炸.虽然裁剪梯度可以应对梯度爆炸, 但是无法解决梯度衰减的问题.正因为如此,循环神经网络在 ...
- Tomcat 控制台UTF-8乱码问题
1.修改cmd的编码格式 快捷键win+R打开运行程序,输入regedit打开注册表,找到以下路劲并且修改. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Comman ...
- LeetCode 链表(旋转链表61)
/* * 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. * 构造一个环,对链表进行处理. * *实现原理:先遍历一遍,得出链表长度,注意K可能大于len,之后令k% ...
- LightGBM算法(转载)
原文:https://blog.csdn.net/niaolianjiulin/article/details/76584785 前者的含义是轻量级,GBM:梯度上升机. 相较于xgboost: 更快 ...
- JavaScript实现自定义日期时间
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux 管理环境变量的文件分为系统级和用户级别
Linux 管理环境变量的文件分为系统级和用户级别 管理环境变量的文件也分为系统级和用户级别: 1.系统级:/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于 ...
- EECS 649 Introduction to Artificial Intelligence
EECS 649 Introduction to Artificial IntelligenceExamElectronic Blackboard Submission Due: April 24, ...
- vue 引入iconfont字体库
1.登录官网 https://www.iconfont.cn/ 2.选择所需要的图标加入图库 新建项目 选择fontClass 并下载到本地 目录如下 3.项目 assets目录下 新建 ico ...
- Vue/Egg大型项目开发(二)数据库设计
项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...
- C#线程同步(5)- 信号量 Semaphore
文章原始出处 http://xxinside.blogbus.com/logs/47617134.html 预备知识:C#线程同步(1)- 临界区&Lock,C#线程同步(2)- 临界区&am ...