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之第一章_基础语法(一)的更多相关文章

  1. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  2. 第一章 –– Java基础语法

    第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...

  3. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  4. apue学习笔记(第一章UNIX基础知识)

    总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...

  5. go基础系列 第一章 go基础语法

    0.前言 1. go定义变量的几种方式 2. go内建变量类型 3. 常量的定义 4. go枚举 5. go的if语句 零. go语言的换行 go语言对换行很有讲究, 如果想换行,必须有一个逗号, 否 ...

  6. 第一章JSP基础语法

    jsp页面元素构成 jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明. jsp指令 page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令 include指令:将一个 ...

  7. 【前端】Web前端学习笔记【2】

    [2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...

  8. 【前端】Web前端学习笔记【1】

    ... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...

  9. Web前端学习笔记(001)

    ....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记         ...

随机推荐

  1. jQuery和react实现二维码

    jq如何生成二维码 代码如下: 1.jquery.qrcode生成二维码代码 <!DOCTYPE html> <html> <head> <script ch ...

  2. isolate demo

    dependencies dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to yo ...

  3. Gatling实战(一)

    对Gatling早有耳闻,据说比jmeter的性能要好很多,我第一次试用的时候因为本机安装的jdk版本不对无法跑起来,试用失败后,因为没时间就一直没继续研究了.我当时是去java官网下载最新的jdk覆 ...

  4. kubernets code-generator

    REF: how-to-generate-client-codes-for-kubernetes-custom-resource-definitions-crd Firstly we need to ...

  5. 设计模式理解(十)结构型——享元(Flyweight)

    最后一个结构型,享元.没有太多的项目经验,对这种模式只有一种概念上的理解,就是为了节约内存等资源,把可重用的东西只申请一次,然后处处调用,同时用Hash进行管理. 直接上图: 代码: /******* ...

  6. Mac提醒休息软件Stretchly(很好用)

    github地址: https://github.com/hovancik/stretchly 安装就不介绍了,他的自定义时间目前还是有点麻烦,介绍一下. 配置文件是 ~/Library/Applic ...

  7. 极其简单的VSCode C++环境配置

    下载我打包的文件VSCode-cpp.7z.001 和 VSCode-cpp.7z.002,解压. 在系统环境变量中添加:你解压的路径\Project\.vscode\MinGW\bin. 打开你解压 ...

  8. JavaWeb网上商城项目中sql语句问题的解决

    出现的问题 解决方法 对ProductDaoImpl建立Junit测试得到问题所在 学到了 Junit case测试验证和debug分步执行 mysql是关系型数据库.Redis是非关系型数据库且比m ...

  9. Java问题解决:"错误:编码GBK 的不可映射字符"

    参考资料:http://blog.csdn.net/l1028386804/article/details/46583279 场景: 在使用javac编译java文件时出现以下错误: 解决方法: 使用 ...

  10. 第 9 章 数据管理 - 076 - 使用 Rex-Ray volume

    使用 Rex-Ray volume 在 docker1 或 docker2 上执行如下命令创建 volume: rexray volume create --size 2 'C:\share\myda ...