typora-copy-images-to: Python 编程导论
文章目录
Python 编程导论 Chapter 2 —— Python 简介
-
编程语言的特点
- 低级与高级,使用机器层次的指令还是语言设计者的抽象操作
- 通用性和专注性,sql只适用于数据库提取信息,不能建立操作系统
- 解释运行与编译运行,源代码通过解释器直接执行还是先进行编译
- 前者更易调试
- 后者速度更快更小
-
Python的静态语义检查薄弱
2.1 Python 的基本元素
- Python 程序有时称为脚本,是一系列的定义和命令
- Python 的解释器,也称为shell,用来求值并执行命令
2.1.1 对象、表达式和数值类型
-
对象是Python程序处理的核心,其类型为:
- 标量 ,对象不可分,视为原子
- int 整数
- float 实数
- bool 布尔值 True & False
- None 只有一个值,在4.1讨论
- 非标量,对象可分,如字符串,有内部结构
- 标量 ,对象不可分,视为原子
-
对象和操作符可以组成表达式
- ==用来检验两个表达式是否相等
- != 用来检验两个表达式是否不等
-
操作符具有优先级,同时通过括号可以改变计算顺序
-
bool类型上的基本操作符
- and 两者都为True
- or 至少有一个为True
- not 如果 为 False 值为 True
2.1.2 变量与赋值
-
在Python中,变量仅是名称,没有其他意义。一个对象可以有一个或多个名称与之关联,也可以不关联任何名称
-
Python变量名是大小写敏感的,可以包含大写字母、小写字母、数字(但不能以数字开头)和特殊字符 _
-
Python支持多重赋值。以下语句:x, y = 2, 3
x, y = 2, 3
x, y = y, x
print ('x =', x)
print ('y =', y)
# 交换两个变量的绑定
2.1.3 Python IDE
- 集成开发环境下使用文本编辑器编写程序
- Anaconda
- Canopy
2.2 程序分支
-
分支型程序更有价值。最简单的分支语句是条件语句
-
条件语句分为三个部分:
- 测试,取值True or False
- 代码块,True 值使用
- 可选代码块,False 值使用
# 条件语句
if Boolean expression:
block of code
else:
block of code
if x%2 == 0:
print 'Even'
else:
print 'Odd'
print 'Done with conditional'
# 条件语句的嵌套
if x%2 == 0:
if x%3 == 0:
print 'Divisible by 2 and 3'
else:
print 'Divisible by 2 and not by 3'
elif x%3 == 0:
print 'Divisible by 3 and not by 2'
# 复合布尔表达式 and
if x < y and x < z:
print('x is least')
elif y < z:
print('y is least')
else:
print('z is least')
2.3 字符串和输入
-
类型检查的存在是好事
-
3* ‘a’ 相当于’a’+‘a’+‘a’
-
字符串是Python中的序列类型之一。所有序列类型都可以执行以下操作:
- len()求字符串的长度
- 使用索引从字符串提取单个字符
- 可以分片操作
'abc'[1:3] ='bc'
、'abc'[:]
就相当于'abc'[0:len('abc')]
2.3.1 输入
- input 函数可以直接接受用户的输入
>>> n = input('Enter an int: ')
Enter an int: 3
>>> print(type(n))
<type 'str'>
- 当一个 float 值被转换成 int 值时,数值是被截断的(不是四舍五入). 例如, int(3.9) 的值是 int 3
2.3.2 杂谈字符编码
# 你可以告诉Python使用何种编码方式
# -*- coding: encoding name -*-
# -*- coding: utf-8 -*-
2.4 迭代
- 需要程序多次做同一件事情的时候,可以使用迭代语句
与条件语句类似,它从一个测试条件开始。如果测试条件取值为 True ,程序就执行一次循环体,然后重新检查测试条件。一直重复这个过程,直到测试条件为 False ,此后程序控制权就传递给迭代语句后面的代码
# Square an integer, the hard way
x = 3
ans = 0
itersLeft = x
while (itersLeft != 0):
ans = ans + x
itersLeft = itersLeft - 1
print(str(x) + '*' + str(x) + ' = ' + str(ans))
# 当程序第四次检查测试条件时,测试条件的值为 False
# Find a positive integer that is divisible by both 11 and 12
x = 1
while True:
if x % 11 == 0 and x % 12 == 0:
break
x += 1
print(x)
练习题
- 编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数。如果用户没
有输入奇数,则输出一个消息进行说明
# 我的思路
# 先让用户输入10个数
# 找出其中的奇数
# 排序打印最大值
number_list = []
for number_imput in range(10):
num = int(input(f"Please input your {number_imput}th number : "))
number_list.append(num)
odd_list = []
for number in number_list:
if number % 2 != 0:
odd_list.append(number)
if odd_list == None :
print("no odd number is found")
last_list = sorted(odd_list)
print(f"The largest odd number you input is {last_list[-1]}!")
# 样板思路:
def return_biggest_number(A_LIST):
odd=[]
for each_num in A_LIST:
if each_num%2==1:
odd.append(each_num)
if odd==None:
print('no odd number is found')
return sorted(odd)[-1]
num_list=[]
for each_num in range(10):
num = input('input the '+str(each_num)+'th number')
num_list.append(int(num))
print(return_biggest_number(num_list))