Python学习(一)

初识python

mac环境搭建

mac默认的python环境是2.x,版本比较旧,去官网下载最新的3.x包安装即可,下载地址:https://www.python.org/downloads/

python -V  // 默认的版本
python3 -V // 新安装的版本,3代表安装的是python3

python程序

在编辑器新建文件:hello.py

"""
第一个Python程序 - hello, world!
单行注释 - 以#和空格开头
多行注释 - 三个引号开头,三个引号结尾
"""
print('hello, world!')
# print("你好,世界!")
print('你好', '世界')
print('hello', 'world', sep=', ', end='!')
print('goodbye, world', end='!\n')

执行python

python3 hello.py

基础学习

数据类型

  • 整型-int
  • 浮点型-float
  • 字符串型-str
  • 布尔型-bool
  • 复数型-complex

内置函数

  • int():将一个数值或字符串转换成整数,可以指定进制。
  • float():将一个字符串转换成浮点数。
  • str():将指定的对象转换成字符串形式,可以指定编码。
  • chr():将整数转换成该编码对应的字符串(一个字符)。
  • ord():将字符串(一个字符)转换成对应的编码(整数)

运算符

运算符 描述
[] [:] 下标,切片
** 指数
~ + - 按位取反, 正负号
* / % // 乘,除,模,整除
+ - 加,减
>> << 右移,左移
& 按位与
^ \| 按位异或,按位或
<= < > >= 小于等于,小于,大于,大于等于
== != 等于,不等于
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符
= += -= *= /= %= //= **= &= \|= ^= >>= <<= (复合)赋值运算符

条件判断

可以使用ifelifelse关键字。下面演示了如何构造一个分支结构。

"""
用户身份验证
"""
username = input('请输入用户名: ')
password = input('请输入口令: ')
# 如果希望输入口令时 终端中没有回显 可以使用getpass模块的getpass函数
# import getpass
# password = getpass.getpass('请输入口令: ')
if username == 'admin' and password == '123456':
    print('身份验证成功!')
else:
    print('身份验证失败!')

和C/C++、Java等语言不同,Python中没有用花括号来构造代码块而是使用了缩进的方式来设置代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了,换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体

当然如果要构造出更多的分支,可以使用if…elif…else…结构,例如下面的分段函数求值。

"""
分段函数求值

        3x - 5  (x > 1)
f(x) =  x + 2   (-1 <= x <= 1)
        5x + 3  (x < -1)
"""

x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
elif x >= -1:
    y = x + 2
else:
    y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

分支结构是可以嵌套的,上面的代码可以写为:

"""
分段函数求值
		3x - 5	(x > 1)
f(x) =	x + 2	(-1 <= x <= 1)
		5x + 3	(x < -1)
"""

x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
else:
    if x >= -1:
        y = x + 2
    else:
        y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

说明: 可以感受下这两种写法到底是哪一种更好。在Python之禅中有一句话“Flat is better than nested.”,提出这个观点是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,如果可以使用扁平化的结构就不要去用嵌套,因此之前的写法是更好的做法。

列表循环

for-in循环

如果明确的知道循环执行的次数或者是要对一个容器进行迭代,那么推荐使用for-in循环。

"""
用for循环实现1~100求
"""

sum = 0
for x in range(101):
    sum += x
print(sum)

上面代码中的range类型,range可以用来产生一个不变的数值序列,而且这个序列通常都是用在循环中的

  • range(101)可以产生一个0到100的整数序列。
  • range(1, 100)可以产生一个1到99的整数序列。
  • range(1, 100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量。

知道了这一点,我们可以用下面的代码来实现1~100之间的偶数求和。

"""
用for循环实现1~100之间的偶数求和
"""

sum = 0
for x in range(2, 101, 2):
    sum += x
print(sum)

也可以通过在循环中使用分支结构的方式来实现相同的功能,代码如下所示。

"""
用for循环实现1~100之间的偶数求和
"""

sum = 0
for x in range(1, 101):
    if x % 2 == 0:
        sum += x
print(sum)

while循环

如果要构造不知道具体循环次数的循环结构,推荐使用while循环,while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True循环继续,表达式的值为False循环结束。

下面通过一个“猜数字”的小游戏(计算机出一个1~100之间的随机数,人输入自己猜的数字,计算机给出对应的提示信息,直到人猜出计算机出的数字)来看看如何使用while循环

"""
猜数字游戏
计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
"""

import random

answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('请输入: '))
    if number < answer:
        print('大一点')
    elif number > answer:
        print('小一点')
    else:
        print('恭喜你猜对了!')
        break
print('你总共猜了%d次' % counter)
if counter > 7:
    print('你的智商余额明显不足')

说明: 代码中使用了break关键字来提前终止循环,需要注意的是break只能终止它所在的那个循环,这一点在使用嵌套的循环结构(下面会讲到)需要引起注意。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。


 上一篇
工作中Taro开发遇坑总结 工作中Taro开发遇坑总结
这里记录工作中遇到的一些坑,以此共勉和提高。希望能够促进自己的成长。 1、单行文本过长省略号,顶部被遮盖 原因是全局添加了line-height为1,这里只需要重置为normal即可 overflow: hidden; d
2019年09月25日
下一篇 
Chrome插件开发实战 Chrome插件开发实战
chrome作为目前最流行的浏览器,备受前端推崇,原因除了其对于前端标准的支持这一大核心原因之外,还有就是其强大的扩展性。如今基于其内核开发的插件已经非常多,给我们的生活带来了非常大的方便。 这里我们来讲一下其便利的插件开发 前置知识
2019年05月27日