Python基础语法

基础语法

1、常量、表达式

print(1+2-4)
print(1+3*4)

形如: 1+2-3 这个就叫表达式 ,表达式的结果叫做叫做返回值

1 2 3 这样的数字称为字面值常量,+ - * 叫做运算符

注意在py中 2/3 = 0.66666 而不是c语言中的0

在C中 整数除整数 结果还是整数且会把小数直接舍去,在编程中一般不会有四舍五入这样的规则

浮点数:遵循IEEE754规则,这套规则在内存中存储时会存在微小的误差!!

2、认识变量

变量可以视为是一块用来存储数据的空间(想象成一个纸盒子)
变量是在内存上的

# 求方差
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg)**2 + (12.9-avg)**2 + (32.2-avg) ** 2
result = total/3
print(result)

3、创建变量

硬性规则

1.变量名必须由数字,字母,下划线构成,不能包含特殊符号.
像a1是合法的变量名
像1a, a*a都是非法的变量名

2.数字不能开头

3.变量名不能和Python的"关键字"重复
在语法中有特定含义的单词
像if这种也是非法变量名~

4.Python中的变量名,是大小写敏感的,区分大小写.
num = 10
Num = 10

软性规则

1.给变量命名的时候,尽量使用描述性的单词来表示尽量通过名字来表现出变量的作用

count
personInfo
y,z,a1,a2不太合适的名字

2.当我们使用一个单词描述不清楚的时候可以使用多个单词来命名
不怕变量名字长,而怕变量的含义表达的不清楚,当包含多个单词的时候命名有多种规范
①驼峰命名除了第一个单词的首字母之外,后续每个单词的首字母都大写

personInfo
totalCount

②蛇形命名单词之间,使用下划线来进行分隔

person_info
total_count

在公司里开发商业程序,公司都会有明确的编程规范

4、使用变量

a=100
b=a
print(a)  # 读取

a=20
print(a)  # 第二次修改

out:
100
20    

5、变量的类型

对于不同种类的变量进行区分

1.整数int
Python中的变量的类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化的值的类型来进行确定的
在 Python 中 int能够表示的数据范围,是"无穷”的,是可以根据要表示的数据的大小自动扩容,因此Python 这里就没有long这样的类型了,像byte, short这些类型在 Python中也不存在
Java int最大就能表示到 -21亿 ~ +21亿

2、浮点数(小数) float

Python中的float等同于C++/Java里的double就是双精度浮点数.

像C++和Java里面,float是四个字节的,也叫做“单精度浮点数”;double 是八个字节的,也叫做"双精度浮点数”

字节的含义:把一个二进制位称为一个bit,8个bit放在一起,就称为是一个字节

a=10
print(type(a))

b=1.1
print(type(b))

out:
<class 'int'>
<class 'float'>

3、字符串

在这里插入图片描述


有一段话: My name is “tangzhong” 把这段话作为字符串,如果字符串里面包含了双引号,表示字符串就可以用单引号引起来;如果字符串里面包含了单引号,表示字符串就可以使用双引号引起来。

如果同时有单引号,和双引号,咋办?
Python中还有一种字符串,使用三引号表示 ''' 或者"""

c='hello'
print(type(c))

d="world"
print(type(d))

f= " my name is 'shijunjie' "
print(f)
print(type(f))

out:
<class 'str'>
<class 'str'>
 my name is 'shijunjie' 
<class 'str'>
print(len(f))

a1="hello"
a2="world"
print((a1+" "+a2))

out:
23
hello world

在这里插入图片描述

在Python 中报错,有两种情况:
①语法错误,在程序运行之前,Python解释器,就能把错误识别出来。
②运行错误,在程序运行之前,识别不了的,必须要执行到对应的代码,才能发现问题。

4、布尔类型

真True
假False

注意都是大写

c1=True
c2=False
print(type(c1))
print(type(c2))

out:
<class 'bool'>
<class 'bool'>

5、其他类型

类型的意义?
类型带来的意义
1.不同的类型,占用的内存空间是不同的. 占几个字节
int默认是4个字节.动态扩容.
float固定8个字节.
bool一个字节就足够了
str变长的
2.不同的类型,对应能够进行的操作也是不同的
int / float,+ -*/ 则不能使用len函数
str +但是不能–不能*也不能/ 可以使用len函数

动态类型特性

变量类型在运行过程中,可以改变

a=10
print(type(a))

b='hello'
print(type(b))

out:
<class 'int'>
<class 'str'>

静态类型特性

程序运行过程中,类型始终不变,C++中

总结

一个编程语言,是否是动态类型,只是取决于运行时,类型是否发生改变,不取决于变量定义的时候是否声明类型!

Python 作为一个动态类型的语言,在定义变量的时候,也是可以写类型的!

动态类型写法,比较灵活的提高了语言的表达能力,然鹅,在编程中, “灵活"这个词往往是"贬义”,更容易出错!相比之下,静态类型的语言还是更好一些的,尤其是在大型的程序中,多人协作开发。
因此很多公司,在创业之初,喜欢使用Python来开发,产品规模小,也就是一两个程序猿,很快的就能搞出来,但是当项目达到一定的规模之后,动态类型的劣势就逐渐体现了。很多公司就会针对之前Python 写的代码,使用其他语言进行重构。

6、注释

  • 注释行
# 后面跟的就是注释
  • 文档字符串三引号注释
"""
中间的就是注释
"""

批量注释:ctrl + /

7、输出到控制台

a =10
希望使用print打印出"a =10”这样的内容
我们希望把数字和字符串混在一起来打印

a = 10
print(f"a={a}")

在这里插入图片描述

print(f"a={a}") 这个语法就叫做格式化字符串 f-string,f=format,此时就可以使用{ }这样的语法,往字符串里嵌入变量或者表达式

像格式化打印字符串很多编程语言都进行了各自的探索

C中printf,使用%d,%s这样的占位符
C++采用了std:cout,使用<<
Java采用了字符串拼接,允许字符串和其他类型的值进行拼接

8、从控制台输入

# 通过控制台来获取一个数
num = input("请输入您要输入的数字:")
print(f"您输入的是{num}")

在这里插入图片描述

input 执行的时候,就会等待用户输入!这个等待可能是一个非常长的等待,完全就看用户啥时候去输入,如果用户始终不输入,就会一直在这里死等。
input返回的值,其实是一个str,如果只是单纯的拿到用户的输入,然后打印,此时就按照str打印即可,如果需要根据用户输入的内容进行算术计算,此时就需要先把读到的 str 转换为 int,可以使用int ( )

a = input("请输入第一个数字:")
b = input("请输入第一个数字:")

a=int(a)
b=int(b)
print(f"a+b={a+b}")

在这里插入图片描述

如果想把整数转化为字符串:

str()
float()

用户输入四个小数,求平均值?

a= input("请输入第1个数字:")
b= input("请输入第2个数字:")
c= input("请输入第3个数字:")
d= input("请输入第4个数字:")

a=float(a)
b=float(b)
c=float(c)
d=float(d)
avg= (a+b+c+d) /4
print(avg)

9、运算符

算数运算符

+ - * / % ** //

先算乘方,然后是乘除,最后算加减,如果运算过程中想修改默认的运算顺序,就需要加上( )

这种运行时出现的错误,也叫做"抛出异常"
如果程序运行过程中抛出异常,程序直接就终止了,异常后面的代码也就不会执行到了

在这里插入图片描述

有些编程语言中,除整数0也是会抛出异常,除浮点数0会得到无穷大,而Python都认为是除0异常。

除法的第二个问题:
截断的问题 整数/整数,如果除不尽,得到的就是小数,不会出现截断的情况
除了Python 之外,大部分的编程语言,都是整数除以整数,结果还是整数

地板除法 // 向下取整

# 除0 抛异常
# print(10/0)

# 得到小数
print(1/2)

# 开根号
print(2 ** 0.5)


# // 地板除法,向下取整
print(7//2)
print(-7//2)

output:
0.5
1.4142135623730951
3
-4

关系运算符

<="小于等于"
>= 是 "大于等于”
=="等于"
!="不等于"

字符串是按照字典序来比较的;针对中文进行字符串大小比较,是没有意义的.至少按照默认的字典序来说,是没意义的!

字符串之间好像不能直接使用==或者!=来比较呀?
C strcmp,如果直接使用==本质上在比较两个字符串首元素地址.
Java equals方法,如果直接使用==本质上在比较这两个字符串是否是同一个对象
这是一个小众的行为
像Python直接使用==和!=来比较字符串内容相同是大部分编程语言遵守的规则

针对浮点数来说,使用==比较相等,存在一定的风险!
因为浮点数在内存中的存储和表示,是可能存在误差的!!这样的误差在进行算术运算的时候就可能被放大,从而导致== 的判定出现误判!

print(0.1)
print(0.2)
print(0.1+0.2)
print(0.3)

在这里插入图片描述

虽然这两个数字已经非常非常接近了,但是如果直接使用==进行比较,仍然会出现False的情况!

正确的比较浮点数相等:作差,看差值是否小于预期的误差范围!

a = 0.1+0.2
b = 0.3
print(-0.00001 < (a-b) < 0.00001)

在这里插入图片描述

Python中支持这种连续小于的写法。判定a - b既是小于0.000001又是大于-0.000001

逻辑运算符

and or not

a = 10
b = 20
c = 30
print(a < b and b < c)
print(a > b or b > c)
print(not a < b)

比如C++或者Java里:

  • &&表示逻辑与 并且
  • || 表示逻辑或 或者
  • !表示逻辑非 逻辑取反.

逻辑运算符中的重要细节:短路求值
对于and操作来说,如果左侧表达式为False,那么整体的值一定是False,右侧表达式不必求值!
对于or操作来说,如果左侧表达式为True,那么整体的值一定是True,右侧表达式不必求值!

a = 10
b = 20
c = 30

print(a > b and 10 / 0 == 1)
print(a < b or 10 / 0 == 1)

在这里插入图片描述

右侧就不再求值了,所以一旦右侧求值了,是能够看到代码出现异常的!如果代码没有抛出异常,右侧没有求值!

赋值运算符

= 等号表示赋值

== 表示比较相等

链式赋值:

a=b=c=10

多元赋值:

a,b=10,20

# 使用多元赋值一步完成交换:
a = 10
b = 20
a, b = b, a
print(a, b)

在这里插入图片描述

复合运算符

Python中不支持+ +- -这样的自增自减操作的!!
++a之所以没有语法报错,是Python解释器把+当成了正号

--a也是不会报错,把-当成了负号.负负得正,最终的值仍然不变
但是后置++和后置- -都是语法上报错的!

使用a += 1已经很方便的完成了自增了
++操作其实挺讨厌,前置++和后置++的区别,对于初学者来说是非常不友好的!

10、其他

除了上述之外,Python中还有一些运算符,比如身份运算符(is, is not),成员运算符(in, not in),位运算符(&| ~ ^ << >>)等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值