一 内置函数和库
二 控制流
* if condition_1:
statement_block_1
* elif condition_2:
statement_block_2
* else:
statement_block_3
x = 114514
if x%3 == 0:
print(x, "能被3整除")
else:
print(x, "不能被3整除")
“闰年”:公历年份被4整除,且若该年可被100整除,则必须同时被400整除。
#year = input("请输入您想查询的年份:")
year = int(year)
if year < 0:
print("silly b")
elif year % 400 == 0:
print("这一年是闰年")
elif year % 4 == 0:
print("这一年是闰年")
else:
print("这一年不是闰年")
#age = int(input("请输入你家狗狗的年龄: "))
if age < 0:
print("silly b")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
elif age > 2:
human = 22 + (age -2) * 5
print("对应人类年龄: ", human)
2 while
i = 1
while condition:
statement
i = i + 1
#前100数之和
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
#while 和 else一起使用
count = 0
while count < 6:
print (count, " 小于 6")
count = count + 1
else:
print (count, " 大于或等于 6")
3 for
for in :
else:
for i in 'Python':
print(i)
for i in range(0,10,2):
print(i)
dict = {'name':['Sim','Zhang','Wang'],
'age':[27,24,28],
'gender':['M','F','M'],
'add':['JS','ZJ','AH']}
for key,values in dict.items():
print(key,'-->',values)
x = 10
if x>1:
for i in range(2, x):
if x%i==0:
print(x,"不是质数")
print(i,"是一个质因子")
break
else:
print(x,"是质数")
else:
print(x,"不是质数")
break和continue语句及循环中的else子句
break 语句可以跳出 for 和 while 的循环体。
如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
for letter in 'silly b': # 第一个实例
if letter == 'y':
break
print ('当前字母为 :', letter)
for letter in 'silly b': # 第一个实例
if letter == 'y':
continue
print ('当前字母为 :', letter)
var = 10 # 第二个实例
while var > 0:
print ('当前变量值为 :', var)
var = var -1
if var == 5:
break
var = 10 # 第二个实例
while var > 0:
var = var -1
if var == 5:
continue
print ('当前变量值为 :', var)
Python pass是空语句,是为了保持程序结构的完整性
#可以用enumerate来同时循环索引和值
sequence = [12, 34, 34, 23, 45, 76, 89]
for i, j in enumerate(sequence):
print(i, j)
people_rows = ["希腊,索福克勒斯","俄罗斯,普希金","法国,莫里哀","英国,拜伦","中国,老子","印度,泰戈尔","德国,歌德","中国,李白","俄罗斯,契诃夫","法国,德彪西"]
split_list = []
for row in people_rows:
split_row = row.split(',') # 以逗号分隔每个字符串
split_list.append(split_row) # 将分隔后的字符串存入新的列表
for i in split_list:
print(i) # 查看嵌套列表
从split_list中遍历挑选出所有中国的名人,并将他们的名字存为列表china_people
三 函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def area(width, height):
return width * height
area(3,4)
定义一个二次函数求根的函数
# 最大公约数(Great Common Denominator):同时被两个数整除的最大正整数
def gcd(a,b):
# 保证a大b小
if b > a:
a, b = b, a
while a % b != 0: # 当a不整除b(余数不为0)的时候
a,b = b, a%b # b->a, a%b->b
return b
函数的参数
def power(x):
return x * x
#X就是必选参数
#当我们调用power函数时,必须传入有且仅有的一个参数x
#如果我们要计算x3怎么办?可以再定义一个power3函数,但是如果要计算x4、x5……怎么办?我们不可能定义无限多个函数。
#你也许想到了,可以把power(x)修改为power(x, n),用来计算x**n
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
#由于我们经常计算x2,所以,完全可以把第二个参数n的默认值设定为2,而不用每次都输入
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:
一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);
二是如何设置默认参数。
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
#在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个
#给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……
## *nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见
##定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
calc([1,2,3])
##可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
##而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
#函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数
person('Michael', 30)
##也可以传入任意个数的关键字参数:
person('Adam', 45, gender='M', job='Engineer')
关键字参数有什么用?它可以扩展函数的功能。
比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。
试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
#和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去
extra = {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, city=extra['city'], job=extra['job'])
person('Jack', 24, **extra)
## 如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数
def person(name, age, *, city, job):
print(name, age, city, job)
#和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。
#命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。
但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
##函数的递归
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
#Fibonacci数列
def Fibonacci(i):
if i == 0:
return 0
elif i == 1:
return 1
else:
return Fibonacci(i-1) + Fibonacci(i-2)