python一起学python1

53次阅读

共计 4199 个字符,预计需要花费 11 分钟才能阅读完成。

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

正文完
 0