今日内容

  三元运算

  函数

  考试题

1.三元运算(又称三目运算)

  v= 前面 if 条件 else 后面

  if 条件:

    v = '前面'

  else:

    v ='后面'

  示例:让用户输入值,如果值是整数,则转换成整数,否则赋值为None

  data = input("请输入信息:")

  value = int(data) if data.isdecimal() else None

2.函数

  截至目前:面向过程编程【可读性差/可重用性差】  

#面向过程编程
user_input=input('请输入角色:')
if user_input == '管理员':
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
msg = MIMEText('管理员,我想演男一号,你想怎么着都行。', 'plain', 'utf-8')
msg['From'] = formataddr(["李邵奇", '15776556369@163.com'])
msg['To'] = formataddr(["管理员", '344522251@qq.com'])
msg['Subject'] = "情爱的导演"
server = smtplib.SMTP("smtp.163.com", 25)
server.login("15776556369@163.com", "qq1105400511")
server.sendmail('15776556369@163.com', ['管理员', ], msg.as_string())
server.quit()
elif user_input == "业务员"
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
msg = MIMEText('业务员,我想演男一号,你想怎么着都行。', 'plain', 'utf-8')
msg['From'] = formataddr(["李邵奇", '15776556369@163.com'])
msg['To'] = formataddr(["业务员", '344522251@qq.com'])
msg['Subject'] = "情爱的导演"
server = smtplib.SMTP("smtp.163.com", 25)
server.login("15776556369@163.com", "qq1105400511")
server.sendmail('15776556369@163.com', ['业务员', ], msg.as_string())
server.quit()
elif user_input =="老板":
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
msg = MIMEText('老板,我想演男一号,你想怎么着都行。', 'plain', 'utf-8')
msg['From'] = formataddr(["李邵奇", '15776556369@163.com'])
msg['To'] = formataddr(["老板", '344522251@qq.com'])
msg['Subject'] = "情爱的导演"
server = smtplib.SMTP("smtp.163.com", 25)
server.login("15776556369@163.com", "qq1105400511")
server.sendmail('15776556369@163.com', ['老板', ], msg.as_string())
server.quit()
函数式编程
def send_mail():
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
msg = MIMEText('老板,我想演男一号,你想怎么着都行。', 'plain', 'utf-8')
msg['From'] = formataddr(["李邵奇", '15776556369@163.com'])
msg['To'] = formataddr(["老板", '344522251@qq.com'])
msg['Subject'] = "情爱的导演"
server = smtplib.SMTP("smtp.163.com", 25)
server.login("15776556369@163.com", "qq1105400511")
server.sendmail('15776556369@163.com', ['老板', ], msg.as_string())
server.quit() user_input = input("请输入你的角色:")
if user_input == "管理员":
send_mail()
elif user_input =="业务员":
send_mail()
elif user_input =="老板":
send_mail()

对于函数编程:

  本质:将N行代码拿到别处并给给他起个别名,以后通过名字就能找到该代码并执行;

  场景:代码重复执行。

       代码两特别多超多一屏,可以选择通过函数进行代码分割。

2.1.函数的基本结构

  函数的定义:

  def 函数名:

    #函数内容

    pass

  #函数执行

  函数名()

示例:   

def get_list_first_data():
v = [11, 22, 33, 44]
print(v[0])
get_list_first_data()
注意事项:函数如果不被调用,则内部代码永远不会被执行。

2.2参数(包括形式参数简称形参,实际参数简称实参)

示例练习  

#1.请写一个函数,函数计算列表info=[11,22,33,44,55]中所有元素的和。
def list_sum():
info = [11,22,33,44,55]
sum = 0
for i in info:
sum += i
print(sum)
list_sum() #2.请写一个函数,函数计算列表中所有元素的和。
def list_sum(arg):
sum = 0
for i in arg:
sum += i
print(sum)
list_sum([11,22,33,44,55]) #3.请写一个函数,函数将两个列表拼接起来。
def join_str(v1,v2):
new_list= []
new_list.extend(v1)
new_list.extend(v2)
print(new_list) join_str([1,2,3],[11,22,33]) #4.计算一个列表的长度
def get_length(arg):
number = 0
for i in arg:
number += 1
print(number) get_length('woshilimin')
get_length([1,2,3,4,5])
get_length((211,33,33,445)) #发邮件示例
def send_email(role,to):
template= "要给%s%s发邮件,请查收"%(role,to,)
print(template) user_input = input("请输入你当前的角色:")
if user_input =="管理员":
send_email('管理员','xxxx@qq.com')
elif user_input == '业务员':
send_email("业务员","xxyw@qq.com")
elif user_input == "老板":
send_email("老板","xxlb@qq.com")

2.3返回值

  def fun(arg):

    #.......

    return 9 #返回值为9,默认返回值为:return None

  v1 = fun("adbdaded")

练习  

#1.让用户输入一段字符串,计算字符串中有多少A字符的个数。有多少个就在文件a.txt中写多少个“李邵奇”。
def get_char_count(data):
number = 0
for i in data:
if i == 'A':
number += 1
return number
def write_file(arg):
content = "李邵奇"*arg
with open(file="a.txt",mode="w",encoding="utf-8") as f1:
f1.write(content) v = get_char_count("woALIMINSANIAHAOAA")
write_file(v) # #方法二
def get_char_count(data):
number = 0
for i in data:
if i == 'A':
number += 1
return number def write_file(line):
if len(line)==0:
return False #函数执行过程中,一旦遇到return,则停止函数的执行
with open(file="a.txt",mode="w",encoding="utf-8") as f1:
f1.write(line)
return True content = input("请输入内容:")
counter= get_char_count(content)
write_date = "李邵奇"*counter
status = write_file(write_date) if status:
print("成功")
else:
print("执行失败")

2.4上述总结  

#情况一
def f1():
pass
f1() #情况二
def f2(arg):
pass
f2("你输入的内容") #情况三
def f3():
...
return 8
v = f3() #情况四
def f4(a1,a2):
#....
return 999
v2 = f4(1,2)

2.5练习题  

#1.写函数,计算一个列表中有多少个数字,打印:列表中有%s个数字。
# 提示:type('x')==int判断是否是数字。 def get_list_count(data):
sum = 0
for i in data:
if type(i) == int :
sum += 1
content = "列表中有%d个数字"%(sum,)
print(content) get_list_count([1,'a',2,3,4,4,'b','f']) def get_list_count(data):
sum = 0
for i in data:
if type(i) == int :
sum += 1
return sum v = get_list_count([1,'a',2,3,4,4,'b','f'])
content = "列表中有%d个数字"%(v,)
print(content) #2.写函数,计算一个列表中偶数索引位置的数据构造成另外一个列表,并返回
#方法一:
def get_new_list(data):
a = []
for i in range(0,len(data),2):
a.append(data[i])
print(a) get_new_list([1,2,3,4,5,6,7,8]) #方法二 def get_new_list(data):
a = []
for i in range(0,len(data)):
if i % 2 == 0:
a.append(data[i])
print(a) get_new_list([1,2,3,4,5,6,7,8]) #方法三
def get_new_list(data):
a = data[::2]
print(a) get_new_list([1,2,3,4,5,6,7,8]) #3.读取文件,将文件的内容构造成指定格式的数据,并返回。
"""
a.log文件
alex|123|18
eric|uiuf|19
目标结构
1:["alex|123|18","eric|uiuf|19"]并返回。
2:[['alex','123','18'],['eric','uiuf','19']]
3:[
{'name':'alex','pwd':'123','age':'18'},
{'name':'eric','pwd':'uiuf','age':'19'},
]
""" #第一题 def get_list1():
v = []
with open(file="a.log",mode= "r",encoding= "utf-8") as f1:
for line in f1:
v.append(line.strip())
print(v) get_list1() # #第二题
def get_list2():
v = []
with open(file="a.log",mode= "r",encoding= "utf-8") as f1:
for line in f1:
list1 = line.strip()
list2 = list1.split("|")
v.append(list2)
print(v) get_list2()
#
# #第三题
def get_list3():
v = []
with open(file="a.log",mode= "r",encoding= "utf-8") as f1:
for line in f1:
new_dict = {}
list1 = line.strip()
list2 = list1.split("|")
new_dict["name"] = list2[0]
new_dict["pwd"] = list2[1]
new_dict["age"] = list2[2]
v.append(new_dict)
print(v) get_list3()

20200115--python学习第九天的更多相关文章

  1. 孤荷凌寒自学python第二十九天python的datetime.time模块

     孤荷凌寒自学python第二十九天python的datetime.time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.time模块是专门用来表示纯时间部分的类. ...

  2. 孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归

    孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python函数非常的灵活,今天学习了python函数的以 ...

  3. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  4. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  5. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  6. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  7. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  8. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  9. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  10. [Python] 学习资料汇总

    Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...

随机推荐

  1. 今天我的jupyter notebook打不开了,报错原因'No module named 'zmq.eventloop'

    今天我的jupyter notebook打不开了,就是那种一打开出现黑色界面就退出的那种,惊恐爬上了我的面颊. 找了一个小时,试了好几种办法(包括别人说的什么把属性里面后面的%%的去掉)终究无果 打开 ...

  2. webpack进阶用法你都get到了么?

    如何消除无用代码:打包自己的私有js库:实现代码分割和动态import提升初次加载速度:配置eslint规范团队代码规范:打包异常抓捕你都get到了么? 摇树优化:Tree Shaking webpa ...

  3. python scoket

    一.简介 scoket(套结字)在python就是模块 二.分类 基于文件型(不用) 基于网络型 名字:AF_INET AF_INET6 三.scoket应用 1.基于tcp 长连接:基于tcp的Se ...

  4. Hibernate定制Tuplizer

    Hibernate定制Tuplizer,使用@Tuplizer注解 本文转自http://www.521100.net/hibernate-tuplizer.html 首先,第一步在Hinbernat ...

  5. Springboot整合Redis入门完整篇,零基础入门教学教程

    记录一次简易集成Redis缓存 自定义Redisconfig配置 自定义序列化操作 加深印像 整合前提工具环境准备: 1.redis官网 https://redis.io/download 下载安装r ...

  6. python,读取txt的方法和应用

    1.读取txt内的百度盘地址,循环保存到百度云中(直接访问下方地址) https://www.cnblogs.com/becks/p/11409467.html 2.读取txt内参数,循环执行查询,读 ...

  7. [校内训练20_01_20]ABC

    1.问有多少个大小为N的无标号无根树,直径恰好为L.$N,L \leq 200$ 2.问一个竞赛图中有多少个长度为3.4.5的环.$N \leq 2000$ 3.给出一些直线和单个点A,问这些直线的交 ...

  8. ssh隧道使用

    在内网中几乎所有的linux服务器和网络设备都支持ssh协议.一般情况下,ssh协议是允许通过防火墙和边界设备的,所以经常被攻击者利用.同时ssh协议的传输过程是加密的,所以我们很难区分合法的ssh会 ...

  9. vue3的打包及打包的坑

    1.vue3没有vue.config.js文件,在根目录下建一个vue.config.js文件 2.vue.config.js  3.vue3.3版本前的打包命令  vue3.3版本之后 我用3.3之 ...

  10. 'NoneType' object has no attribute shape

    使用cv2读取图片时,输出图片形状大小时出现报错“ 'NoneType' object has no attribute shape”,后来排查发现读取图片的返回值image为None, 这就说明图片 ...