Python基础之函数⼀、函数定义
⼆、作⽤:提⾼代码的可重⽤性和可维护性(代码层次结构更清晰)。
三、函数返回值:
四、实例
# 定义根据⽉份,判断季节的⽅法.
def get_season(month):
if month < 1 or month > 12:
return"输⼊有误"
if month <= 3:
return"春天"
if month <= 6:
return"夏天"
if month <= 9:
return"秋天"
return"冬天"
print(get_season(5))
print(get_season(15))
# 练习:定义检查列表是否具有相同元素的⽅法
def is_repeating(list_target):
for r in range(len(list_target) - 1):
for c in range(r + 1, len(list_target)):
if list_target[r] == list_target[c]:
return True # 退出⽅法(可以退出两层循环)
return False
re01 = is_repeating([3,44,5])
re01 = is_repeating([3,44,5,44])
print(re01)
#练习:定义在控制台中显⽰直⾓三⾓形的函数
def print_triangle(height,char):
"""
打印三⾓型
:
param height: 三⾓形⾼度
:param char: 组成三⾓型的字符
:return:
"""
for r in range(height):
for c in range(r+1):
print(char, end="")db2截取字符串函数
print()
print_triangle(8,"*")
print_triangle(5,"#")
print_triangle(4,"?")
# 练习:定义在控制台中显⽰矩形的函数
css3 animation可以产生( )动画效果def print_rect(r_count,c_count,char):
for r in range(r_count):# 0 1 2
for c in range(c_count):#01234 01234 01234
print(char,end = "") # 在⼀⾏输出
print() # 换⾏
print_rect(2,3,"*")
print_rect(5,2,"#")
# 参数:变量
# 函数调⽤者 告诉 函数定义者的信息
# 1. 参照下列代码,定义判断是否是奇数的⽅法.
# number = int(input("请输⼊整数:"))
# if number % 2 == 1:
# print("奇数")
# else:
# print("偶数")
def is_uneven(number):
# ⽅法1:传统⽅法
# if number % 2 == 1:
# return True
# else:
# return False
# ⽅法2:条件表达式
# return True if number % 2 == 1 else False
# ⽅法3:bool表达式
return number % 2 == 1
re = is_uneven(6)
print(re)
# 2.参照下列代码,定义根据⽉份返回天数的⽅法.
# 要求:考虑2⽉,如果是闰年返回29天,否则返回28天.# month = int(input("请输⼊⽉份:"))
# if month < 1 or month > 12:
# print("输⼊有误")
# elif month == 2:
# print("28天")
# elif month == 4 or month == 6 or month == 9 or month == 11: # print("30天")
# else:
# print("31天")
# 向外返回的结果return,其类型应该统⼀.
# ⽅法1:传统⽅法:
# def get_day_by_month(year,month):
# if month < 1 or month > 12:
# return 0
# elif month == 2:
# if year % 4 == 0 and year % 100 != 0 or year % 400 ==0: # return 29
# else:
# return 28
# elif month == 4 or month == 6 or month == 9 or month == 11: # return 30
# else:
# return 31
# ⽅法2:定义函数嵌套法+条件表达式精简代码
def is_leap_year(year):
return year % 4 == 0 and year % 100 != 0 or year % 400 == 0 def get_day_by_month(year, month):
if month < 1 or month > 12:
return 0
if month == 2:
return 29 if is_leap_year(year) else 28
if month in (4, 6, 9, 11):
return 30
return 31
day = get_day_by_month(2019,13)
print(day)
# 3.参照下列代码,定义获取最⼩值⽅法.
# min = list01[0]
# for i in range(1, len(list01)):
# # 发现更⼤的,则替换假设的.
# if min > list01[i]:
# min = list01[i]
# print(min)
def get_min(list_target):
min = list_target[0]
for i in range(1, len(list_target)):
if min > list_target[i]:
min = list_target[i]
return min
min = get_min([2, 3, 45, 1, 9, 3])
print(min)
# 4. 定义函数,判断字符串中存在的中⽂字符数量.
# 中⽂编码范围:0x4E00 ord(字符) 0x9FA5
def get_chinese_char_count(str_target):
count = 0
for item in str_target:
if 0x4E00 <= ord(item) <= 0x9FA5:
count += 1
return count
count = get_chinese_char_count("a你sid你f好ln")
print(count)
# 5. 扩展练习(定义函数,返回指定范围内的素数)
# 例如:1--100
# ⽅法1:传统⽅法
# def get_prime(bengin,end):
# list_prime = []
# for number in range(bengin,end+1):
# if number < 2:
# pass
# else:
# for i in range(2, number):
# if number % i == 0:
# break # 如果有结论了,就不需要在和后⾯的数字⽐较了# else:
# list_prime.append(number)
# return list_prime
# ⽅法2:⾃定义函数相互之间嵌套法
def get_prime(bengin, end):
"""
⽣成指定范围内的所有素数
:param bengin: 开始
:param end: 结束
:return: 范围内的所有素数
"""
list_prime = []
for number in range(bengin, end + 1):
if is_prime(number):
list_prime.append(number)
return list_prime
def is_prime(number):
"""
判断是否为素数
:param number: 需要判断的数
:return: 是不是素数
"""
if number < 2:
python基础代码100例return False # 不是素数
# 判断能否被中间的数字整除
for i in range(2, number):
if number % i == 0:
return False # 不是素数
return True # 是素数
primes = get_prime(5, 100)
print(primes)
primes = get_prime(-5, 50)
print(primes)
五、函数重构代码思想
案例:未重构前代码如下
shang_pin_info = {
101: {"name": "屠龙⼑", "price": 10000},
102: {"name": "倚天剑", "price": 10000},
103: {"name": "九阴⽩⾻⽖", "price": 8000},
104: {"name": "九阳神功", "price": 9000},
105: {"name": "降龙⼗⼋掌", "price": 8000},
106: {"name": "乾坤⼤挪移", "price": 10000}
}
ding_dan = []
def gou_wu():
"""
购物
:return:
"""
while True:
item = input("1键购买,2键结算。")
if item == "1":
for key, value in shang_pin_info.items():
print("编号:%d,名称:%s,单价:%d。" % (key, value["name"], value["price"]))
while True:
cid = int(input("请输⼊商品编号:"))根据中文名取英文名
if cid in shang_pin_info:
break
else:
print("该商品不存在")
count = int(input("请输⼊购买数量:"))dialog是美式拼写吗
ding_dan.append({"cid": cid, "count": count})
print("添加到购物车。")
elif item == "2":
zong_jia = 0
for item in ding_dan:
shang_pin = shang_pin_info[item["cid"]]
java中sftp连接远程服务器命令
print("商品:%s,单价:%d,数量:%d." % (shang_pin["name"], shang_pin["price"], item["count"])) zong_jia += shang_pin["price"] * item["count"]
while True:
qian = float(input("总价%d元,请输⼊⾦额:" % zong_jia))
if qian >= zong_jia:
print("购买成功,回:%d元。" % (qian - zong_jia))
ding_dan.clear()
break
else:
print("⾦额不⾜.")
gou_wu()
重构后代码如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论