在“python简介”中,我们已经大致了解了python,那么我们这次学一些基础的东西。学完这篇教程就达到计算机科学基础(B)要求的python编程水平啦!

基本数据类型

在python中,我们有以下数据类型:整数、浮点数、复数。

整数

1
2
3
4
5
6
7
>>>66
66
>>>-175
-175
>>>07
SyntaxError: invalid token
>>>0

二进制,八进制,十六进制

0b或0B 代表二进制
0o或0O 代表八进制
0x 或0X 代表十六进制

1
2
3
4
5
6
>>>0b10
2
>>>0o10
8
>>>0x10
16

整数可以表示很大的数

1
2
3
>>>google=10**50
>>>google
100000000000000000000000000000000000000000000000000

运算符

+ 加法 5+10=15

- 减法 100-5=95

* 乘法 8*9=72

/ 浮点数除法 100/5=20.0

// 整数除法 100//5=20

% 模(求余) 9%4=1

** 幂 2**3=8

浮点数

浮点数也就是小数
1.23,3.14,-9.01
科学计数法:
1.23x10 9 就是1.23e9,
0.000012可以写成1.2e-5。
“e”的前后都不能空,”e”的后面要整数。

浮点数运算

1
2
3
4
5
6
7
8
>>>2.1-2.0==0.1
False #浮点数运算有误差
>>>3.8/0.7
5.428571428571429 #浮点数的整除还是浮点数
>>>3.8//0.7
5.0
>>>3.8%0.7
0.30000000000000004

复数

所谓复数,就是由实部(real)和虚部(imaginary)两部分组成的数,虚部用j 表示。
2+3j
8j
(7+1j)*1j
real 方法取实部,imag 方法取虚部 ,
complex() 函数用于创建一个值为 real + imag * j 的复数。

1
2
3
>>>a=complex(2,1)
>>>a
2+j

数学库math的调用

math库是一个数学库,包含了很多的数 学常数和数学函数
要使用math库,先要用“import math”语 句引入math库

1
2
3
4
5
>>>import math
>>>math.pi
3.141592653589793
>>>math.sqrt(9) #sqrt()表示求平方根
3.0

字符串、布尔值、空值

字符串是以’’或””括起来的任意文本,比如’abc’,”xyz”等等。请注意,’’或””本身 只是一种表示方式,不是字符串的一部分

1
2
3
4
5
6
7
8
>>>"hello world"
'hello world'
>>>"" #空字符串
''
>>>'hello python\n 人身苦短\n 我用python'#可用这种方式表示多行注解 其中“\n“表示换行
'''hello python
人身苦短
我用python''' #三个'表示绝对不间断的字符串

转义字符

\‘ 单引号
\“ 双引号
\a 响铃(我也还不知道什么意思)
\b 退格(Backspace)
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 翻页
\ooo 最多三位 八进制,例如:\12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行

字符串运算符

1
2
3
4
5
6
7
8
>>>"人生苦短"+" 我用Python"
'人生苦短 我用Python'
>>>'2'*3
'222'
>>>type(1) #type 函数是一个内置的函数,调用它就能知道想要查询对象的类型信息
<classint’> #int表示整数型
>>>type(“python”)
<classstr’> #str表示字符串

布尔值

  • 一个布尔变量值只有True、False两种值, 要么是True,要么是False(请注意大小写)
  • 布尔值可通过逻辑运算符和关系运算符计算出来。关系运算符是 <、 <=、 >、 >=、 ==和!=, 逻辑运算符是and、or和not。

空值

空值是Python里一个特殊的值,用None 表示。None不能理解为0

1
2
3
4
>>>bool(None)
False
>>>None ==0
False

运算符、运算优先级

  • 关系运算符实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>>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()
  • 逻辑运算符实例

  • ```python

    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,不需要计算后面的表达式
    True
    3 and 5 #最后一个计算的表达式的值作为整个表达式的值
    5
    3 and 5>2
    True
    not 3
    False
    not 0
    True

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    + 运算符的优先级和结合性实例

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

列表

列表可以由零个或多个元素组成,元素之间用逗 号分开,整个列表被方括号所包裹

1
2
3
4
5
>>>empty_list = [ ] #空列列表
>>>weekdays = ['Monday', 'Tuesday', \
'Wednesday', 'Thursday', 'Friday']
>>>weekdays[2] #下标从0开始
'Wednesday'

列表运算

1
2
3
4
5
6
7
8
9
10
>>>weekdays[4]=5
>>>weekdays
['Monday', 'Tuesday', 'Wednesday',
'Thursday', 5]
>>> [1,2,3]<[1,2,4] #比较列表大小
True
>>> [1,2,3]+[‘c’,‘java’,‘python’] #加法
[1, 2, 3, 'c', 'java', 'python']
>>> [1]*10 #可以用作列表初始化
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

内置转换函数

bool:根据传入的参数的逻辑值创建一个新的布尔值

int:根据传入的参数创建一个新的整数

float:根据传入的参数创建一个新的浮点数

complex:根据传入参数创建一个新的复数

str:创建一个字符串

ord:返回Unicode字符对应的整数

chr:返回整数所对应的Unicode字符

bin:将整数转换成2进制字符串

oct:将整数转化成8进制数字符串

hex:将整数转换成16进制字符串

list:根据传入的参数创建一个新的列表

1
2
3
4
5
6
7
8
>>>bool('str')
True
>>>int(3.6)
3
>>>float(3)
3.0
>>>complex(1,2) #传入数值创建复数
(1+2j)

##int函数用法

1
2
3
4
5
6
7
8
9
10
11
12
13
>>>int() #不传入参数时,得到结果0。
0
>>>int(“02”) #去掉0
2
>>>int(“ 35 “) #去掉空格
35
>>>int(“ 3 5 “) #无法转换
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
int(" 3 5 ")
ValueError: invalid literal for int() with base 10: ' 3 5 '
>>>int(“35”,8) #八进制
29

ord函数和chr函数

1
2
3
4
5
6
7
>>>ord(‘a’) #ASCII码值
97
>>>ord(‘中’) #汉字‘中’的Unicode码
20013
>>>chr(97) #参数类型为整数
'a' #思考:8与”8”如何转换?

bin函数, oct函数, hex函数

1
2
3
4
5
6
>>>bin(3) #0b为默认
'0b11‘
>>>oct(10)
'0o12
>>> hex(15)
'0xf'

str函数和list函数

1
2
3
4
>>>str(123)
123
list('abcd') #传入字符串,创建列表
['a', 'b', 'c', 'd']

表达式

表达式是可以计算的代码片段,由常量、变量和运算符或函数按规则构成,返回运算结果

计算表达式 cos(a(x+1)+b)/2,a等于2,x等于5,b等于 3

1
2
3
>>>import math
>>>math.cos(2*(5+1)+3)/2
-0.37984395642941066

计算表达式:当n是奇数时为1,偶数时为0

1
2
3
4
>>>n=int(input())
5
>>>1 if n%2==1 else 0 #条件表达式
1

赋值,条件和for语句

Python语言常用的有赋值、if语句和for语句。语句通常是一行一条语句。如一行中有多条语句,则用分号(;)分开,如语句太长要跨行时,可以用续行符(\)跨行表示一个语句。

赋值语句

基本形式是“变量=值”的形式

1
2
3
4
x=1
y=2
k=x+y
print(k)

程序输出:3

序列赋值

1
2
3
4
5
6
7
8
>>>x,y=4,8
>>>print(x,y)
48
>>>a,b="34"
>>>a
'3'
>>>b
'4'

交换a,b值

1
2
3
4
5
a=int(input())
b=int(input())
print(a,b)
a,b=b,a #a和b交换
print(a,b)

数量不等的序列赋值

1
2
3
4
5
>>>i,*j=[1,2,3]
>>>i
1
>>>j
[2, 3]

多变量赋值

1
2
3
4
5
6
>>>a=b=c=5
>>>print(a,b,c)
555
>>>b=b+6
>>>print(a,b,c)
5 11 5

赋值和“+”、“-”、“*”和 “\”组合

1
2
3
4
5
6
7
8
>>>i=2
>>>i*=3
>>>I
6
>>>j=5
>>>j*=3+1
>>>j
20

条件语句

if语句

if 逻辑表达式:

语句块1

else:

语句块2

1
2
3
4
5
x=int(input())
if x%2==0:
print("偶数") #这里用了缩进
else:
print("奇数")

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

1
2
3
4
5
6
x=float(input())
if x<=15:
y=4*x/3
else:
y=2.5*x-17.5
print("{:.2f}".format(y))

for语句

for variable in 列表:

语句块

for后面的变量先被赋给列表的第一个值, 并执行下面的代码块。然后变量被赋给列表中的第二个值,再次执行代码块。该过程一 直继续,直到穷尽这个列表。语句块缩进表示它是属于for代码块

遍历列表

1
2
for i in [1,2,3,4]:
print(i,end='') #一样需要缩进

输出:1 2 3 4

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)

range函数实例

1
2
3
4
5
6
7
8
>>> list(range(10))  #从0开始到10,不包括10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
>>> list(range(1,11)) #从1开始到11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 4)) #步长为4
[0, 4, 8, 12, 16, 20, 24, 28]
>>> list(range(0, -10, -1)) #步长为负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

sum函数

它可以求列表的和

如何求1+2+3+…+10的和?

1
2
3
4
>>>sum([1,2,3,4,5,6,7,8,9,10])
55
>>>sum(list(range(1,11)))
55

输入n(n>=10),求 1+2+…+n之和。

1
2
3
n=int(input())
s=sum(list(range(n+1)))
print(s)

输入n(n>=5)求n!

1
2
3
4
5
6
n=int(input())
factor=list(range(1,n+1))
f=1
for i in factor:
f=f*i
print(f)

列表推导式

列表推导式是从一个或者多个列表快速简洁地创建列表的一种方法,又被称为列表解析。 它可以将循环和条件判断结合,从而避免语 法冗长的代码,同时提高程序性能。

[ expression for item in iterable ]

1
2
3
>>>nl = [2*number for number in [1,2,3,4,5]]
>>>nl
[2, 4, 6, 8, 10]

带条件的列表解析

[expression for item in iterable if condition]

1
2
3
>>> number_list=[number for number in range(1,8) if number % 2 == 1]
>>> number_list
[1, 3, 5, 7]

求1+1/2+…+1/20之和

1
print(sum([1/i for i in range(1,21)]))

求 1-1/2+1/3-1/4+…之前n项和(n>=10)

1
2
n=int(input())
print(sum([1/i if i%2==1 else -1/i for i in \ range(1,n+1)]))

列表推导式的if条件和条件表达式同时使用

求 1-1/3+1/5-1/7+…-1/47+1/49

1
2
3
>>> [i if i%4==1 else –i for i in range(1,50) if i %2==1]
[1, -3, 5, -7, 9, -11, 13, -15, 17, -19, 21, -23, 25, -27, 29, -31, 33, -35, 37, -39,41, -43, 45,-47, 49]
print(sum([1/i if i%4==1 else -1/i for i inrange(1,50) if i%2==1]))

求 6+66+666+…+666…666

1
2
n=int(input())
print(sum([int('6'*i) for i in range(1,n+1)]))

#格式化输出

format()函数是Python的内置函数,用来设置输出格式

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

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

1
2
3
4
lower,upper=input().split() # 一行输入两个数,是字符串类型
lower,upper=int(lower),int(upper) # 字符串变成整数
for i in range(lower,upper,2):
print(i,"{:.1f}".format(5*(i-32)/9))

结束语

本次内容到这就结束啦!有问题或错误欢迎联系QQ:515310897