Python基础语法学习-Day1

Python基础学习-Day1

Python是一个大家都非常熟悉的软件,能用来做前端后端,非常火爆且语法简单。但对于我来说,实在是太过陌生,因此我决定有必要重新打好基础,直到自己能准确快速的默写出代码为止。我会将自己所阅读的内容以及理解放到这里,并标明出处,侵删。

学习内容

今天的学习内容主要都是以Python的基础语法为主,懂得相关的基础知识,才能在日后更快更直接的读懂代码的含义。

Python的语法

为了了解变量、运算符、数据类型、位运算等,先从python的语法开始学习。
Python的语法主要从以下四个方面入手:

  • 命名规则
  • 缩进原则
  • 特殊关键字
  • 特殊运算符

命名规则

命名方面有如下规则需要我们谨记(嫌字多的看加粗即可):

  • 变量名只能包含字母、数字、下划线。变量名可以用字母或下划线打头,但不能以数字打头。比如,我们可以用pppgu_1,但不能用1_pppgu。
  • 变量名不能含有空格,只能用下划线来分割单词。比如,可以用pppgu_1,但是不能pppgu 1。
  • Python中不能将关键字和函数名作为变量名,就是Python软件中有特殊作用的词,都不能拿来做变量名,比如print。
  • 变量名最好简单易懂,具有描述性
  • 尽量不要用小写字母l和大写字母O,会被误认为数字1和0。

另外,Python中以下划线“_”开头是有特殊意义的。

  • 类变量若以单下划线(_)开头,代表不能直接被访问。
  • 类变量若以双下划(__)开头,表示为类的私有成员,不能被导入和其他类变量访问。
  • 以双下划开头和双下划线结尾的变量是 Python 里的专用标识,有特殊的身份。

缩进原则

Python的缩进很简单,一般来说,如果用的是Pycharm的话,格式不对的话它会直接对你进行提示,我们只用点击即可。用Spider的话,格式不对会在当前行的代码序号前出现感叹号,显示格式有误,这时候我们可能就需要用tab一下。

一般我们用def或者if这些固定语句时,按下enter键,软件会自动调节到合适的位置让我们继续编写。Python 的缩进方法,一般为 4 个字符。

特殊关键字

前面的命名原则第三条:Python中不能将关键字和函数名作为变量名。这里呢直接附上参考资料的图吧。(懒)
《Python编程从入门到实践》

特殊运算符

Python的运算符很多,包括:

+       -       *       **      /       //      %      @
<<      >>      &       |       ^       ~       :=     <
>       <=      >=      ==      !=     and      or    not

其中,包含了算术运算符、比较运算符、逻辑运算符以及位运算符。
想必算术运算符,是再简单不过了,无非便是加减乘除等用法。

  •  +      -       *       **      /       //      %
    

比较运算符则是上面的,大于小于,大于等于,小于等于,不等于

  •   <=      >=      ==      !=     >      <
    

逻辑运算符则是一些基本的逻辑用词了,对应的and = 与,or = 或,not = 非

  •   and             or             not
    

而位运算法居然让我理解了好一会儿,便单独展开记录一下吧。

位运算符

位运算符有:

操作符名称
~按位取反
&按位与
|按位或
^按位异或
<<左移
>>右移
  • 非0即1,非1即0
# 按位非操作
~0 = 1
~1 = 0
  • 与、或、异或
# 与
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

# 或
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

# 异或
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

简单来说:
与,可以理解为and,交集,只有A和B都是1,结果才为1,否则为0
或,可以理解为or,并集,只有A或B其中一个为1,结果才为1,否则为0
异或,可以理解为将或反过来,只要A或B不同为1,结果才为1,否则为0

而他们的运算,是根据二进制来运算的。下面便是一个例子。

与运算:5&3计算过程为 0101(2)&0011(2)=0001(2)=1
意思是把两个数全部转换为二进制进行比较,5的二进制为0101,3的二进制为0011.则这两个数的二进制数种第一位相同,取一,其余全部取零。得0001,再转换为十进制结果为1。再举个例子:

                            30 & 45 = 12

即30=(011110), 45=(101101)位运算得12(1100)

其余三种位运算与此相同,需根据他们的原理来判断每位数是1还是0

2.或运算:5|3计算过程为 0101(2)|0011(2)=0111(2)=7

3.异或运算:5^3计算过程为 0101(2)^0011(2)=0110(2)=6

  • 左移、右移

首先要知道是二进制按位移动,且用0补位。举个例子

00 00 10 11 --> 11 # 二进制00 00 10 11 等于11
11 << 3 # 将11的二进制往左移3位,便可得到下面的值
01 01 10 00 # 左移三位的结果
01 01 10 00 --> 88 # 转换成10进制便是 88

右移同理。

其他运算符
操作符名称
is
not is不是
in存在
not in不存在

理解很简单,见代码:

letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] if 'A' in letters:
    print('A' + ' exists')
if 'h' not in letters:
	print('h' + ' not exists')
# 变量都是不可变类型
a = "hello" 
b = "hello"
print(a is b, a == b)

这里需要注意的是:

  1. is, is not 对比的是两个变量的内存地址
  2. ==, != 对比的是两个变量的值

即:
1、假如比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not和==,!=是完全等价的。
2、假如对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。

运算符优先级
  • 一元运算符优于二元运算符。如正负号。
  • 算术运算 > 移位运算 > 位运算
  • 逻辑运算最后算
print(-3 ** 2)  # -9
print(3 ** -2)  # 0.1111111111111111 
print(-3 * 2 + 5 / -2 - 4)  # -12.5 
print(3 < 4 and 4 < 5)  # True

数据类型与转换

Python中的基本数据类型如下。我们一般最常接触到的就是字符串和数值型数据。今天先简单阐述这两种数据类型。
字符串,就是一系列的字符。用引号(单引号/双引号都行)括起来的都算作字符串。比如:

a = "真的好棒呀我好喜欢"

这句话就是字符串变量,我们在变量栏里可以看到str,这便代表着字符串的意思。

数值型数据,则有整数int,浮点数float等。带有小数点的数字都叫浮点数。相同的数据类型可以互相相加相乘相减等等一些事,但如果不同就会报错。比如:

age = 22
message = "pppgu " + "is " + str(age) + " years " + "old"
print(message)


还有一种特殊的数据类型叫做:bool类型。该类型只能取两个值,一个是True,另一个是False。

获取类型的信息

用type(object)以及isinstance(object, classinfo)即可得到信息。

print(type(1))  # <class 'int'> 
print(type(5.2))  # <class 'float'> 
print(type(True))  # <class 'bool'> 
print(type('5.2'))  # <class 'str'>

print(isinstance(1, int))  # True 
print(isinstance(5.2, float))  # True 
print(isinstance(True, bool))  # True 
print(isinstance('5.2', str))  # True

两者的区别便在于:
type不会认为子类是一种父类类型,不考虑继承关系,而isinstance则相反。
如果要判断两个类型是否相同,最好就使用isinstance()

类型的转换

转换为整型:int(x, base=10)
转换为字符串: str(object=’’)
转换为浮点:float(x)

类型间转换示例
转换为整型int(x, base=10)
转换为字符串str(object=’’)
转换为浮点float(x)
print(int('520'))  # 520
print(int(520.52))  # 520 
print(float('520.52'))  # 520.52 
print(float(520))  # 520.0 
print(str(10 + 10))  # 20 
print(str(10.1 + 5.2))  # 15.3

练习 Q&A

  1. 怎样对python中的代码进行注释?
  • 短注释用# 长注释用’’’ ‘’’
  1. python有哪些运算符,这些运算符的优先级是怎样的
  • 算术运算 > 移位运算 > 位运算
  1. python中is,is not与=,!= 的区别是什么?
  • 具体须依变量类型而定,如果变量都是不可变类型
    ,那么他们便没有区别,变量是可变类型,那么is以及is not 所指的是变量地址是否相同,而is和isnot所指的是变量数值是否相同。
  1. python中包含哪些数据类型?这些数据类型之间如何转换?
  • 整型 浮点 布林 字符串等
  • int() float() str()
  1. leetcode习题136.只出现一次的数字
    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。尝试使用位运算解决此题。
"""
Input file
example1: [2,2,1] 
example2: [4,1,2,1,2]
Output file
result1: 1
result2: 4
"""
class Solution:
	def singleNumber(self, nums: List[int]) -> int:
		a = 0
        for i in nums:
            a ^= i
        return a

# 老实说 上面的我出不来 我只能按下面的来了:
List1 = [2,2,1]
List2 = [4,1,2,1,2]
def singleNumber(nums):
    a = 0
    for i in nums:
        a ^= i
    return a

singleNumber(List1)
singleNumber(List2)		

参考

  • 《python编程语言_v4》,作者:Datewhale
  • 《python中 “与,或,异或”》来源
  • 《Python编程——从入门到实践》,作者:Eric Matthes
  • 《Python 全栈 60 天精通之路》来源
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pigou_

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值