[python]一起学python(1)

ByteAegis
• 阅读 367

python

跟很多前端工作者一样,我也常常打听。作为前端,在要懂js的前提下,还要可以学什么其他语言来增加自己的竞争力。
我看到最多的是node,很多人说前端真正的学好node。已经可以胜任很多工作了。假如想学后端java是需求最大的。
不过目前来说java的学习成本很高,相对python是一门很好入门的语言,最近也是很火。
所以我想用一小段时间,快速了解一下python。(本文用的是python3.x)

数据类型

先看数据类型(看我们可以pyhton中写什么。)

  1. 整数
  2. 浮点数
  3. 字符串
  4. 布尔值
  5. 空值

乍一看基本类型和js的差不多。
在学习过程中我们会多次用到print();类似于js的console,就是打印输出。

声明

python的声明没有关键字,声明和赋值写法一样。

counter = 100 # 整型变量
miles = 1000.0 # 浮点型变量
name = "John" # 字符串变量
flag = True # 布尔类型变量

print(counter) //100
print(miles)   //1000.0
print(name)    //"John"
print(flag)    //True

这种常用的是动态语言,与之相反的是静态语言。在声明时规定变量的类型。

int a = 123; // a是整数类型变量
a = "ABC"; // 会报错,不能把字符串赋给整型变量
格式化

相当于占位符,用%符号调用。

`'Hello, %s' % 'world'
// 'Hello, world'

各种占位符

  1. %d 整数
  2. %f 浮点数
  3. %s 字符串
  4. %x 十六进制整数

其中当用到%时,需要转义一下。%%

>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

list

list很像js中的数组。这里叫列表。其实也差不多,就是一个有序的存放数据的表。

>>> classmates = ['Michael', 'Bob', 'Tracy']
print(classmates)
//['Michael', 'Bob', 'Tracy']

用len()可以查看list的长度(同时也能看字符的长度)

classmates = ['Michael', 'Bob', 'Tracy']
name = 'Michael'
print(len(classmates)) //3
print(len(name)) //7

因为是有序的,list中的数据都有自己的索引。索引从0开始。超出后会报错。

>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
>>> classmates[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

!!比js方便的是list可以调用索引-1直接访问最后一位。

>>> classmates[-1]
'Tracy'
>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'
>>> classmates[-4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

list方法

append在list最后添加数据

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']

insert可以在list指定位置插入数据

>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

pop直接使用删除list最后一位。带上索引删除指定位置。

>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']

>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']

tuple

tuple是类似list的,可是一旦定义了就不能修改。定义写法用的是()。

>>> classmates = ('Michael', 'Bob', 'Tracy')
>>> classmates
('Michael', 'Bob', 'Adam')

一旦尝试通过classmates[1]="tom"。修改tuple,会报错。tuple可以保证一些不需要修改的数据被无意修改。

dict

dict类似于js的对象。也就是key-value对的形式存数据。可以用名字快速地找到数据内容。
写法

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
# js的是用. python用[]
>>> d['Michael']
95

当数据多了之后list的查找速度会变慢,而dict几乎不受影响。可是dict会占用大量空间,是用空间来换取时间的一种方法。
如果key不存在,dict就会报错:

>>> d['Thomas']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Thomas'

这时可以用in或者get()来判断该key是否存在。

# in
>>> 'Thomas' in d
False
# get()
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

用pop()可以删除dict中一项包括key和value

>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
set

set与dict类型相似,可是set只存key。可以用add(),remove()来增减。

# 通过list来传入
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

# add()
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

# remove()
>>> s.remove(4)
>>> s
{1, 2, 3}

if判断

来到了逻辑判断了,if。条件判断。首先于js不同python的分块不用{}而是用缩进和:(这个要注意)

age = 20
if age >= 18:
    print('your age is', age)
    print('adult')

# 加入else
age = 3
if age >= 18:
    # 符合条件走这里
    print('your age is', age)
    print('adult')
else:
    # 不符合条件走这里
    print('your age is', age)
    print('teenager')

对于else if,python有它的专用缩写

age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')

变量判断

if x:
    print('True')

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。

input

终于出现了第一个交互功能--input。用input()程序会让用户输入文本并存放在对应位置,继续完成代码。

birth = int(input('birth: '))
# input()参入的字符,为输入时的提醒文本
# 输入的值会被定义为birth的值,参与if判断。
if birth < 2000:
    print('00前')
else:
    print('00后')

注意input输入的文本类型是字符,字符不能直接用<,>对比。必须要先转成数字。用int()可以把字符转成整数。

循环

white

只要满足white的条件,即为true。就会一直跑循环里的代码。

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。

循环里的方法

break
break可以提前结束循环。

n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')

continue
continue是跳过某次的代码直接进入下一次循环。

n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: # 如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)

for...in..

for in 可以枚举list或tuple里的数据.

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
#顺序输出'Michael', 'Bob', 'Tracy'

某些场景,python是有提供基本方法的,不需要循环生成。list()可以让有序数据转换为list。range()可以生成一个整数序列

>>> list(range(5))
[0, 1, 2, 3, 4]

场景

我们可以利用目前了解到的python语法做一款弱智的游戏。猜数字

import random
# 用一个dict存放需要的数据
config = {'maxNum': 100,'minNum': 0,'count':0}
# 用模块生成随机数,模块是python中很重要的一环
target = random.randint(config['minNum'],config['maxNum'])
# 让循环持续发生
while  True:
    config['count'] += 1
    num = int(input('请输入 %d 至 %d 的整数:' % (config['minNum'],config['maxNum'])))
    if num == target:
        # 当猜对时break跳出循环
        break
    elif num < target:
        config['minNum'] = num
        print('不对,猜小了')
    elif num > target:
        config['maxNum'] = num
        print('不对,猜大了')
print('猜对了答案是 %d。一共猜了 %d 次' % (target,config['count']))
点赞
收藏
评论区
推荐文章
推荐学java 推荐学java
3年前
推荐学Java——应该了解的前端内容
导读本文是推荐学Java系列第四篇,通过前三篇内容已经搞定了JavaSE的内容,接下来是真正进入Java后端开发的视界。先来了解基本学习路线,可能你会有这样的疑问:前端的内容到底该不该学?Java开发需不需要会前端?下面就来一一剖析。Java正则表达式在开始之前,先带大家学习一下Java中的正则表达式,这块内容既可以放到Java基础部分学习,也可以放
浅梦一笑 浅梦一笑
3年前
怎么操作能使Python代码运行起来速度飞快?
Python是开发人员当中流行的编程语言之一。它应用广泛,无论是Web开发还是机器学习。Python大受欢迎的原因有很多,比如社区支持、出色的库、广泛用于机器学习和大数据以及简单的语法。尽管有这么多优点,Python还是有一个缺点:速度慢。作为一种解释性语言,Python的速度不如其他编程语言。不过,我们可以用几个技巧来克服这个问题。本文将分享几个Pytho
学python的猫 学python的猫
4年前
零基础应该如何开始学习python
随着人工智能时代的到来,Python也在不断发展壮大,越来越多的人选择学Python,只要因为它容易学习,功能又强大还可以跨平台。其实Python作为一门脚本语言,难度上相较于其他语言略微简单点,但是对于没有计算机基础的人来说,也是非常难得,可能安装这一步就会难倒大家!1、Python学习确定方向对于刚入门的人来说,要先把Python基础和进阶学透,再继续往
学python的猫 学python的猫
4年前
python——零基础照样学
零基础,可以学编程嘛?这是很多初学者的心里都会存在的一个问题,当然,计算机方面的基础对任何一门编程语言的学习都是会有所帮助的,但是如果你在编程语言的学习上是零基础的话,也不用担心,因为不论哪门语言的学习,总是会有一个开始的。谁不是从零基础开始呢。我个人观点是python,是最适合作为学习编程路上的入门语言。原因大家都懂,python语言相对于其他语言来说
徐小夕 徐小夕
4年前
前端高效开发必备的 js 库梳理
前端高效开发必备的js库梳理之前有很多人问学好前端需要学习哪些js库,主流框架应该学vue还是react?针对这些问题,笔者来说说自己的看法和学习总结.首先我觉得在学习任何知识之前必须要有一个明确的学习目标,知道自己为什么要学它,而不是看网上说的一股脑的给你灌输各种知识,让你学习各种库,从而不断的制造大家的焦虑感.
待兔 待兔
4年前
关于Golang的那些事(一) -- Node.js和Golang对比
之前一直用Node.js作为开发语言,用了差不多4年的Node.js,涉及前端和后端,最近看到Golang这个新兴之秀挺火的,于是想探究探究一下这门语言,对比了一下他们的Githubrepo,截止现在Node.js的repo有72.5K星,issue数量是859个,Golang的repo有75.7K星,issue数量是5K个。从趋势来看,Golang来势
Stella981 Stella981
3年前
Node.js
1.Node来历   2009年,正是推出基于Javascript语言和V8引擎的开源Web服务项目,命名为Node.js,Node.js是第一次把Javascript带到后端开发。全很很多开发人员都熟悉Javascript,所以Node.js一下子就火了。   Javascript语言本身是完善的函数式语言,在前端开发时,开发
Stella981 Stella981
3年前
Python 和 JS 有什么相似?
Python是一门运用很广泛的语言,自动化脚本、爬虫,甚至在深度学习领域也都有Python的身影。作为一名前端开发者,也了解ES6中的很多特性借鉴自Python(比如默认参数、解构赋值、Decorator等),同时本文会对Python的一些用法与JS进行类比。不管是提升自己的知识广度,还是更好地迎接AI时代,Python都是一门值
Stella981 Stella981
3年前
Request —— 让 Node.js http请求变得超简单
先前一直比较关注前端的东西,对后端了解较少。不过一直对Node.js比较感兴趣,去年12月还去参加了阿里的CNODE交流聚会。以后希望通过这里的博客分享一些学习Node.js的笔记。一方面总结了自己的学习心得,另一方面也可以和大家一起分享交流。嗯,大概就是这样子。这篇就先介绍一个Node.js的模块——request(htt
Wesley13 Wesley13
3年前
0基础前端开发需要学什么?
  0基础前端开发需要学什么?零基础学员入门前端需要了解前端行业的发展趋势、学习前端的方法、前端学习路线详解以及前端案例展示等内容;有老师指导的情况下,可以结合学员自身情况制定前端学习路线,明确学习前端的路径、未来发展趋势。提前为学员打好基础,避免小白学员走弯路。  小白学员面临的前端如何入门、如何开始学习前端、前端能够做什么等问题。因此入门前要明确学习