Python语言快速入门下1

news2024/11/17 16:14:51

目录

一、函数

【函数定义与调用】

 【形参与实参】

 【return语句】

【变量作用域】

【可变长度参数】

二、lambda表达式

三、案例

【例题1】

【例题2】

【例题3】

【例题4】

【例题5】


一、函数

【函数定义与调用】

【例子】一个穷小子想娶富家之女,她父亲说,你第一天给我2元钱,第二天给我4元钱,第n天给我2^n,总共给30天。穷小子一个月存 10000 元,问多少个月可以抱得美人归?

 【形参与实参】

  • 定义函数时的参数称为形式参数 (简称形参) ,调用函数时的参数称为实在参数 (简称实参)
  • 一般类型的数据作为参数相当于传值调用,可变类型的序列作为参数相当于传地址调用
  • 定义函数时不需要指定参数的类型和返回值的类型
  • 普通参数、默认值参数、关键参数、可变长度参数

 【return语句】

  • return 语句用于函数体,可以结束函数的运行并返回 return 后的表达式
  • 没有return语句的函数,或者 return 语句后没有表达式的函数,其返回值为None
  • 任何函数都可以作为表达式的一份子,也可以作为独立语句调用

【变量作用域】

  • 变量起作用的代码范围称为变量的作用域,不同作用域内同名变量之间互不影响
  • 函数内部定义的变量一般为局部变量,而不属于任何函数的变量一般为全局变量
  • 局部变量的引用速度比全局变量快,应优先考虑使用
  • 尽量避免使用全局变量
  • 一个变量已经在函数外定义,如果在函数内需要使用这个变量,并将改变变量的结果反映到函数之外,可以在函数内用 global 声明这个变量
  • 在函数内部直接使用 global 关键字可以将一个变量声明为全局变量

【可变长度参数】

def demo1(*p):   # *参数-解包操作符
    print(p)
demo1(5,2,0)

def demo2(**p):    #**关键字参数-解包操作符
    for item in p.items():
        print(item)
demo2(a=5,b=2,c=0)


(5, 2, 0)
('a', 5)
('b', 2)
('c', 0)
>>> 

二、lambda表达式

  • lambda 定义了一个匿名函数,并不会带来程序运行效率的提高,只会使代码更简洁
  • 如果可以使用 for..in...if 来完成的,坚决不用 lambda

a_list=[1,3,1,4]
print(a_list)

b=list(map((lambda x:x*100),a_list))
print(b)

a_dict={'i':99,'love':98,'you':97}
b_list=sorted(a_dict)
print(b_list)

c_list=sorted(a_dict.values())
print(c_list)

d_list=sorted(a_dict.items(),key=lambda x:x[1])
print(d_list)




[1, 3, 1, 4]
[100, 300, 100, 400]
['i', 'love', 'you']
[97, 98, 99]
[('you', 97), ('love', 98), ('i', 99)]
>>> 

三、案例

【例题1】

【例题】编写函数,接收字符串参数,返回一个元组,其中第一个元素为大写字母个数,第二个元素为小写字母个数。

def tupleCout(s):
    result=[0,0]
    for ch in s:
        if ch.islower():
            result[1]+=1
        elif ch.isupper():
            result[0]+=1
    return tuple(result)

s="After All, Tomorrow is Another Day!"
print(tupleCout(s))



(5, 23)
>>> 

【例题2】

【例题】编写函数,计算字符串匹配的准确率。以打字练习程序为例,假设 origin 为原始内容,userlnput 为用户输入的内容,测试用户输入的准确率。

def Rate(origin,userInput):
    right=sum(1 for o,u in zip(origin,userInput) if o==u)
    return round(right/len(origin),2)  #round()四舍五入
a="Life is not a matter of a day."
print("请输入: Life is not a matter of a day.")

b=input()
print(int(Rate(a,b)*100),'%')


请输入: Life is not a matter of a day.
Life is not a matt of a day
63 %
>>> 

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

>>> list(zip('abcdefg', range(3), range(4)))
       [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]

zip 对象产生长度为 n 的元组,其中 n 是作为位置参数传递给 zip() 的可迭代对象的数量。每个元组中的第 i 个元素来自 zip() 的第 i 个 iterable 参数。这一直持续到最短的参数耗尽为止。

【例题3】

【例题】编写函数模拟猜数游戏。系统随机产生一个数,玩家最多可以猜7次。系统根据玩家的猜测进行提示,玩家则可以根据系统的提示对下一次的猜测进行适当调整。

from random import randint
def guess(maxValue=100,maxTimes=7):
    value=randint(1,maxValue)   #随机生成一个整数
    for i in range(maxTimes):
        prompt='Start to GUESS:' if i==0 else 'Guess again:'
        #使用异常处理结构,防止输入不是数字的情况
        try:    x=int(input(prompt))
        except: print('Must input an integer between 1 and ',maxValue)
        else:   #猜对了
            if x==value:    print('Congratulation!');   break
            elif x>value:   print('Too big')
            else:           print('Too little')
    else:   #次数用完还没猜对,游戏结束,提示正确答案
        print('Game over.FAIL.')
        print('The value is ',value)
print(guess())

Start to GUESS:50
Too big
Guess again:25
Too little
Guess again:30
Too little
Guess again:40
Too little
Guess again:45
Congratulation!
None
>>> 

【例题4】

【例题】编写函数模拟报数游戏。有 n 个人围成一圈,顺序编号,从第一个人开始从 1 到 k (假设 k=3 )报数,报到 k 的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号。

from itertools import cycle

def numberoff(lst,k):
    t_lst=lst[:]    #切片,以免影响原来的数据
    while len(t_lst)>1:  #游戏一直进行到只剩下最后一个人
        #print(t_lst)
        c=cycle(t_lst)   #创建cycle对象,cycle()循环遍历
        for i in range(k):  #从1到k报数
            t=next(c)
        index=t_lst.index(t)    #一个人出局,圈子缩小
        t_lst=t_lst[index+1:]+t_lst[:index]
    return t_lst[0]

lst=list(range(1,8))
print(numberoff(lst,3))

4

【例题5】

【例题】利用蒙特·卡罗方法计算圆周率近似值。

假设圆的半径是1,那么圆的面积就是pi,正方形的的面积是4,随机产生正方形中的点,那么这个点落在园的概率是圆面积/正方形面积,g=pi/4,这个点落在圆内的判断:x*x+y*y<=1

from random import random
def estimatePI(times):
    hits=0
    for i in range(times):
        x=random()*2-1  #random()生成介于0和1之间的小数
        y=random()*2-1  #该数字乘以2再减1,则介于-1和1之间
        if x*x+y*y<=1:  #落在圆内或园周上
            hits+=1
    return 4.0*hits/times
print(estimatePI(10000))
print(estimatePI(100000))
print(estimatePI(1000000))
print(estimatePI(10000000))
print(estimatePI(100000000))

3.144
3.12892
3.14398
3.1412452
3.14146116
>>> 

以上,Python语言快速入门下1

祝好

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【正点原子FPGA连载】第四章开发环境搭建摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第四章开发环境搭…

HPA与VPA

写在前面 语雀原文阅读效果更佳&#xff1a; 6、HPA与VPA 语雀 《6、HPA与VPA》 HPA与VPA 1、HPA 在前面的学习中我们使用了一个 kubectl scale 命令可以来实现 Pod 的扩缩容功能&#xff0c;但是这个是完全手动操作的&#xff0c;要应对线上的各种复杂情况&#xff0c;我…

ELK收集交换机日志

1、环境介绍 交换机&#xff1a;华为、思科、H3C Elasticsearch版本&#xff1a;7.13.3 kibana版本&#xff1a;v 7.13.3 logstash版本&#xff1a;7.17.8 2、ES集群配置 参考&#xff1a; https://blog.csdn.net/zyj81092211/article/details/118935274 3、kibana配置 参考 …

实战 | 使用图像处理改善OCR结果(详细步骤 + 源码)

导 读 本文主要介绍一个通过图像处理改善OCR识别结果的实例,并给出详细步骤和源码。 背景介绍 在很多情况下,文字识别会遇到困难。比如非单一的背景、杂讯干扰、文字部分缺失等。如下图所示: 我们希望识别图中的黑色文字(12-14),但背景较复杂且存在其他干扰,如果直接…

rabbitmq基础8——持久化、存储机制、ETS、队列结构、消息状态、内存告警、磁盘告警

文章目录一、持久化1.1 持久化对象1.1.1 交换器持久化1.1.2 队列持久化1.1.3 消息持久化1.2 总结要点二、存储机制2.1 存储方式2.2 存储文件2.2.1 队列索引.idx文件2.2.2 消息存储.rdq文件2.2.3 垃圾回收机制&#xff08;文件合并&#xff09;2.3 存储原理2.3.1 生产者消息写入…

基于图形化界面的方式创建vue2项目

前提是安装vue-cli npm i -g vue/cli 接下来使用vue ui 创建vue项目 vue ui 浏览器自动打开 点击创建&#xff0c;然后去到你想把创建的项目放到的位置 如果到不了那个位置&#xff0c;就window E 打开打开文件夹去到那个位置&#xff0c;之后再在文件夹的搜索中输入cmd打开命…

某农业学校 算法设计与分析-第7次实验综合

寻找数组中的第k小元素 【问题描述】给定一个长度为n的整数数组nums和整数k&#xff0c;输出数组中的第k小元素。要求不能对数组排序&#xff0c;使用分治的思想求解。 【输入形式】输入的第1行中有1个数字n&#xff0c;表示数组的长度&#xff1b;第2行中有n个数字&#xff0c…

Qt+C++ TCP发送接收信息客户端与服务端窗体

程序示例精选 QtC TCP发送接收信息客户端与服务端窗体 如需安装运行环境或远程调试&#xff0c;见文章底部微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC TCP发送接收信息客户端与服务端窗体>>编写代码&#xff0c;代码整洁&am…

Linux常用基本指令详解

各位看客在看本期博客之前请放轻松心态&#xff0c;以免内容过长造成不适~ 目录 1. ls指令 1.1 ls指令的作用 1.2 ls常用的指令选项 2. pwd指令 3. cd指令 3.1 cd .. 3.2 cd 文件路径 3.3 cd ~ 3.4 cd - 4.热键Tab 4.1 使用Tab键进行命令的自动补齐 4.2 使用Tab键进行查看…

driftingblues4靶机(zbarimg二维码破解)

环境准备 靶机链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;qyha 虚拟机网络链接模式&#xff1a;桥接模式 攻击机系统&#xff1a;kali linux 2021.1 信息收集 1.arp-scan -l 探测目标靶机 2.nmap -p- -A -T4 192.168.1.107 扫描靶机开放端口和相应服务 3.…

【财务】FMS财务管理系统---付款管理

前一篇介绍了财务应付管理中的结算明细报表、结算单以及税票管理几个部分&#xff0c;本篇将分享下财务付款相关的内容。 付款最终是要汇款或现金支付给供货商或合作商家&#xff0c;公司的现金流就会减少&#xff0c;所以是不是所有的付款申请都要付&#xff1f;什么时间付出才…

一体式无线阀控超声水表在西北某市大用户用水计量收费管理项目应用案例

多年来&#xff0c;西北某市的工业园区供水公司对工业企业用户的用水收费一直采取业务员手动抄表、上门收费的方式。不仅效率低、浪费人力资源&#xff0c;而且供水公司很难掌握地区用水情况&#xff0c;不便于统一调度和管理。 为此&#xff0c;该工业园区安装了平升电子一体…

【微信小程序项目的基本组成结构】

项目的基本组成结构 ├── app.js # 小程序的逻辑文件 ├── app.json # 小程序的配置文件 ├── app.wxss # 全局公共样式文件 ├── pages # 存放小程序的各个页面 │ ├── index # index页面 │ │ ├── index.js # 页面逻辑 │ │ ├── index.wxml # 页面结构 │…

数据安全领导者和引路人的“实至名归” |美创2022年终盘点

走过2022&#xff0c;结束三年抗疫 无惧数据安全道路的风雨 美创人“毅”起前行 诠释数据安全领导者和引路人 真正做到“实至名归” 2022年&#xff0c;美创科技完成股改 正式更名为⇲ 2022年&#xff0c;数据安全领导力广受第三方认可 数据安全主要服务供应商 专业型安全…

踩坑记录2——RK3588跑通YOLO v5+DeepSORT

上篇说到RK3588编译OpenCV, 这篇记录一下跑通YOLO v5DeepSORT的愉(chi)快(shi)历程. 1. 保证编译OpenCV时关联了ffmpeg 如果本身缺少ffmpeg而编译了没有ffmpeg版本的OpenCV, 则视频无法读取. 解决方案参照CSDN, 首先安装ffmpeg: sudo apt install -y ffmpeg之后安装一堆dev:…

嵌入式初学者的2022年度总结

目录 学习过程 人工智能 嵌入式 51单片机 STM32 MicroPython Arduino 其他 未来计划 RT-Thread LIUNX 其他 总结 学习过程 今年二月份才开始写博客&#xff0c;到现在一共写了131篇文章&#xff0c;其中包含了Python&#xff0c;Mysql&#xff0c;51单片机&#…

HTML5 音视频

文章目录HTML5 音视频video元素简介简单使用多种格式的视频自定义视频audio元素简介简单使用设置网页背景音乐多种格式的音频自定义音频HTML5 音视频 video元素 简介 语法 <video>你的浏览器不支持video元素&#xff0c;请升级到最新版本 </video>说明 如果浏…

spring cloud、gradle、父子项目、微服务框架搭建---引入MyBatis-Plus(四)

总目录 https://preparedata.blog.csdn.net/article/details/120062997 文章目录总目录一、引入依赖二、配置mybatis-plus1.配置数据源2.配置mybatis-plus三、服务启动类配置MapperScan四、新建实体五、新建Mapper接口六、新建Mapper接口的Mapper.xml七、新建接口八、新建接口…

智能优化算法——正余弦优化算法(SCA)及其改进策略

正余弦优化算法&#xff08;SCA&#xff09;及其改进策略一、基本介绍1. 背景2. 算法简介二、基本的SCA算法1. 算法介绍2. 算法步骤三、算法分析1. 正余弦分布2. 算法实验结果3. 算法优缺点四、SCA改进策略1. 参数的改进2. 应用权重更新机制3. 基于反向学习的改进五、引用与代码…

Linux操作系统之进程间通信—信号量

文章目录一、信号量的定义&#xff1f;二、信号量的使用三、ipcs的使用一、信号量的定义&#xff1f; 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目&#xff0c;获取资源时&#xff0c;需要对信号的值进行原子减一&#xff0c;该操作被称为…