Python语言程序设计-icourse163课程总结(1-3week)

Python

第1周-Python基本语法元素

  • 编程的基本概念:编译和解释、静态语言和脚本语言、IPO(Input、Process、Output)。
  • Python的开发环境:www.python.org
    Guido van Rassum——Python语言的创立者。
    PSF(Python Software Foundation)——致力于保护Python语言开放、开源和发展的非盈利组织。
    Python语法更接近人的自然语言,下面通过一个计算圆面积的小程序来感受一下:
r = 25
area = 3.14*r*r
print("{:.2f}F".format(area))

Python语言的特点:语法简介(是C语言编程量的10%)、强制可读性、较少的底层语法元素、具有庞大的计算生态(13万的第三方库)

  • 缩进——表达程序的格式框架,是严格要求的。
  • 注释——单行注释:以#开头;多行注释:以```开头和结尾。
  • 命名和保留字:
    变量——用来保存和表示数据的占位符号,用等号=向变量赋值或修改值。
    命名规则——大小写敏感,首字符不能是数字,不能与保留字重名。
    保留字——33个Python关键字
and elif import faise global
as else in return nonlocal
assert except is try Ture
break finally lambda while False
class for not with None
continue from or yield
def if pass del
  • 数据类型:
    数字类型——10110100
    字符串类型——“10,110,100"
    列表类型——[10,110,100]
  • 字符串的序号
    正向递增——从左向右,0开始
    反向递减——从右向左,-1开始
  • 字符串的使用
    索引——返回单个字符:<字符串>[索引]。
    切片——返回一段字符串:<字符串>[索引M:索引N]。
  • 语句与函数
    赋值语句——c=input()
    分支语句——使用保留字if、elif、else构成条件判断的分支结构,注意最后使用冒号":"来连接执行后续语句。
    函数——根据输入参数产生不同输出的功能过程:print(<参数>)。
    比如:eval()——评估函数,去掉参数最外侧引号并执行余下语句的函数。
>>>eval("1")
1
>>>eval("1+2")
3
>>>eval('"1+2"')
"1+2"
>>>eval('print("Hello")')
Hello

第1周编程练习-温度转换

温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
         C = ( F - 32 ) / 1.8
         F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;
(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指摄氏度87.65度;
(3) 不考虑异常输入的问题,输出保留小数点后两位;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
TempStr = input()
if TempStr[0] in ['F', 'f']:
    C = (eval(TempStr[1:]) - 32)/1.8
    print("C{:.2f}".format(C))
elif TempStr[0] in ['C', 'c']:
    F = 1.8*eval(TempStr[1:]) + 32
    print("F{:.2f}".format(F))

第2周-Python基本图形绘制

turtle海龟绘图库:>>>import turtle

  • turtle绘图窗体布局
turtle.setup(800,800,0,0)    //前两个参数是绘图窗体的长和宽,后两个参数是相对于屏幕左上角的坐标
turtle.setup(800,800)       //不指定位值坐标,则默认在屏幕正中心
  • turtle空间坐标体系和角度坐标体系
    绘图窗体空间内,0,0在窗口的中心位置,将窗口分为四个象限turtle.goto(100,-100)
    同时还有一个海龟坐标,以海龟画笔的方向为参照
turtle.bk(d)                //后退d距离
turtle.fd(d)                //前进d距离
turtle.circle(r,angle)      //以r为半径,圆心默认在海龟左侧,绘制angle角度的弧线
turtle.seth(angle)          //改变海龟行进方向,angle为绝对度数
turtle.left(angle)
turtle.right(angle)
  • RGB色彩体系
    可以使用RGB整数值模式255,255,255;或者RGB小数值模式1,1,1
turtle.cilormode(mode)      //默认采用小数值(1.0),可切换为整数值(255)
  • import用法
import <库名>
import <库名> as <库别名>
>>>import turtle as t
  • turtle画笔控制函数
t.penup()-->t.pu()
t.pendown()-->t.pd()
t.pensize()-->t.width()
t.pencolor()      // 色彩参数可以有三种类型:1、小写颜色名称的字符串("purple");2、RGB小数值;3、RGB元组值
t.forward()-->t.fd()
t.circle()
t.setheading()-->t.seth()
  • 循环语句-按一定次数循环执行的一组语句
for <变量> in range(<参数>)
  <被循环执行的语句>
//range()函数-产生循环计数序列
    range(N)-产生0到N-1的整数序列,共N个
    range(M,N)-产生M到N-1的整数序列,共N-M个
  • 画一条蛇
import turtle as t
t.setup(650,350,200,200)
t.penup()
t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i range(4):
  t.circle(40,80)
  t.circle(-40,80)
t.circle(40,80/2)
t.fd(40)
t.circle(16,180)
t.fd(40*2/3)
t.done()      //这个done()函数,是让程序运行结束时不自动退出。

第3周-基本数据类型

  • 整数类型
十进制:1010,99,-217
二进制,以0b或0B开头:0b010,-0B101
八进制,以0o123,-0O456
十六进制,以0x或0X开头:0x9a,-0X89
  • 浮点数类型
    取值范围数量级约-10308至10308,精度数量级10-16
    浮点数间的运算存在不确定尾数,一般发生在10-16左右,需要用到round()函数
round(x,d):对x四舍五入,d是小数截取位数
浮点数间运算及比较用round()函数辅助
  • 复数类型
    如果x2=-1,那么x的值是什么?
    定义j=√(-1),以此为基础,构建数学体系
    a+bj被称为复数,其中,a是实部,b是虚部
z=1.23e-4+5.6e+89j
z.real-->1.23e-4  //获得实部
z.imag-->5.6e+89  //获得虚部
  • 数值运算操作符
操作符及使用 描述
x+y 加,x与y之和
x-y 减,x与y之差
x*y 乘,x与y之积
x/y 除,x与y之商,10/3结果是3.33333...浮点数
x//y 整数除,x与y之整数商,10//3结果是3
+x x本身
-y y的负数
x%y 余数,模运算,10%3结果是1
x**y 幂运算,x的y次幂,当y是小数时,开方运算,10**0.5结果是√(10)
abs(x) x的绝对值,abs(-10.01)结果是10.01
divmod(x,y) 商余,(x//y,x%y),同时输出商和余数,divmod(10,3)结果是(3,1)
pow(x,y[,z]) 幂余,(x**y)%z,[...]表示参数z可以省略,pow(3,pow(3,99),10000)结果是4587
round(x[,d]) 四舍五入,d是保留小数位数,默认值为0,round(-10.123,2)结果是-10.12
max(x1,x2,...,xn) 返回最大值,max(1,9,5,4)结果为9
min(x1,x2,...,xn) 返回最小值,min(1,9,5,4)结果为1
int(x) 将x变成整数,舍弃小数部分,int(123.45)结果为123;int("123")结果为123
float(x) 将x变成浮点数,增加小数部分,float(12)结果为12.0;float("1.23")结果为1.23
complex(x) 将x变成复数,增加虚数部分,complex(4)结果为4+0j
  • 字符串类型
    由一对单引号或双引号表示单行字符串。
    由一对三单引号或三双引号可表示多行字符串。
    如果希望在字符串中包括单引号或双引号-->
    如果希望在字符串中既包括单引号又包括双引号-->用一对三单引号表示
  • 字符串的序号
    索引--正序、逆序
    切片--<字符串>[M:N],M缺失表示''至开头'',N缺失表示''至结尾''。
    切片高级用法--<字符串>[M:N:K],根据步长K对字符串切片。
    "O一二三四五六七八九十"[1:8:2]结果是"一三五七"
    "O一二三四五六七八九十"[::-1]结果是"十九八七六五四三二一O"
  • 字符串的特殊字符
    转义符:\ -->表达特定字符的本意
    \b(光标回退一格)、\n(换行)、\r(光标移动到本行首)
  • 字符串操作符
操作符及使用 描述
x+y 连接两个字符串x和y
x*n 赋值n次字符串x
x in s 如果x是s的子串,返回True,否则返回False

字符串切片操作的例子

weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("请输入星期数字(1-7):"))
pos = (weekId - 1) * 3
print(weekStr[pos:pos+3])
//优化改写
weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):"))
print("星期" + weekStr[weekId-1])
  • 字符串处理函数
函数及使用 描述
len(x) 返回字符串x的长度
str(x) 将任意类型x转化成所对应的字符串类型,与eval()函数相对应
hex(x) 或 oct(x) 整数x的十六进制或八进制小写形式字符串
chr(x) x为Unicode编码,返回其对应的字符
ord(x) x为字符,返回其对应的Unicode编码

Unicode编码——统一字符编码,覆盖几乎所有字符的编码方式。0-1114111(0x10FFFF)空间。

for i in range(12):
    print(chr(9800+i), end="")
//输出结果是十二星座符号:♈♉♊♋♌♍♎♏♐♑♒♓
  • 字符串处理方法
方法及使用 描述
str.lower()或str.upper() 返回字符串的副本,全部字符小写或大写
str.split(sep=None) 返回一个列表,由str根据sep被分隔的部分组成:"A,B,C".split(",")结果为['A','B','C']
str.count(sub) 返回子串sub在str中出现的次数:"a apple a day".count("a")结果为4
str.replace(old,new) 返回字符串str副本,所有old子串被替换为new
str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选:"python".center(20,"=")结果为'=======python======='
str.strip(chars) 从str中去掉在其左右两侧chars中列出的字符:"= pythonx= ".strip(" =x")结果为"python"
str.join(iter) 在iter变量除最后元素外,每个元素后增加一个str:",".join("12345")结果为"1,2,3,4,5" #主要用于字符串分隔
  • 字符串类型的格式化
    格式化是对字符串进行格式表达的方式:<模板字符串>.format(<逗号分隔的参数>)
    槽:占位信息符,以一对大括号表示。
    槽内部对格式化的配置方式:{<参数序号>:<格式控制标记>}
: <填充> <对齐> <宽度> <,> <.精度> <类型>
引导符号 用于填充的单个字符 <左对齐,>右对齐,^居中对齐 槽设定的输出宽度 数字的千位分隔符 浮点数小数精度或字符串最大输出长度 整数类型b(二进制),c(Unicode编码),d(十进制),o(八进制),x(十六进制),X(大写十六进制),浮点数类型e(科学计数法),E(科学计数法),f(通常非科学记数法),%(以百分号形式)
  • time库——是Python中处理时间的标准库
    提供获取系统时间并格式化输出功能
import time
time.<b>()

time库包括三类函数:

函数 描述
time() 获取当前时间戳,即计算机内部时间值,浮点数:time.time() -->1516939876.6022282
ctime() 获取当前时间并以易读方式表示,返回字符串:time.ctime() -->Fri Jan 26 12:11:16 2018
strftime(tpl,ts) tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间类型变量:>>>t=time.gmtime() >>>time.strftime("%y-%m-%d %H:%M:%S",t) -->2018-01-26 12:55:20
strptime(str,tpl) tpl是格式化模板字符串,用来定义输出效果;str是字符串形式的时间值;将时间字符串反向输出为计算机内部可以操作的时间。
perf_counter() 返回一个CPU级别的精确时间计数器,单位为秒。由于这个计数值起点不确定,连续调用并计算差值才有意义:>>>start = time.perf_counter() >>>end = time.perf_counter() >>>end - start
sleep(s) s为拟休眠的时间,单位是秒,可以是浮点数:>>>def wait(): time.sleep(3.3) >>>wait() #程序将等待3.3秒后再退出

实例:文本进度条

import time
scale = 10
print("------执行开始------")
for i in range(scale+1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i/scale)*100
    print("{:^3.0f}%[{}->{}]".format(c,a,b))  //c槽显示百分比,3表示3个字符宽度,.0表示没有小数
    time.sleep(0.1)
print("------执行结束------")

------执行开始------
 0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
------执行结束------

实例:单行动态刷新进度条

import time
scale = 50
print("执行开始".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1):
  a = '*' * i
  b = '.' * (scale - i)
  c = (i/scale)*100
  dur = time.perf_counter() - start
  print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
print("执行结束".center(scale//2, "-"))
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容