Python类型-语句-函数

news2025/1/4 15:02:59

文章目录

    • 类型
        • 动态类型:变量类型会随着程序的运行发生改变
      • 注释
        • 控制台
        • 控制台输入input()
      • 运算符
        • 算术
        • 关系
        • 逻辑
        • 赋值
        • 总结
    • 语句
        • 判断语句
        • while循环
        • for循环
    • 函数
        • 链式调用和嵌套调用
        • 递归
        • 关键字传参

在C/java中,整数除以整数结果还是整数,并不会将小数部分舍弃!

编程中一般没有四舍五入这样的规则,浮点数IEEE754标准,内存中表示浮点数时会存在微小的误差。

2^2用python表示是2**2

变量是一块存储数据的空间。

变量名最好别和关键字相同,会存在含义的覆盖,如果想用回原来关键字的含义,把新创建的删除就行。

创建变量和初始化以及他类型的确定,都是在首次使用=设置值

类型

type()内嵌函数查看变量类型,

int能表示的数据范围是无穷的,Python是可以根据要表示的数据的大小,自动扩容。就没有long,short,byte类型了。

int a=10是错的,非要指定类型的话是a:int=10

float,C++中是四字节,double是8字节。但是在Python中就是八字节双精度。

str:字符串类型,双引号和单引号都可以。特殊:st="My name is 'yuanwei'",换过来也行,三引号也是可以的。st2='''Myname 'is' "yuanwei"'''随便换着来,三者没有上下关系。

len():求字符串的长度,只能用于字符串类型

字符串拼接:st=st1+st2,新的字符串存储.

语法错误,在成语运行之前解释器可以把错误找出来.

运行时错误必须要到执行到对应的代码才能发现问题

布尔类型:True&&False,必须大写.

不同的类型占用的内存空间是不同的,int是4字节动态扩容;float是8字节,bool一个字节

不同的类型能完成的操作也是不同的.

动态类型:变量类型会随着程序的运行发生改变

一个编程语言是否是动态类型,只是取决于程序运行时类型是否发生变化.所以Python是动态语言

比较灵活,但是更容易出错,各种类型都可以,但是只有在遇到具体操作符时才会出现类型的约束而报错

注释

但凡要更新代码,一定要更新注释.批量注释是ctrl+/

#这是一段注释
a=10 #这里也可以注释
'''
文档字符串,编译器不会去掉
'''

控制台

用户输入命令和机器进行交互,图形化界面应用更广泛.print()打印到控制台

a=10
print(f"a={a}")#格式化字符串,f-string,f是format
print(f"a={a+10}")

控制台输入input()

num=input("请输入一个数字")#返回值实际是字符串,存在类型强转float()int()str()
print(f"您输入的数字是{num}")

num1=int(input("请输入一个数字"))
num2=int(input("请输入一个数字"))
print(f"您的数字是{num1+num2}")

运算符

算术

**进行乘方运算,整数次方小数次方都可.2^0.5就是2**0.5

地板除法:7//2=3向下取证,-7//2=-4

关系

关系运算符不仅仅可以针对数字,还可以针对字符串,按照字典序比较就行.针对中文进行字符串大小比较时没有意义的,计算机里面表示中文使用多个字节表示一个较大的数字.

针对浮点数使用==比较相等存在风险,因为浮点数在内存中的表示是存在误差的.

image-20230103111309240

正确写法:

print(-0.00001<(0.1+0.2-0.3)<0.00001)约定精确位数.在python中支持链式的比较.

逻辑

and or not print(not 10<20),print(10<20<30)

短路求值,对于and来说,如果左侧表达式为False,就没有必要看后面的条件了.print(10>20 and 10/0==1)

赋值

a=b=10 #链式赋值
a,b=10,20
#交换值,使用多元赋值
a,b=b,a
a+=1

python不支持+±-这样的自增自减操作,没有报错是因为将++当作是两个正号,值不改变.

总结

如果把布尔类型的值和正数进行算术运算,会把True当成1,False当成0.但是这样的操作是没有意义的.

python只有字符串类型,字符就是长度为1的字符串.""和’'没有任何区别

个正号,值不改变.a=true是错的,a=True是对的.

语句

判断语句

#pass空语句占位,避免编译错误
num=input("请输入一个数字")
if num !=1:
    #啥都不写
    pass
else:
    print(666)

while循环

for循环

for i in range(a,b,c):
    #[a,b)步长是c,负数的话就是反向打印

shift+F6 统一rename变量

range生成整数序列的可迭代对象

C语言中特殊操作goto,一般情况不建议使用

random.randint(1,6)左右都是闭区间生成一个随机整数.random是别人写好的模块,降低编程的门槛.自己也可以写,但是用别人的更快,不用自己测试bug啥的.

如果想引入其他模块使用import random,Pytharm 可以自动生成这条语句在头部.

函数

  • #动态类型特性,只要保证类型能够实现对应的操作就行
    def add(x,y):
        return x+y
    
    print(add(10,20))
    print(add('hello','world'))
    print(add(10.5,10.8))
    print(add(str(10),'hello'))
    
    print(10,20,30)
    
  • #一个函数尽量只完成一个任务(计算就是计算,打印就是打印),降低耦合度
    # 可以返回多个值
    def getPoint():
        x=10
        y=20
        return x,y
    a,b=getPoint()
    print(a,b)
    #如果只关注一个,就用_站位
    c,_=getPoint()
    print(c)
    
  • def calSum(begin,end):
        thesum=0
        while begin<end+1:
            thesum+=begin
            begin+=1
        # print(thesum)
        return thesum   #可有可无
    
  • 作用域的存在使得函数内外可以存在相同名字的变量.函数中优先读取函数内的局部变量,如果没有再访问全局的.

  • 如果要在函数内修改全局变量global关键字.没有global,此时会把x=20当作是在函数内部创建的一个局部变量,而实际上是要修改全局变量,为了让函数里面知道是全局的,用global声明一下

    def test1():
        global x
        x=20
    test1()
    print(f"x真的={x}")
    
  • 只有函数和类的代码块才涉及到作用域的概念,if else while for等语句代码块是不存在作用域的,变量在外部仍然可以访问.

  • for i in range(1,11):
        print(f"内部的i:{i}")
    
    print(f"外部的i:{i}")
    
  • Pycharm调试器:断点+debug+单步调试F7+函数调用栈

链式调用和嵌套调用

链式:一个函数的返回值当作另一个函数的参数

调试器左下角,是函数之间的调用栈,里面描述了当前代码的函数之间的调用关系,每一层栈帧选中之后都能看到他的变量.调用函数生成对应的栈帧,函数结束则对应的栈帧销毁.

局部变量在函数自己的栈帧上,虽然两个函数的局部变量名字相同但是不同的栈帧是不同的内存空间,也就是不同的变量.

递归

递归公式,递归结束条件

递归调用看起来是同一个函数,但是是两次调用,其实就是两个栈帧.

每一次递归都会主键接近结束条件.

求n!=n*(n-1)!

def factor(n):
    if n == 1:
        return 1
    return n* factor(n-1)
print(factor(5))
#形参默认值,带有默认值的要在参数列表的后面
def add(x,y,debug=False):
    if debug:
        print(f"x={x},y={y}")
    return x+y

result =add(10,20,True)
print(result)

关键字传参

def test(x,y):
    print(f"x={x},y={y}")

test(x=10,y=20)
test(y=20,x=10)
test(10,y=20)#关键字参数和位置参数混着用,位置参数放在前面

关键字参数配合着形参默认值使用,一般的函数形参都设定默认值,传参时指定关键字参数即可.

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

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

相关文章

线上CPU飙高诊断定位

1. 先准备一段java程序&#xff0c;后台运行 2. 使用 top命令查看cpu的进程使用情况 在这里看到了一个进程占据了99.3%的cpu利用率&#xff0c;这显然是出现了cpu飙升的情况&#xff0c;这会到期系统其他进程得不到cpu的使用权&#xff0c;从而出现卡顿&#xff0c;因此需要进行…

第五章——大数定律和中心极限定理

文章目录1、大数定律1.1、弱大数定理&#xff08;辛钦大数定理&#xff09;1.2、伯努利大数定理2、中心极限定理2.1、独立同分布的中心极限定理2.2、李雅普诺夫定理2.3、棣莫弗——拉普拉斯定理2.4、中心极限定理的应用2.4.1、独立同分布的中心极限定理的应用2.4.2、棣莫弗——…

文件同步是什么?解析6个最佳的文件同步应用软件

文件同步应用程序是一项服务或程序&#xff0c;它提供了一种便捷的方式来在多台计算机或移动设备上自动文件同步。在登录文件同步应用程序的任何地方&#xff0c;都可以使用相同的文件来打开&#xff0c;编辑&#xff0c;复制&#xff0c;流式传输等&#xff0c;就像在最初上传…

重磅!微软推出首款 ChatGPT 版搜索引擎!

微软近期推出了首款 ChatGPT 版搜索引擎&#xff0c;今天带大家一起来看一下。 一夜之间&#xff0c;全球最大的科技公司仿佛都回到了自己年轻时的样子。 在谷歌宣布「实验性对话式人工智能服务」Bard 之后仅 24 小时&#xff0c;北京时间 2 月 8 日凌晨两点&#xff0c;微软发…

Linux安装达梦8数据库

Linux安装达梦8数据库 服务器系统&#xff1a;centos7 数据库版本&#xff1a;达梦8 先获取安装包&#xff1a;https://eco.dameng.com/download/?_blank 选择相应版本下载,下载完解压之后会得到一个iso文件&#xff0c;把他上传到服务器上&#xff0c;建议上传到/opt目录下…

深度复盘-重启 etcd 引发的异常

作者信息&#xff1a; 唐聪、王超凡&#xff0c;腾讯云原生产品中心技术专家&#xff0c;负责腾讯云大规模 TKE 集群和 etcd 控制面稳定性、性能和成本优化工作。 王子勇&#xff0c;腾讯云专家级工程师&#xff0c; 腾讯云计算产品技术服务专家团队负责人。 概况 作为当前中国…

linux Ubuntu KUbuntu 系统安装相关

系统安装 本来想快到中午的时候调试一下服务器上的http请求接收代码。我的电脑上装的是kali的U盘系统&#xff0c;然后我的U盘居然找不到了(然后之前安装的系统不知道是否是写入软件的原因&#xff0c;没办法解析DNS,我都用的转发的,这让我体验非常差。kali的系统工具很多&…

若依框架---树状层级部门数据库表

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域新星创作者 &#x1f4d5;系列专栏&#xff1a;前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

linux 安装,卸载jdk8

1>安装1 xshell,xsftp 教育版下载 https://www.xshell.com/zh/free-for-home-school/ 2下载jdk包 https://www.oracle.com/java/technologies/downloads/3在usr下新建java文件夹把jdk包拉进去解压tar -zxvf 4首先使用vim打开etc目录下的profile文件 --> vim /etc/profile…

【参加CUDA线上训练营】零基础cuda,一文认识cuda基本概念

【参加CUDA线上训练营】零基础cuda,一文认识cuda基本概念1.术语2.线程层次2.1 Block、Warp与Thread之间的关系2.2 Thread index1.术语 \\%序号名称描述1HostCPU和内存&#xff08;host memory&#xff09;2DeviceGPU和显存&#xff08;device memory&#xff09;3SMStreaming M…

【项目精选】基于Java的银行排号系统的设计与实现

银行排号系统是为解决一些服务业营业大厅排队问题而设计的&#xff0c;它能够有效地提高工作人员的工作效率&#xff0c;也能够使顾客合理的安排等待时间&#xff0c;让顾客感到服务的公平公正。论文首先讨论了排号系统的背景、意义、应用现状以及研究与开发现状。本文在对C/S架…

软件测试】测试时间不够了,我很慌?项目马上发布了......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 常见的几种情况&…

登录shell和非登录shell的区别

1.对登录shell和非登录shell配置文件的作用域不同 1.1 在登录shell生效的配置有5个&#xff0c;包括 /etc/profile、~/.bash_profile、~.bashrc、/etc/bashrc、/etc/profile.d/*.sh 1.2 在非登录shell生效的有3个&#xff0c;包括~.bashrc、/etc/bashrc、/etc/profile.d/*.sh所…

知乎kol投放怎么做?知乎kol资源从哪里找?

每个领域都有一些比较专业且具有话语权的大V博主&#xff0c;他们推荐某个产品或是品牌就能对粉丝产生很深的影响力&#xff0c;影响用户消费决策。 互联网时代&#xff0c;每个热门的内容平台上都活跃着一大批kol博主&#xff0c;做kol投放具有很高的商业价值。 知乎内容社区…

基于javaFX的固定资产管理系统

1. 总体设计 本系统分为登录模块、资产管理模块、资产登记模块和信息展示模块共四个模块。 登录模块的主要功能是&#xff1a;管理员通过登录模块登录本系统&#xff1b; 资产管理模块的主要功能有&#xff1a;修改、删除系统中的固定资产&#xff1b; 在资产登记模块中&#…

hgame2023 WebMisc

文章目录Webweek1Classic Childhood GameBecome A MemberGuess Who I AmShow Me Your BeautyWeek2Git Leakagev2boardSearch CommodityDesignerweek3Login To Get My GiftPing To The HostGopher Shopweek4Shared DiaryTell MeMiscweek1Where am I神秘的海报week2Tetris Master…

Java基础42 枚举与注解

枚举与注解一、枚举&#xff08;enumeration&#xff09;1.1 自定义类实现枚举1.2 enum关键字实现枚举1.2.1 enum的注意事项1.2.2 enum的使用练习1.2.3 enum的常用方法1.2.4 enum的使用细节及注意事项1.2.5 enum练习二、注解&#xff08;Annotation&#xff09;2.1 Override&am…

2023 软件测试行业内卷动荡,红利期过去后,何去何从?

前段时间席卷全互联网行业的内卷现象&#xff0c;想必有不少人都深陷其中。其实刚开始测试行业人才往往供不应求&#xff0c;而在发展了十几年后&#xff0c;很多人涌入这个行业开始面对存量竞争。红利期过去了&#xff0c;只剩内部争夺。 即便如此&#xff0c;测试行业仍有许…

shell条件测试

文章目录三、shell条件测试3.1条件测试的基本语法3.2 文件测试表达式3.3字符串测试表达式3.4 整数测试表达式3.5 逻辑操作符三、shell条件测试 为了能够正确处理Shell程序运行过程中遇到的各种情况&#xff0c;Linux Shell提供了一组测试运算符。通过这些运算符&#xff0c;Sh…

java rpc框架 中的自定义异常类型的全局处理

– 这里的dubbo 可泛指 所有rpc框架 –比如自定义异常类型是MyEx, 以及myEx可以转化为MyResult – 需求: 凡是请求链路中抛出的MyEx需要自动及时或最终转化为 自定义的MyResult返回 – 1. spring 提供 controller端的全局异常捕获. 这一步简单 – 2. dubbo 需要 将MyEx 传输回来…