Python程序设计笔记【01】

标识符和变量

标识符

  • 标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。
  • 标识符由字母、下划线和数字组成,且不能以数字开头。

正确的:

  1. x1
  2. my_ test
  3. _123

错误的:

  1. Test!2 (包含了其他字符)
  2. class (这个属于关键字)
  3. 1x (数字开头)
  • 标识符区分大小写
    Andy和andy 是两个不同的标识符

Python关键字

python一些特殊的组合,是所谓的关键字。键字不允许作为标识符。

Python关键字
Falsedefifraise
Nonedelimportreturn
Trueelifintry
andelseiswhile
asexceptlambdawith
assertfinallynonlocalyield
breakfornot
classfromor
continueglobalpass

常量和变量

  • 常量就是不能改变的量
    比如3.14159就是一个常量
  • 变量就是值可以改变的量,变量名则是程序为了方便地弓|用内存中的值而为它取的名称。
  • Python变量名是大小写敏感的
  • Python为动态类型语言,不需要提前声明自定义变量类型,与C不同。
  • 可使用 type() 函数查看变量类型
  • 关键字不能做完变量名使用,内置函数名也不可作为变量名使用。
  • 若使用了内置函数做变量名之后,会导致该函数不可用。需使用 del() 回收这个变量之后才可使用。

id函数

  • Python变量有一个非常重要的性质,就是变量是将名字和对象进行关联。
  • 赋值操作并不会实际复制值,它只是为数据对象取个相关的名字。
  • id( )是Python的内置函数,可以显示对象的地址
  • python解释器会把小整数即 [-5,257] 存放到小整数对象池当中,故不需要对这些对象进行重新分配,达到高效率。
  • 所以如下图所示,当a,b都为1时,其a,b,1的id都相同。但为1000时都不同

以下为IDLE的工作结果

>>>a=1
>>>b=1
>>>id(a)
1991296688
>>>id(b)
1991296688
>>>id(1)
1991296688

>>>a=1000
>>>b=1000
>>>id(a)
2802231369968
>>>id(b)
2802231369904
>>>id(1000)
2802231370032
>>>

输入和输出函数

  1. 输入函数input()
  • input函数在python中是一个内建函数,可以实现从标准输入(键盘)中读入一个字符串。
  • 提示语:a=inpuut(“提示语”)
  • 输入整数例: a=int(input())
  • 输入多个值:a,b=input().split()
  1. 输出函数print()
  • print(“输出值”)
    输出两个变量a,b:print(a,b)

数据类型

整型(int)

  1. 整数(int) 与数学中整数概念一致,无限制不同于C
  2. 整数可正可负
  3. 默认情况下,整数采用十进制。
  4. 其它进制需要增加相应的引导符号

前导符

进制前导符示例十进制
二进制:b或0B0b102
八进制:0o或0O0o108
十六进制:0x或0X0x1016

浮点数(float)

  1. 与数学中的实数概念一致
  2. 取值范围与精度都有限制
  3. 表示方式:
    小数: 1.23, 3.14,-9.01
    科学计数法: 1.23x109、1.23e9、0.000012、1.2e-5
  4. 浮点数运算存在不确定尾数,有误差
>>>0.1+0.2 == 0.3
>False
>>>0.1+0.2
>0.30000000000000004
>>>round(0.1+0.2,2) == 0.3
>True
>>>

复数(complex)

python特色

  1. 与数学中的复数概念一致
  2. 由实部和虚部组成,虚部用j表示
  3. 例如:
    2 + 3j
    实部 虚部
    real方法取实部
    imag方法取虚部
    complex()函数可用于创建一个值为real+imag*j的复数。
>>>a = complex(1,2)
>>>a
>(1+2j)
>>>

运算符

算数运算符

运算符说明示例运算结果
+加法5+1015
-减法100-595
*乘法8*972
/浮点数除法100/520.0
/整数除法100//520
%模(取余)9%41
**2**38

取整为向左取整(取小)

>>>3/2
>1.5
>>>3//2
>1
>>>-3//2
>-2
>>>

模运算

通常模运算只支持整数进行,但python对浮点数也可进行模运算

>>>3%2
>1
>>>3.2%1.5
>0.20000000000000018
>>>

求幂运算

>>>2**3
>8

数学库

函数或常数功能
e自然常数
pi圆周率
log(x[,base])返回以base为底的对数,缺省为e
pow(x,y)返回x的y次方
sqrt(x)返回x的平方根
fabs(x)返回x的绝对值

使用数学库前需要先导入库

import math
a = math.e
b = math.log(2,3)
c = math.pow(4,5)
d = math.sqrt(6)
e = math.fabs(7)
print(a,b,c,d,e)
#输出结果如下:
2.718281828459045 0.6309297535714574 1024.0 2.449489742783178 7.0

字符串

  1. 字符串是以引号括起来的任意文本.
  2. 是一个有序序列.
  3. 表示形式:
    单引号:‘abc’
    双引号:”hello"
    三引号:’’‘hello
    world’’’
  4. 三引号可以表示多行文本,若字符串本身包含单引号,则用双引号括单引号;同理三引号括双引号。

转义字符

转义字符含义
\反斜杠符号
单引号
"双引号
\a响铃
\b退格(Backspase)
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\ooo最多三位 八进制,例如:、12代表换行
\xyy十六进制数,yy代表的字符,例如\x0a代表换行

字符串运算符

运算符功能
+连接字符串
*复制字符串

示例:

>>>'hello'+'world'
'helloword'
>>>'ab'*3
'ababab'

注:字符串不能和整形或其他的数值相加,否则会报错。

字符串切片

  • 字符串是一个有序序列,可以是正向递增也可以是反向递减:
1234567
abcdefg
-8-7-6-5-4-3-2
  • 索引:在[ ]中给出序号
  • 切片:在[ ]中给出切片序号范围
    示例
>>> s ="abcdefg"
>>>s[0] #切片
>'a'
>>>s[-1]
>'h'
>>>s[1:5]
>'bcde'

关系运算

运算符表达式含义实例结果
==x==yx等于y”ABCD“==”ABCDEF“False
!=x!=yx不等于y“ABC”!=“abcd”True
>x>yx大于y”ABC“>“ABD”False
>=x>=yx大于等于y123>=23True
<x<yx小于y“ABC”<“DEF”True
<=x<=yx小于等于y“123”<=“23”True

字符串大小比较由第一位开始比较

>>>1<3<5            #等价于1<3 and 3<5
>True
>>>3<5>2
>True
>>>1>6<8
>False
>>> import math     #sqrt是math 模块下的函数,导入math模块
>>> 1>6<math.sqrt(9)
>False
>>>'Hello'>'world'  #ascii('H')=72<ascii('w')=119
>False
>>>'Hello'>3
TypeError: unorderable types: str()>int()

逻辑运算

and运算:

逻辑量1逻辑量2结果
FalseFalseFalse
FalseTrueFalse
TrueFalesFalse
TrueTrueTrue

or运算:

逻辑量1逻辑量2结果
FalseFalseFalse
FalseTrueTrue
TrueFalesTrue
TrueTrueTrue

not运算:

逻辑量结果
FalseTrue
TrueFalse

逻辑运算符实例

>>> 3>5 and a>3    #注意此时没有定义变量a
>False
>>> 3>5 or a>3     #3>5的值为False,所以需要计算后面的表达式
NameError:name'a'is not defined
>>> 3<5 or a>3     #3<5的值为True,不需要计算后面的表达式
>Ture
>>> 3 and 5        #最后一个计算的表达式的值作为整个表达式的值
>5
>>>3 and 5>2
>True
>>> not 3
>False
>>> not 0
>True  

注:短路原则,当3>5为False的情况下,计算机不会去计算 a>3,故and运算为False。但做or运算,两者都需要运算,故产生错误”a未定义“。非0值都作为True计算,0作为False运算。

运算符的优先级和结合性

优先级运算符描述结合性
1+x,-x正负
2x**y从左向右
3x*y,x/y,x%y乘,除,取模从左向右
4x+y,x-y加,减从左向右
5x<y,x<=y,x==y,x!=y,x>=y,x>y比较从左向右
6not x逻辑否从左向右
7x and y逻辑与从左向右
8x or y逻辑或从左向右

优先级和结合性实例
优先级一致时,看结合性

>>>3+5*4      #先乘后加 
>23
>>>5*3/2      #从左向右
>7.5
>>>2**3**2    #从右向左
>512
>>>3<5 or a>3 #从左向右
>True

内置转换函数

函数名含义
bool()根据传入的参数的逻辑值创建一个新的布尔值
int()根据传入的参数创建一-个新的整数
float()根据传入的参数创建一一个新的浮点数
complex()根据传入参数创建一个新的复数
str()创建一一个字符串
ord()返回Unicode字符对应的整数
chr()返回整数所对应的Unicode字符
bin()将整数转换成2进制字符串
oct()将整数转化成8进制数字符串
hex()将整数转换成16进制字符串
list()根据传入的参数创建一一个新的列表
>>>bool('str')
>True
>>>float(3)
>3.0
>>>complex(1,2)  #传入数值创建复数
>(1+2j)
>>>str(123)
>'123'
>>>list('abcd')  #传入字符串,创建列表
>['a','b','c','d']

类型转换函数实例

#基本格式: int(x[,base= 10])
>>>int()        #不传入参数时,得到结果0。
>0
>>>int("02")    #去掉0
>2
>>>int("  35 ") #去掉空格
>35
>>>int("35",8)  #八进制
>29

ord函数和chr函数

>>>ord('a')  #ASCII码值
>97
>>>ord('中') #汉字‘中’的Unicode码
>20013
>>>chr(97)   #参数类型为整形
>'a'

bin函数,oct函数,hex函数

>>>bin(3)   #0b为默认
>'0b11'      #二进制
>>>oct(10) 
>'0o12'      #八进制
>>> hex(15)
>'0xf'       #十六进制

语句

赋值语句

  • 基本形式是”变量=值“的形式
  • 例:基本赋值语句
>>>x = 1
>>>y = 2     #常量给变量
>>>k = x+y   #表达式给变量
>>>print(k)
>3
>>>x,y = 4,8 #序列赋值
>>>x
>4
>>>y
>8
>>>x,y="ab"
>>>x
>'a'
>>>y
>'b'

#交换变量,不同于C语言
>>>a=4
>>>b=8
>>>a,b=b,a
>>>a
>8
>>>b
>4

>>>i,j=[1,2,3]
Traceback (most recent call last) :
	File”<pyshell#15>" , line 1,in <module>
		i, j=[1,2,3]
ValueError: too many values to unpack (expected 2)
>>>i,*j=[1,2,3]
>>>i
>1
>>>j
>[2,3]

#python支持多变量的赋值
>>>a=b=c=5
>>>print(a,b,c)
>5 5 5
>>>b=b+6
>>>print(a,b,c)
>5 11 5

if语句(分支语句)

if 逻辑表达式:
 语句块1
else:
 语句块2

Created with Raphaël 2.2.0 start 逻辑表达式 语句块1 end 语句块2 yes no
#判断奇偶性
x=int(input())
if x%2 ==0:
	print("这是一个偶数")
else:
	print("这是一个奇数")

例:为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y (元)与月用水量x (吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x-17.5,小数 部分保留2位。请编写程序实现水费的计算。

x = float(input())
if x <= 15:
	y = 4*x/3
else:
	y=2.5*x-17.5
print(round(y,2)) #保留两位小数

for语句(循环语句)

for variable in 列表:
 语句块

Created with Raphaël 2.2.0 start 列表 语句块 end yes no

range函数

产生特定区间的自然数数列
range(start, stop, step)。
 start:计数从start开始。默认是从0开始。
 例如 range(5)等价于range(0,5)
 stop:计数到stop结束,但不包括stop.
 例如: list(range(0,5))是[0,1,2,3,4]没有5
 step:步长,默认为1。
 例如: range(0,5)等价于range(0, 5, 1)

#实例
>>>list(range(10))
>[0,1,2,3,4,5,6,7,8,9]
>>>list(range(1,10))
>[1,2,3,4,5,6,7,8,9]
>>>list(range(1,10,4))
>[1,5,9]
>>>list(range(0,-10,-1))
>[0,-1,-2,-3,-4,-5,-6,-7,-8,-9]
#例:输入n (n>=10) ,求1+2+...+n之和。
n = int(input())
result=sum(list(range(1,n+1,1)))
print(result)

#例:输入n (n>=5)求n!
n = int(input())
factor = list(range(1,n+1))
f=1
for i in factor:
	f = f*i
print(f)

推导式

  • 列表推导式
  • 字典推导式
  • 集合推导式

列表推导式

列表
列表是python最常用数据类型之一:

  • 由零个或多个元素组成,元素之间用逗号分开,
  • 整个列表被方括号所包裹
  • 元素类型可以相同也可以不同
  • 通过序号可以引用列表中的元素
  • 支持加法、乘法、比较、索引、切片操作等等
#加法
>>>[1,2,3]+['c','java','python']
>[1, 2, 3, 'c', 'java', 'python']
#乘法
>>>[1]*10
>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
#比较
>>>[1,2,3]<[2,3,4]
>True
#索引
>>>empty_list=[] #空列表
>>>weekdays=['Monday','Tuesday','Wednesday','Thursday','Friday']
>>>weekdays[2]
>'Wednesday'

列表推导式

  • 列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。
  • 它可以将循环和条件判断结合,从而避免语法冗长的代码,同时提高程序性能。
  • 基本格式:
    [ expression for item in iterable ]
>>>n1 = [2*number for number in[1,2,3,4,5]]
>>>n1
>[2, 4, 6, 8, 10]

带条件的列表解析
[expression for item in iterable if condition]

#无条件
>>> n1=[number for number in range(1,8)] 
>>> n1
>[1, 2, 3, 4, 5, 6, 7]
#带条件
>>> n1=[number for number in range(1,8) if number % 2 == 1]
>>> n1
>[1, 3, 5, 7]
#实例1:求1+1/2+...+1/20之和
a=sum([1/i for i in range(1,21)])
print(a)

#实例2:求1-1/2+1/3-1/+...之前n项和(n>=10)
n=int(input())
a=sum([1/i if i%2==1 else -1/i for i in range(1,n+1)])
print(a)

#实例3:求6+66+666+... +666.. .666
n=int(input())
print(sum([int('6'*i) for i in range(1,n+1)]))
#字符串法
>>>[int('6'*i) for i in range(1,10)]
>[6, 66, 666, 6666, 66666, 666666, 6666666, 66666666, 666666666]
n=int(input())
print(sum([int('6'*i) for i in range(1,n+1)]))

格式化输出

format()函数

基本格式:str.format()

>>>x=3.14159
>>>y=2*x*3
>>>print("{0:.2f} {1:.2f}".format(x,y))
>3.14   18.85
# 0和1表示format函数中的第一和第二 个参数
# .2f表示小数部分保留两位,四舍五入

例题1:输入2个正整数lower和upper (lower<upper<100),输出一张取值范围为[lower, upper]且每次增加2华氏度的 华氏摄氏温度转换表,结果小数部分保留一位。温度转换的计算公式:
   C=5X(F-32)/9
其中: C表示摄氏温度,F表示华氏温度。

lower,upper = input().split()
lower,upper = int(lower),int(upper)
for i in range(lower,upper+1,2):
    print(i,"{:.1f}".format(5*(i-32)/9))

例题2:课后题:求交错序列前N项和
输入正整数N,输出序列和,结果保留三位小数
  1-2/3+3/5-4/7+5/9-6/11+…前N项

#不采用列表推导式
n = int(input())
result = 0
for i in range(1,n+1):
    if i%2==1:
        result = result + i/(2*i-1)
    else:
        result = result - i/(2*i-1)
print("{0:.3f}".format(result))

#列表推导式如下
n = int(input())
alist = [i/(2*i-1) if i%2==1 else -i/(2*i-1) for i in range(1,n+1)]
result = sum(alist)
print("{:.3f}".format(result))

故 使用列表推导式可以大幅减代码行数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值