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)
posted @ 2019-10-08 19:03  薛定谔的猫儿  阅读(294)  评论(0编辑  收藏  举报