#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author:eivision
@file: lecture1.py
@time: 2023/06/09
"""
# Python3 学习 第一章 快速上手:基础知识
# 1.1 交互式解释器
# 启动Python后,启用交互式Python解释器
# 输入 print("Hello, world!") 按下回车键后输出:Hello, world!
# 1.2 算法是什么
# 使用计算机能够明白的语言将任务流程(算法)提供给它们
# 1.3 数和表达式
# 交互式Python解释器可用作功能强大的计算器,加减乘除,直接进行计算,如:2+2;5-2;2*3;3/2;等
# 其中,除法运算的结果为小数,即浮点数(float或floating-point number),
# 1.3.1
# 1/2 = 0.5
# 1/1 = 1.0
# 如果你想丢弃小数部分,即执行整除运算,可使用双斜杠 //
# 1.3.2
# 1//2 = 0
# 1//1 = 1
# 特殊情况:
# 5.0 // 2.4 = 2.0
# 在较旧的Python版本中,对整数执行常规除法运算的结果与使用双斜杠类似。如果你使用的是Python 2.x,
# 要对整数执行常规除法运算,可在程序开头添加如下语句(稍后介绍如何编写完整的程序),也可直接在交互式解释器中执行这条语句:
from __future__ import division
# 注意 在上述语句中,future前后分别是两条下划线:__future__。
# 另外,从命令行运行较旧的Python版本时,还可使用命令行开关-Qnew。1.8.2节将更详尽地介绍__future__。
# 取余操作
# 1 % 2 = 1
# x y % 等价于x - ((x // y) * y)
# 10 % 3 = 1
# 9 % 3 = 0
# 2.75 % 0.5 = 0.25 # 2.75//0.5=5;2.75%0.5 =2.75-0.5*5=0.25;
# 需要执行指定的“每10分钟检查一次”之类的操作时,这种运算可能很有用:只需检查minute % 10 是否为0;
# minute = 60
# if minute % 10 = 0:
# do it
# else
# break
# 10 % (-3) = -2 # 10//(-3) = -4 ;10-(-4)*(-3) = -2
# (-10) % 3 = 2 # (-10)//3 = -4; (-10)-3*(-4) = 2
# (-10) % (-3) = -1 # (-10)//(-3) = 3; (-10)-(-3)*3 = -1
# 基于除法运算的工作原理,很容易理解最终的余数是多少。对于整除运算,需要明白的一个
# 重点是它向下圆整结果。因此在结果为负数的情况下,圆整后将离0更远。这意味着对于-10 // 3,
# 将向下圆整到-4,而不是向上圆整到-3。
# 乘方(求幂)运算符
# 2 ** 3 = 8
# -3 ** 2 = -9
# (-3) ** 2 = 9
# 请注意,乘方运算符的优先级比求负(单目减)高,因此-3**2等价于-(3**2)。如果你要计算的是(-3)**2,必须明确指出。
# 十六进制、八进制和二进制
# 0xAF --175
# 010 --8
# 0b1011010010 --722
# 1.4 变量
# 变量是表示(或指向)特定值的名称。例如,你可能想使用名称x来表示3,为此执行如下代码:
# x = 3 # 这称为赋值(assignment),我们将值3赋给了变量x。换而言之,就是将变量x与值(或对象)3关联起来。给变量赋值后,就可在表达式中使用它。
# x * 2 = 6
# 不同于其他一些语言,使用Python变量前必须给它赋值,因为Python变量没有默认值。
# 注意 在Python中,名称(标识符)只能由字母、数字和下划线(_)构成,且不能以数字打头。因此Plan9是合法的变量名,而9Plan不是。
# 1.5 语句
# 前面已经介绍过两种语句了:print语句和赋值语句。
# 表达式是一些东西,而语句做一些事情;
# 1.6 获取用户输入
# 解释器 idle中输入:
# >>> input("The meaning of life: ")
# The meaning of life: 42 # 输入42
# '42' # 输出
# 这里在交互式解释器中执行了第一行(input(...)),它打印字符串"The meaning of life:",
# 提示用户输入相应的信息。我输入42并按回车。这个数被input(以文本或字符串的方式)返回,
# 并在最后一行被自动打印出来。通过使用int将字符串转换为整数,可编写一个更有趣的示例:
# >>> x = input("x: ")
# x: 34
# >>> y = input("y: ")
# y: 42
# >>> print(int(x) * int(y))
# 1428
# if time 60 == 0: print('On the hour!')
# 1.7 函数
# 1.3节使用了乘方运算符(**)来执行幂运算。实际上,可不使用这个运算符,而使用函数pow。
# >>> 2 ** 3
# 8
# >>> pow(2, 3)
# 8
# 函数犹如小型程序,可用来执行特定的操作。Python提供了很多函数,可用来完成很多神奇
# 的任务。实际上,你也可以自己编写函数(这将在后面更详细地介绍),因此我们通常将pow等标准函数称为内置函数。
# 有多个内置函数可用于编写数值表达式。例如,abs计算绝对值,round将浮点数圆整为与之最接近的整数。
# >>> abs(-10)
# 10
# >>> 2 // 3
# 0
# >>> round(2 / 3)
# 1.0
# 请注意最后两个表达式的差别。整数总是向下圆整,而round圆整到最接近的整数,并在两
# 个整数一样近时圆整到偶数。如果要将给定的数向下圆整,该如何做呢?例如,你知道某人的年
# 龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁。Python提供了完成这种任务的函
# 数floor,但你不能直接使用它,因为像众多很有用的函数一样,它也包含在模块中。
# 1.8 模块
# 要导入模块,可使用特殊命令 import
# floor 向下取整
# >>> import math
# >>> math.floor(32.9)
# 32
# 模块math还包含其他几个很有用的函数。例如,ceil与floor相反,返回大于或等于给定数的最小整数。
# >>> math.ceil(32.3)
# 33
# >>> math.ceil(32)
# 32
# # 如果确定不会从不同模块导入多个同名函数,你可能不想每次调用函数时都指定模块名。在这种情况下,可使用命令import的如下变种:
# >>> from math import sqrt
# >>> sqrt(9)
# 3.0
# 1.8.1 cmath 和复数
# 函数sqrt用于计算平方根。下面来看看向它提供一个负数的情况:
# >>> from math import sqrt
# >>> sqrt(-1)
# Traceback (most recent call last):
# ...
# ValueError: math domain error
# 在有些平台上,结果如下:
# >>> sqrt(-1)
# nan # 注意 nan具有特殊含义,指的是“非数值”(not a number)。
# Python标准库提供了一个专门用于处理复数的模块
# >>> import cmath
# >>> cmath.sqrt(-1)
# 1j
# 注意到这里没有使用from ... import ...。如果使用了这种import命令,将无法使用常规函
# 数sqrt。类似这样的名称冲突很隐蔽,因此除非必须使用from版的import命令,否则应坚持使用常规版import命令。
# 注意 Python没有专门表示虚数的类型,而将虚数视为实部为零的复数。
# 1.8.2 回到未来
# __future__
# 通过神奇模块__future__让Python具备了时光机的部分功能。对于Python当前不
# 支持,但未来将成为标准组成部分的功能,你可从这个模块进行导入
# 1.9 保存并执行程序
# 1、使用IDLE,将 print("Hello, world!") 保存至指定文件夹下;
# 2、选择菜单File→Open重新打开刚才保存的文件;
# 3、选择菜单Run→Run Module;
# 4、在解释器窗口中打印了Hello, world!
# case1
# 强大的海龟绘图法--绘制一个三角形
from turtle import *
forward(100)
left(120)
forward(100)
left(120)
forward(100)
# 更多命令 请参阅“Python库参考手册”的相关部分(https://docs.python. org/3/library/turtle.html)。
# 1.9.1 从命令提示符运行 Python 脚本
# 在Windows中使用如下命令来执行这个脚本:
# C:\>python hello.py
# 1.9.2 让脚本像普通程序一样
# 假定当前目录包含在执行路径中
# hello.py
# 1.9.3 注释
# 在Python中,井号(#)比较特殊:在代码中,井号后面到行尾的所有内容都将被忽略
# 1.10 字符串
print("Hello, world!") # "Hello, world!"是一个字符串;
# 1.10.1 单引号字符串以及对引号转义
# # 可使用反斜杠(\)对引号进行转义,
# >>> 'Let\'s go!'
# "Let's go!"
# >>> "\"Hello, world!\" she said"
# '"Hello, world!" she said'
# 1.10.2 拼接字符串
# 为处理前述不太正常的示例,来看另一种表示这个字符串的方式:
# >>> "Let's say " '"Hello, world!"'
# 'Let\'s say "Hello, world!"'
# 换而言之,这是一种输入字符串的特殊方式,而非通用的字符串拼接方法。那么应该如何拼
# 接字符串呢?就像将数相加一样,将它们相加:
# >>> "Hello, " + "world!"
# 'Hello, world!'
# >>> x = "Hello, "
# >>> y = "world!"
# >>> x + y
# 'Hello, world!'
# 1.10.3 字符串表示 str 和 repr
# 你使用print打印字符串,结果将不同
# >>> "Hello, world!"
# 'Hello, world!'
# >>> print("Hello, world!")
# Hello, world!
# 如果再加上表示换行符的编码\n,差别将更明显。
# >>> "Hello,\nworld!"
# 'Hello,\nworld!'
# >>> print("Hello,\nworld!")
# Hello,
# world!
# 通过两种不同的机制将值转换成了字符串。你可通过使用函数str和repr①直接使用这两种机
# 制。使用str能以合理的方式将值转换为用户能够看懂的字符串。例如,尽可能将特殊字符编码
# 转换为相应的字符。然而,使用repr时,通常会获得值的合法Python表达式表示。
# >>> print(repr("Hello,\nworld!"))
# 'Hello,\nworld!'
# >>> print(str("Hello,\nworld!"))
# Hello,
# world!
# 1.10.4 长字符串、原始字符串和字节
# 1. 长字符串
# 要表示很长的字符串(跨越多行的字符串),可使用三引号(而不是普通引号)。
print('''This is a very long string. It continues here.
And it's not over yet. "Hello, world!"
Still here.''')
# 提示 常规字符串也可横跨多行。只要在行尾加上反斜杠,反斜杠和换行符将被转义,即被忽略。
# 例如,如果编写如下代码:
# print("Hello, \ world!")
# 它将打印Hello, world!。这种处理手法也适用于表达式和语句。
# >>> 1 + 2 + \
# 4 + 5
# 12
# >>> print \
# ('Hello, world')
# Hello, world
# 2. 原始字符串
# >>> print(r'C:\nowhere')
# C:\nowhere
# >>> print(r'C:\Program Files\fnord\foo\bar\baz\frozz\bozz')
# C:\Program Files\fnord\foo\bar\baz\frozz\bozz
# 原始字符串用前缀r表示,原始字符串不能以单个反斜杠结尾
# 3. Unicode、bytes和bytearray
# Unicode的理念很简单,却带来了一些挑战,其中之一是编码问题。在内存和磁盘中,所有
# 对象都是以二进制数字(0和1)表示的(这些数字每8个为一组,即1字节),字符串也不例外。
# 为与C语言互操作以及将文本写入文件或通过网络套接字发送出去,Python提供了两种类似的类型:不可变的bytes
# 和可变的bytearray。如果需要,可直接创建bytes对象(而不是字符串),方法是使用前缀b:
# >>> b'Hello, world!'
# b'Hello, world!'
# 最后,Python还提供了bytearray,它是bytes的可变版。从某种意义上说,它就像是可修改
# 的字符串——常规字符串是不能修改的。然而,bytearray其实是为在幕后使用而设计的,因此
# 作为类字符串使用时对用户并不友好。例如,要替换其中的字符,必须将其指定为0~255的值。
# 因此,要插入字符,必须使用ord获取其序数值(ordinal value)。
# >>> x = bytearray(b"Hello!")
# >>> x[1] = ord(b"u")
# >>> x
# bytearray(b'Hullo!')
# 1.11 小结
# 算法:算法犹如菜谱,告诉你如何完成特定的任务。从本质上说,编写计算机程序就是
# 使用计算机能够理解的语言(如Python)描述一种算法。这种对机器友好的描述被称为程
# 序,主要由表达式和语句组成。
# 表达式:表达式为程序的一部分,结果为一个值。例如,2 + 2就是一个表达式,结果为
# 4。简单表达式是使用运算符(如+或%)和函数(如pow)将字面值(如2或"Hello")组
# 合起来得到的。通过组合简单的表达式,可创建复杂的表达式,如(2 + 2) *(3 - 1)。表
# 达式还可能包含变量。
# 变量:变量是表示值的名称。通过赋值,可将新值赋给变量,如x = 2。赋值是一种语句。
# 语句:语句是让计算机执行特定操作的指示。这种操作可能是修改变量(通过赋值)、将
# 信息打印到屏幕上(如print("Hello, world!"))、导入模块或执行众多其他任务。
# 函数:Python函数类似于数学函数,它们可能接受参数,并返回结果(在第6章学习编写
# 自定义函数时,你将发现函数实际上可以在返回前做很多事情)。
# 模块:模块是扩展,可通过导入它们来扩展Python的功能。例如,模块math包含多个很有
# 用的函数。
# 程序:你通过练习学习了如何编写、保存和运行Python程序。
# 字符串:字符串非常简单。它们其实就是一段文本,其中的字符是用Unicode码点表示的。
# 然而,对于字符串,需要学习的知识有很多。本章介绍了很多表示字符串的方式,第3章
# 将介绍众多字符串用法。
# 1.11.1 本章介绍的新函数
# abs(number) 返回指定数的绝对值
# bytes(string, encoding[, errors]) 对指定的字符串进行编码,并以指定的方式处理错误
# cmath.sqrt(number) 返回平方根;可用于负数
# float(object) 将字符串或数字转换为浮点数
# help([object]) 提供交互式帮助
# input(prompt) 以字符串的方式获取用户输入
# int(object) 将字符串或数转换为整数
# math.ceil(number) 以浮点数的方式返回向上圆整的结果
# math.floor(number) 以浮点数的方式返回向下圆整的结果
# math.sqrt(number) 返回平方根;不能用于负数
# pow(x, y[, z]) 返回x的y次方对z求模的结果
# print(object, ...) 将提供的实参打印出来,并用空格分隔
# repr(object) 返回指定值的字符串表示
# round(number[, ndigits]) 四舍五入为指定的精度,正好为5时舍入到偶数
# str(object) 将指定的值转换为字符串。用于转换bytes时,可指定编码和错误处理方式
input("Press <enter>")
Python3 学习 第一章 第一章 快速上手:基础知识
最新推荐文章于 2024-09-10 13:01:50 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)