python编程基础概念:
程序: 一组能让计算机识别和执行的指令;
电子计算机:能够执行程序的机器;
冯诺依曼体系架构:
CPU由运算器和控制器组成;
运算器:完成各种算术运算,逻辑运算,数据传输等数据加工处理;
控制器:控制程序的执行;
存储器:记忆程序和数据,如内存;
输入设备:将数据或程序输入计算机中,如键盘鼠标等;
输出设备:将数据或程序的处理结果展示给用户,如显示器打印机等;
CPU中还有寄存器和多级缓存;
编程基础:
计算机语言:人与计算机之间交互的语言;
机器语言:机器指令的集合,机器指令是一定位数组成二进制的0和1的序列;
汇编语言:用一些助记符号代替机器指令,成为汇编语言;
语言分类:
低级语言:面向机器的语言,包括机器语言、汇编语言;
高级语言:接近自然语言和数学语言的计算机语言;
高级语言的发展:
非结构化语言 —> 结构化语言 —> 面向对象语言 —> 函数式语言
程序Program:
程序 = 数据结构 + 算法
数据是一切程序的核心;
数据结构是数据在计算机中的类型和组织方式;
算法是处理数据的方式,算法有优劣之分;
基础语法:
注释:
1
2
|
#标注的文本
“”“ ”“” 或 ‘’‘ ‘’’包裹的文本
|
数字:
1
|
整数、浮点数
|
字符串:
1
2
3
|
使用 ' 或 " 引用的字符的序列;
使用
''
' 或
""
" 可以跨行;
字符串前面加上 r 或 R 前缀,表示该字符不做特殊的处理;
|
转义序列:
1
2
|
\\ \t \r \n \
' \''
前缀 r, 把里面的所有字符当普通字符对待;
|
缩进:
1
2
|
采用缩进的方式表示层次关系;
约定使用4个空格缩进;
|
续行:
1
2
|
在行尾使用"\";
如果使用括号,认为括号内是一个整体,内部跨行不用"\";
|
常量:
1
2
|
一旦赋值就不能改变值的标识符;
python中无法定义常量;
|
变量:
1
|
赋值后,可以改变值的标识符;
|
python的语言类型:
1
2
3
4
5
6
|
python是动态强类型语言;
动态编译语言:
不用事先声明类型,随时可赋值为其他类型;
编程时不知道是什么类型,很难判断;
强类型语言:
不同类型之间,必须先强制类型转换为同一类型;
|
运算符:
1
2
|
算数运算符:自然除
'/'
结果是浮点数,整除
'//'
;注:2.x中
'/'
和
'//'
都是整除;
位运算符:&,|, ~,^,<<,>>(按位与,按位或,安位取反,按位异或,左移,右移)
|
练习题:
练习1:
给定一个不超过五位的正整数,判断其有几位并打印各个位的数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
val
=
input
(
'>>>'
)
val
=
int
(val)
if
val >
=
1000
:
#fold
if
val>
=
10000
:
n
=
5
print
(n)
else
:
n
=
4
print
(n)
else
:
if
val>
=
100
:
n
=
3
print
(n)
elif
val >
=
10
:
n
=
2
print
(n)
else
:
n
=
1
print
(n)
for
i
in
range
(n,
0
,
-
1
):
pN
=
val
/
/
(
10
*
*
(i
-
1
))
val
=
val
%
(
10
*
*
(i
-
1
))
print
(pN, end
=
' '
)
|
练习2:
求100以内所有奇数的和(2500)。
1
2
3
4
5
|
sum
=
0
for
i
in
range
(
1
,
101
):
if
i
%
2
!
=
0
:
sum
+
=
i
print
(
sum
)
|
练习3:
求1-5的阶乘之和。
1
2
3
4
5
6
7
|
sum
=
0
for
i
in
range
(
1
,
6
):
factorial
=
1
for
j
in
range
(
1
, i
+
1
):
factorial
*
=
j
sum
+
=
factorial
print
(
sum
)
|
练习4:
打印九九乘法表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
for
i
in
range
(
1
,
10
):
for
j
in
range
(
1
, i
+
1
):
print
(
'{1} x {0} = {2:<2}'
.
format
(i, j, i
*
j), end
=
' '
)
# print('{1} x {0} = {2}'.format(i, j, i*j), '\t', end=' ') # '\t'制表符.
print
()
# {2:<2}对应i*j, :<2冒号是分隔符号, <表示左对齐,2表示宽度.
1
x
1
=
1
1
x
2
=
2
2
x
2
=
4
1
x
3
=
3
2
x
3
=
6
3
x
3
=
9
1
x
4
=
4
2
x
4
=
8
3
x
4
=
12
4
x
4
=
16
1
x
5
=
5
2
x
5
=
10
3
x
5
=
15
4
x
5
=
20
5
x
5
=
25
1
x
6
=
6
2
x
6
=
12
3
x
6
=
18
4
x
6
=
24
5
x
6
=
30
6
x
6
=
36
1
x
7
=
7
2
x
7
=
14
3
x
7
=
21
4
x
7
=
28
5
x
7
=
35
6
x
7
=
42
7
x
7
=
49
1
x
8
=
8
2
x
8
=
16
3
x
8
=
24
4
x
8
=
32
5
x
8
=
40
6
x
8
=
48
7
x
8
=
56
8
x
8
=
64
1
x
9
=
9
2
x
9
=
18
3
x
9
=
27
4
x
9
=
36
5
x
9
=
45
6
x
9
=
54
7
x
9
=
63
8
x
9
=
72
9
x
9
=
81
|
扩展:
方法1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
for
i
in
range
(
1
,
10
):
for
j
in
range
(
1
,
10
):
if
i > j:
print
(
' '
*
13
, end
=
'')
else
:
print
(
'{0} x {1} = {2:<4}'
.
format
(i, j, i
*
j), end
=
' '
)
print
()
1
x
1
=
1
1
x
2
=
2
1
x
3
=
3
1
x
4
=
4
1
x
5
=
5
1
x
6
=
6
1
x
7
=
7
1
x
8
=
8
1
x
9
=
9
2
x
2
=
4
2
x
3
=
6
2
x
4
=
8
2
x
5
=
10
2
x
6
=
12
2
x
7
=
14
2
x
8
=
16
2
x
9
=
18
3
x
3
=
9
3
x
4
=
12
3
x
5
=
15
3
x
6
=
18
3
x
7
=
21
3
x
8
=
24
3
x
9
=
27
4
x
4
=
16
4
x
5
=
20
4
x
6
=
24
4
x
7
=
28
4
x
8
=
32
4
x
9
=
36
5
x
5
=
25
5
x
6
=
30
5
x
7
=
35
5
x
8
=
40
5
x
9
=
45
6
x
6
=
36
6
x
7
=
42
6
x
8
=
48
6
x
9
=
54
7
x
7
=
49
7
x
8
=
56
7
x
9
=
63
8
x
8
=
64
8
x
9
=
72
9
x
9
=
81
8
x
8
=
64
8
x
9
=
72
9
x
9
=
81
|
方法2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
for
i
in
range
(
1
,
10
):
print
(
' '
*
13
*
(i
-
1
), end
=
'')
for
j
in
range
(i,
10
):
print
(
'{} x {} = {:<4}'
.
format
(i, j, i
*
j), end
=
' '
)
print
()
1
x
1
=
1
1
x
2
=
2
1
x
3
=
3
1
x
4
=
4
1
x
5
=
5
1
x
6
=
6
1
x
7
=
7
1
x
8
=
8
1
x
9
=
9
2
x
2
=
4
2
x
3
=
6
2
x
4
=
8
2
x
5
=
10
2
x
6
=
12
2
x
7
=
14
2
x
8
=
16
2
x
9
=
18
3
x
3
=
9
3
x
4
=
12
3
x
5
=
15
3
x
6
=
18
3
x
7
=
21
3
x
8
=
24
3
x
9
=
27
4
x
4
=
16
4
x
5
=
20
4
x
6
=
24
4
x
7
=
28
4
x
8
=
32
4
x
9
=
36
5
x
5
=
25
5
x
6
=
30
5
x
7
=
35
5
x
8
=
40
5
x
9
=
45
6
x
6
=
36
6
x
7
=
42
6
x
8
=
48
6
x
9
=
54
7
x
7
=
49
7
x
8
=
56
7
x
9
=
63
8
x
8
=
64
8
x
9
=
72
9
x
9
=
81
9
x
9
=
81
|
练习5:
打印100以内的斐波那契数列。
1
2
3
4
5
6
|
n1
=
0
n2
=
1
for
_
in
range
(
100
):
n1, n2
=
n2, n1
+
n2
if
n1 <
100
:
print
(n1)
|
练习6:
求斐波那契数列第101项。
1
2
3
4
5
6
7
8
9
|
n1
=
0
n2
=
1
count
=
0
while
True
:
n1, n2
=
n2, n1
+
n2
count
+
=
1
if
count
=
=
101
:
print
(n1)
break
|
练习7:
打印菱形。
方法1:
1
2
3
4
5
6
7
8
|
num
=
8
for
i
in
range
(
1
,
22
,
2
):
if
i <
12
:
num
-
=
1
print
(
' '
*
num
+
'*'
*
i)
else
:
num
+
=
1
print
(
' '
*
num
+
'*'
*
(
22
-
i))
|
方法2:
1
2
3
4
5
6
|
for
i
in
range
(
-
3
,
4
):
if
i <
0
:
prespace
=
-
i
else
:
prespace
=
i
print
(
' '
*
prespace
+
'*'
*
(
7
-
prespace
*
2
))
|
练习8:
打印如下形状:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
for
i
in
range
(
-
3
,
4
):
if
i <
0
:
print
(
' '
*
(
-
i)
+
'*'
*
(
4
+
i))
elif
i
=
=
0
:
print
(
'*'
*
7
)
else
:
print
(
' '
*
3
+
'*'
*
(
4
-
i))
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
|
完!
本文转自 羽丰1995 51CTO博客,原文链接:http://blog.51cto.com/13683137989/1965841