python笔记(8)--函数(基础)和三元运算
内容目录
- 三元运算
- 函数
内容详细:
1.三元运算(三目运算)
v = 前面 if 条件 else 后面
if 条件:
v = '前面'
else:
v = '后面'
#让用户输入值,如果值是整数,则转换为整数,否则赋值为None
data = input('>>>')
value = int(data) if data.isdecimal() else None:
注意:先做出来,再考虑是否应用三元运算简化代码。
2.函数
2.1函数的基本结构
def 函数名():
#函数内容
pass
#函数的执行
函数名()
def get_list_first_data():
v = [11,22,33]
print(v[0])
get_list_first_data()
#注意:函数如果不被调用,则内部代码永远不会被调用
2.2参数
- 形参
- 实参
练习题:
#1.请写出一个函数,函数计算列表info = [11,22,33,44]内所有的值
def get_sum():
info = [11,22,33,44]
data = 0
for item in info:
data += item
print(data)
get_sum()
#2.使用形参和实参的方式写出该函数
def get_list_sum(v1):
data = 0
for item in v1:
data += item
print(data)
get_list_sum([11,22,33,44]) #可直接传参数
list_v1 = [11,22,33,44] #可写出一个列表,然后在函数体内传列表
get_list_sum(list_v1)
#3.使用函数写出拼接两个列表,并输出拼接后的新列表
def join_list(a1,a2):
result = []
result.extend(a1)
result.extend(a2)
print(result)
join_list([11,22,33],[44,55,66])
2.3返回值
- 函数体默认return的值None
- 函数执行过程中,一旦遇到return,则停止函数的执行
2.4函数练习题:
#1.让用户输入一段字符串,计算字符串中有多少A字符的个数,有多少个就再文件中写多少“alec”
def get_char_count(data): #定义统计输入A次数的函数体,返回值为次数
sum_in = 0
for item in data:
if item == "A":
sum_in += 1
return sum_in
def wirte_file(line): #定义写入文件内容的函数体,返回值判断是否为空,空即返回False,有值返回True
if len(line) == 0:
return False
with open("log.txt", mode="a", encoding="utf-8") as file:
file.write(line)
return True
content = input("请输入字符串:")
count = get_char_count(content) #调用函数并赋值给变量
putin = "alec"*count #赋值写入的内容
if wirte_file(putin): #根据返回值判断输出结果
print("写入成功")
else:
print("写入失败")
# 2.写函数,计算一个列表中有多少个数字,打印:该列表中有%s个数字
def get_info_count(msg):
count = 0
for item in msg:
if type(item) == int:
count += 1
return count
info = [11,22,33,"kjoi",859]
count = get_info_count(info)
print("该列表中有%s个数字"%(count,))
#或者
def get_info_count(msg):
count = 0
for item in msg:
if type(item) == int:
count += 1
print("该列表中有%s个数字"%(count,))
get_info_count([11,22,33,"kjoi",859])
# 3.写函数,计算一个列表中偶数索引位置的数据构造成另外一个列表,并返回
def get_info_count(msg):
num = len(msg)
num = int(num)
info = []
if num <= 0:
return False
else:
for item in range(0,num,2):
data = msg[item]
info.append(data)
return info
li = get_info_count([11,22,33,44,55])
print("列表太短") if li == False else print(li)
#函数体或者这样写:
def get_info_count(msg):
num = len(msg)
if num <= 0:
return False
else:
info = msg[::2]
return info
#4.读取文件,将文件的内容构建成指定格式的数据,并返回
"""
a.log文件
alec|123|18
kadu|852|25
yanan|iiukl|19
目标结构:
a.["alec|123|18","kadu|852|25","yanan|iiukl|19"]
b.[[alec,123,18],[kadu,852,25],[yanan,iiukl,19]]
c.[
{'name':'alec','pwd':'123','age':'18'}
{'name':'kadu','pwd':'852','age':'25'}
{'name':'yanan','pwd':'iiukl','age':'19'}
]
"""
#a.
info = []
with open("log.txt",mode="r",encoding="utf-8") as f:
for item in f:
item = item.strip()
info.append(item)
print(info)
#b.
info = []
with open("log.txt",mode="r",encoding="utf-8") as f:
for item in f:
item = item.strip().replace('|',',').split(",")
info.append(item)
print(info)
#c.
info = []
with open("log.txt",mode="r",encoding="utf-8") as f:
new_dict = {}
for item in f:
item = item.strip().replace('|',',').split(",")
new_dict = {"name":item[0],"pwd":item[1],"age":item[2]}
info.append(new_dict)
print(info)
#将函数传参的列表或元组下标位为奇数位的取出来,并生成新的列表输出
flag = False
def func(data_list):
if len(data_list) == 0:
return flag
val = data_list[1::2]
return list(val)
v1 = func([])
print(v1) #输出为False
v2 = func((1,2,3,4,5,6,7))
print(v2) #输出为[2, 4, 6]
#元组、集合、字典、字符串强制转换为列表
v1 = (1,2,3,4)
v2 = {1,2,3,4}
v3 = {"k1":1,"k2":2,"k3":3,"k4":4}
v4 = "yanan"
print(list(v1)) #输出为[1, 2, 3, 4]
print(list(v2)) #输出为[1, 2, 3, 4]
print(list(v3)) #输出为['k1', 'k2', 'k3', 'k4']
print(list(v4)) #输出为['y', 'a', 'n', 'a', 'n']
#定义一个函数,比较参数的大小,输出比较大的那个值
def func(a,b):
return a if a>b else b #等于v = a if a>b else b \n return v
val = func(1,2)
print(val)
#定义一个函数,用户输入全部信息后,结果用*将每个元素连接起来并输出
def func(name, gender, age, edu):
data_list = [name,gender,age,edu]
return "*".join(data_list)
user_name = input("姓名>>>:")
user_gender = input("性别>>>:")
user_age = input("年龄>>>:")
user_edu = input("学号>>>:")
data = func(user_name, user_gender, user_age, user_edu)
print(data) #结果为 yanan*男*18*10
#定义一个函数,验证用户名在文件log.txt文件中是否存在,如果存在则返回True,否则返回False(函数有一个参数,接收用户输入的用户名)
"""
log.txt:
alec|123|18
kadu|852|25
"""
#第一种方式:
def func(massage):
flag = False
with open("log.txt",mode='r',encoding='utf-8') as f:
for item in f:
item = item.strip().split("|")
print(item)
if massage in item[0]:
flag = True
break
return flag
arg = input("请输入用户名:")
v = func(arg)
print(v)
##第二种方式:函数中默认返回值为None,None为False,则可以判断函数调用时的参数是否成立
def func(massage):
with open("log.txt",mode='r',encoding='utf-8') as f:
for item in f:
item = item.strip().split("|")
if massage in item[0]:
return True
arg = input("请输入用户名:")
v = func(arg)
if v:
print("存在")
else:
print("不存在")
#写函数,在函数内部生成如下规则的列表[1,1,2,3,5,8,13,21,34,55....](斐波那契数列),并返回。
# 注意:函数可接收一个参数用于指定列表中元素最大不可超过的范围
#方法一:
def func(arg):
result = [1,1]
while True:
count = result[-1] + result[-2]
if count >= arg:
break
result.append(count)
return result
v = func(100)
print(v)
#方法二:列表的长度小于2时,列表加1,否则最后一个数加前一个数
def func(arg):
result = []
while True:
if len(result) < 2:
result.append(1)
else:
count = result[-1] + result[-2]
if count >= arg:
break
result.append(count)
return result
v = func(100)
print(v)