Python语法与主流的高级语言有明显差异
-
缺少”{}”对作用域的划分,for、if等逻辑处理顺序通过tab“ ”来定义
-
逻辑判断到处理需要使用":"引导,并在后续语句前添加一级tab。逻辑处理结束后的语句则删除一级tab
-
常用的for循环范围通过range(闭区间,开区间,步长)定义,或者是 in 列表(字典)两种主流方式。前者用于对数字序列的遍历,后者用于对已有列表(字典)的遍历
基础语法代码:
# -- coding: utf-8 --
# python_syntax01.py 通过一个程序来展示 python 基本语法 #
# 覆盖 Python编程 从入门到实践 第2章到第7章内容
################################################################################
print("################################ 字符串 ################################")
# 字符串
## 变量的定义与复制
message="hello,python."
## print() 会对当前消息自动添加字符串尾的换行
print(message) # hello,python.
## string 常用函数
### title() 将每个单词首字母大写,常用人名显示
print(message.title()) # Hello,Python.
### 将字符串全部设置为大写或小写
print(message.upper()) # HELLO,PYTHON.
print(message.lower()) # hello,python.
### 除移字符串开始和结束位置的空白字符
message = " string started with space, and end with space. "
print(message.lstrip()) # string started with space, and end with space.
print(message.rstrip()) # string started with space, and end with space.
print(message.strip()) # string started with space, and end with space.
################################################################################
print("################################# 数字 #################################")
# 数字
## 整数与运算
int_a = 3
int_b = 2
#### str() 将数字转换成字符串形式,常用于字符串拼接
print("int_a + int_b = " + str(int_a+int_b)) # int_a + int_b = 5
print("int_a - int_b = " + str(int_a-int_b)) # int_a - int_b = 1
print("int_a * int_b = " + str(int_a*int_b)) # int_a * int_b = 6
#### 在python 2版本中两整数相除,结果显示仅有截取后的整数部分
print("int_a / int_b = " + str(int_a/int_b)) # int_a / int_b = 1 (Python 2)
#### 乘方运算
print("int_b ** int_a = "+ str(int_b**int_a)) # int_b ** int_a = 8
## 浮点数与运算
float_a = 3.0
float_b = 2.0
print("float_a + float_b = " + str(float_a+float_b)) # float_a + float_b = 5.0
print("float_a - float_b = " + str(float_a-float_b)) # float_a - float_b = 1.0
print("float_a * float_b = " + str(float_a*float_b)) # float_a * float_b = 6.0
print("float_a / float_b = " + str(float_a/float_b)) # float_a / float_b = 1.5 (Python 2)
################################################################################
print("############################### 列表 ###################################")
# 列表
## 定义一个列表
name_list = ["Marry","Ann","Lucy","Fiona"]
print(name_list) # ['Marry', 'Ann', 'Lucy', 'Fiona']
print("指定位置元素:" + name_list[2]) # 指定位置元素:Lucy
print("从列表末尾反向指定位置元素:"+ name_list[-2]) # 从列表末尾反向指定位置元素:Lucy
print("通过len()获取列表长度为" + str(len(name_list))) # 通过len()获取列表长度为4
## 在列表后追加
name_list.append("Cathy")
print(name_list) # ['Marry', 'Ann', 'Lucy', 'Fiona', 'Cathy']
## 在列表中插入
name_list.insert(3, "Jane") #['Marry', 'Ann', 'Lucy', 'Jane', 'Fiona', 'Cathy']
print(name_list)
## 删除列表中指定位置的元素
del name_list[2]
print(name_list) # ['Marry', 'Ann', 'Jane', 'Fiona', 'Cathy']
## 从列表中弹出元素
name = name_list.pop() # pop() 弹出列表尾部元素
print(name_list) # ['Marry', 'Ann', 'Jane', 'Fiona']
print("弹出元素:"+name) # 弹出元素:Cathy
## 从列表制定位置弹出元素
name = name_list.pop(2)
print(name_list) # ['Marry', 'Ann', 'Fiona']
print("弹出元素:"+name) # 弹出元素:Jane
## 根据元素内容删除
name_list.remove("Fiona")
print(name_list) # ['Marry', 'Ann']
## 对列表中的元素进行排序
name_list = ["Martin","Andy","Luis","Frank"]
### 临时性的
print(sorted(name_list)) # ['Andy', 'Frank', 'Luis', 'Martin']
print(sorted(name_list,reverse=True)) # ['Martin', 'Luis', 'Frank', 'Andy']
### 永久性的
print(name_list) # 原始列表 ['Martin', 'Andy', 'Luis', 'Frank']
name_list.sort()
print(name_list) # ['Andy', 'Frank', 'Luis', 'Martin']
name_list.sort(reverse=True)
print(name_list) # ['Martin', 'Luis', 'Frank', 'Andy']
## 对列表中的元素逆序
name_list = ["Marry","Ann","Lucy","Fiona"]
name_list.reverse()
print(name_list) # ['Fiona', 'Lucy', 'Ann', 'Marry']
################################################################################
print("######################### 列表的复制与切片 ##############################")
name_list = ["Martin","Andy","Luis","Frank"]
#### 通过指定开始和结束(不包含)位置获取列表切片.默认开始,结束是列表的队头和队尾+1
print(name_list[1:3]) # ['Andy', 'Luis']
print(name_list[:3]) # ['Martin', 'Andy', 'Luis']
print(name_list[3:]) # ['Frank']
print(name_list[:]) # ['Martin', 'Andy', 'Luis', 'Frank']
#### 列表变量的直接复制是引用的复制,而不产生新的副本。在原列表修改时,复制列表同样发生修改
copy_list = name_list
print(copy_list)
name_list.append("Calvin")
print(name_list)
print(copy_list) # ['Martin', 'Andy', 'Luis', 'Frank', 'Calvin']
#### 通过切片方式的复制,是对原列表创建副本。在原列表修改时,复制列表无影响
copy_list = name_list[:]
del name_list[4]
print(name_list) # ['Martin', 'Andy', 'Luis', 'Frank']
print(copy_list) # ['Martin', 'Andy', 'Luis', 'Frank', 'Calvin']
################################################################################
print("############################### 数值列表 ###############################")
# 数值列表
## 创建序列列表
#### range(start, end, step) 创建序列,默认步长为1
num_list = list(range(12,27))
print(num_list) # [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
num_list = list(range(12,27,2))
print(num_list) # [12, 14, 16, 18, 20, 22, 24, 26]
## 列表统计:最大,最小,求和
print(max(num_list)) # 26
print(min(num_list)) # 12
print(sum(num_list)) # 152
## 列表的解析
squares = [value** 2 for value in range( 1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
################################################################################
print("############################### 元组 ###################################")
# 元组
## 创建不可修改的元素(元组)
const_value = (200,50)
print(const_value[0]) # 200
print(const_value[1]) # 50
## 元组的修改只能对整个元组重新赋值
const_value = (150,100)
print(const_value) #(150, 100)
################################################################################
################################################################################
print("############################ for循环 ###################################")
name_list = ["Marry","Ann","Lucy","Fiona"]
#### 注意不要遗漏for语句最后的冒号,循环内语句通过缩进标记
#### My name is Marry
#### My name is Ann
#### My name is Lucy
#### My name is Fiona
#### Welcome all friends!
for name in name_list:
print("My name is " + name) # 缩进语句表示循环内语句,按需要重复打印
print("Welcome all friends!") # 无缩进语句跳出循环,仅打印一次
################################################################################
print("############################# if判断 ###################################")
user_list = ["john", "anna","tom","bill"]
default_list = ["admin","user","customer"]
new_users = ["Marry", "Nancy","admin","William","JOHN"]
#### Marry, welcome to register
#### Nancy, welcome to register
#### user name adminis conflicted, please choose another name
#### William, welcome to register
#### user name JOHNis existed, please choose another name
for new_user in new_users:
if new_user in default_list:
print("user name " + new_user + "is conflicted, please choose another name")
elif new_user.lower() in user_list:
print("user name " + new_user + "is existed, please choose another name")
else:
print(new_user + ", welcome to register")
user_list.append(new_user.lower())
print(sorted(user_list)) # ['anna', 'bill', 'john', 'marry', 'nancy', 'tom', 'william']
## if语句中的逻辑判断
#### John, welcome come back
#### Anna, welcome come back
#### Tom, welcome come back
#### Bill, welcome come back
#### Marry, welcome come back
#### Manager Nancy, welcome come back
#### Manager William, welcome come back
for user in user_list:
if user == "william" or user == "nancy":
print("Manager " + user.title() + ", welcome come back")
else:
print(user.title() + ", welcome come back")
## if语句中的空列表判断
#### This is a new system!
empty_list = []
if empty_list: # 列表不为空返回True
for user in empty_list:
print("Welcome! " + user)
else:
print("This is a new system!")
################################################################################
print("############################# 数据字典 #################################")
## 定义数据字典
person = {'first_name': 'meng',
'last_name':'cai',
'age':'18',
'job':'enginner'}
## print中的换行显示
print("My name is " + person['last_name'].title()
+" " + person['first_name'].title()
+". I am an " + person['job']) # My name is Cai Meng. I am an enginner
## 数据字典的遍历
#### key-value: job-enginner
#### key-value: first_name-meng
#### key-value: last_name-cai
#### key-value: age-18
for k,v in person.items():
print("key-value: " + k + "-" + v)
## 数据字典键值遍历
#### job
#### first_name
#### last_name
#### age
### 键值遍历方法一(推荐)
for name in person.keys():
print(name)
### 键值遍历方法二
for name in person:
print(name)
## 按顺序遍历数据字典键值
#### age
#### first_name
#### job
#### last_name
for name in sorted(person.keys()):
print(name)
### 数值遍历
#### enginner
#### meng
#### cai
#### 18
for v in person.values():
print(v)
## set()集合来获取不重复值
#### python
#### c
#### java
#### perl
favorate_language = {'anna':'python',
'bob':'c',
'calvin': 'java',
'david':'python',
'ed':'perl',
'fiona':'c'}
for language in set(favorate_language.values()):
print(language)
## 列表存储字典
alian1 = {'color':'green','point':'5','speed':'slow'}
alian2 = {'color':'yellow','point':'10','speed':'medie'}
alian3 = {'color':'green','point':'10','speed':'slow'}
alian4 = {'color':'red','point':'15','speed':'fast'}
alian_list = [alian1, alian2, alian3, alian4]
for alian in alian_list:
print('display an alian: ')
print(alian)
if (alian['color'] == 'green') and (alian['point'] == '10') :
alian['color'] = 'yellow'
print('new alian: ' )
print(alian)
## 在字典中存储列表
prj_team = {'alian':['tom','alice','will'],
'restaurant':['peter','monica', 'zoe','geoge']}
for k,v in prj_team.items():
print("Project: " + k)
for name in v:
print("project " + k + " welcome " + name + " join us")
## 在字典中存储字典
resp_data = {'code':'200',
'data': {'message':'success','login':'caimeng','request':'policyNo'}}
print(resp_data) # {'code': '200', 'data': {'message': 'success', 'request': 'policyNo', 'login': 'caimeng'}}
################################################################################
'''
print("############################# while 循环 ###############################")
# 从键盘输入
in_num = int(raw_input("请输入一个100以内的整数 "))
print("你输入的数字是 " + str(in_num))
## 条件满足退出while循环
while in_num >= 50:
in_num = int(raw_input("请输入一个100以内的整数 "))
print("你输入的数字是 " + str(in_num))
print("条件判断结束")
## break退出while循环,
while True:
in_num = int(raw_input("请输入一个100以内的整数 "))
print("你输入的数字是 " + str(in_num))
if in_num < 20:
print("结束")
break
elif (in_num >=20) and (in_num < 50 ):
print("正常")
else:
print("跳过")
continue
print("可以继续的输入")
print("条件判断结束")
'''
## 通过while动态操作列表
confirmed_list = []
waiting_list = ['NutsShell','FantastyBeast','ClickHouse',
'Poision','FantastyBeast']
#### I have watched FantastyBeast
#### I have watched Poision
#### I have watched ClickHouse
#### I have watched FantastyBeast
#### I have watched NutsShell
while waiting_list:
film = waiting_list.pop()
print("I have watched " + film)
confirmed_list.append(film)
print(confirmed_list) # ['FantastyBeast', 'Poision', 'ClickHouse', 'FantastyBeast', 'NutsShell']
while 'FantastyBeast' in confirmed_list:
confirmed_list.remove('FantastyBeast')
print(confirmed_list) # ['Poision', 'ClickHouse', 'NutsShell']