Python0基础(中)——期末不挂科

Posted 秋名山码民

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python0基础(中)——期末不挂科相关的知识,希望对你有一定的参考价值。

前言

本来我是不想肝了,但是看到了这个,

还有这几个白嫖怪,

虽然我不知道你是谁,但是还是感谢,今天熬个夜来再肝一篇,秋名山路很长,也希望我们能一起走下去!

python入门的进阶知识——运算

运算符

这个知识难亦或是不难,看你想要学到什么程度了,如果是期末不挂科的话,靠上一篇就已经够了,但是绩点嘛,还是要学一点的

位运算符

几乎是每个语言都是一样的,所以说我还是想啰嗦一下,当你开始学算法的时候,会发现这个东西是真的快,天下武功,唯快不破

&按位与 相应位为1,否则为0
|按位或 相应位有一个1,就为1
^按位异或 当俩对应的二进制位相异时,结果为一,
~按位取反,对于每个二进制位取反操作
<< 左移 运算数的各二进位全部左移若干位,高位丢弃,低位补0。
|>> 右移 把">>"左边的运算数的各二进位全部右移若干

a = 60  # 60 = 0011 1100
b = 13  # 13 = 0000 1101
c = 0

c = a & b  # 12 = 0000 1100
print("1 - c 的值为:", c)

c = a | b  # 61 = 0011 1101
print("2 - c 的值为:", c)

c = a ^ b  # 49 = 0011 0001
print("3 - c 的值为:", c)

c = ~a  # -61 = 1100 0011
print("4 - c 的值为:", c)

c = a << 2  # 240 = 1111 0000
print("5 - c 的值为:", c)

c = a >> 2  # 15 = 0000 1111
print("6 - c 的值为:", c)

逻辑运算符

and or not
3个,按照字面意思来理解

成员运算符

in x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True

这个还是有用的,在c++中要单独定义函数

list1 = [1,2,3,4,5]
x=1
y=10
if(x in list1):
    print("a in list")
if(y not in list1):
    print("b not in list")

身份运算符

这个涉及到了对象,在期末编程解决问题的时候不用也能解决,

运算符的优先级问题

这个的考察形式有点像当年奥赛初赛的考察形式,就是阅读程序写答案的题,不能用电脑啊!,所以说要记忆

字符串加强

不得不说字符串的函数太多了,和c++还是有区别的,比c++多,使用也有些许不同,我根据题库来挑几个常用的,不要全记了,实在不会的话,暴力来解决,循环字符串,if判断,来达到自己的需求

合并,索引基本操作上一篇已经写过了,所以这一篇我们来说一点比较有用的东西,全学完可能有点困难,毕竟我们的目标是:不挂科

\\ 转义:注意’\\n’换行操作
r’\\n’输出**\\n.**
具体定义如下:
原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

a = "Hello"
b = "Python"
 
print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])
 
if( "H" in a) :
    print("H 在变量 a 中")
else :
    print("H 不在变量 a 中")
 
if( "M" not in a) :
    print("M 不在变量 a 中")
else :
    print("M 在变量 a 中")
 
print (r'\\n')
print (R'\\n')

难点

格式化字符串,有点像强制转换的意思,了解即可,写题中可以不使用
常用的格式化字符串符号有以下几个

%c:格式化字符及其ASCII码
%s: 格式化字符串
%d:格式化整数
%o: 格式化无符号八进制数
%x:格式化无符号十六进制数

题外话:在 Python 中,字符串格式化使用与 C 中 printf 函数一样的语法。

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

内置函数

🤣多啊,怎么记?我就说一下我记的几个吧,感觉这几个还经常使用

find 查找:检测字符串中是否包含子字符串 str
语法:str.find(str, beg=0, end=len(string))
其中:str – 指定检索的字符串
beg – 开始索引,默认为0。
end – 结束索引,默认为字符串的长度。

也就是说我们可以这样写

str1 = "Runoob example....wow!!!"
str2 = "exam";
 
print (str1.find(str2))
print (str1.find(str2, 5))
print (str1.find(str2, 10))

通过len()函数返回字符串的长度

text='python'
len(text)


当你上面的都没有记住时,请记住replace这个函数 替换

s = 'abc12321cba'
 
print(s.replace('a', ''))

也就相当于一个删除操作,将s中的a都替换为" "
该字符串在Python中是不可变的,因此此函数将返回一个新字符串,而原始字符串将保持不变。

列表

这块注意索引,python中的列表更像c中数组的超集
从头开始

从尾开始

常用操作

插入,删除,还是一样的知道函数容易做,不知道函数也能做,索引+循环+判断,自己造一个出来就行了,列表允许修改

增加:append() 方法用于在列表末尾添加新的对象。

list = ['Google', 'Runoob', 1997, 2000]
 
print ("第三个元素为 : ", list[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2])
 
list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')
print ("更新后的列表 : ", list1)

删除:del 语句

list = ['Google', 'Runoob', 1997, 2000]
 
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)


如果你一个函数都不记的话也不是不行,然后我们循环来写

#for 循环内部使用变量 in 列表
name_list = ["zhangsan","lisi","wangwu"]
for name in name_list:
    # 循环内部针对列表元素进行操作
     print(name)

元组

元组与列表最大的不同,就是元组不允许修改,在python中提供了一个函数可以将元组修改为列表

list() 方法用于将元组或字符串转换为列表。
相当于一个强制转换

#元组转换列表
aTuple = (123, 'Google', 'Runoob', 'Taobao')
list1 = list(aTuple)
print ("列表元素 : ", list1)
#字符串转换列表
str="Hello World"
list2=list(str)
print ("列表元素 : ", list2)

选看:元组为什么不能修改

我们从内存的角度来看

>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> tup[0] = 'g'     # 不支持修改元素
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(tup)     # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800    # 内存地址不一样了

重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象

字典和集合

考察的也不多,出来基本上没有编程大题,所以秉承着不挂科的原则,我就不说了,我们来看条件语句+循环语句,这个才是期末考试的重点

条件控制

这个应该是高中学过的吧🤞

if a:
	print(a)
elif b:
	print(b)
else:
	print(c)

如果a为true,打印a
如果a为false,但是b为true,打印b
如果a,b都为false,则打印c
记得加 : 使用缩进来区分


简单的猜数字案例

number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
    guess = int(input("请输入你猜的数字:"))
 
    if guess == number:
        print("恭喜,你猜对了!")
    elif guess < number:
        print("猜的数字小了...")
    elif guess > number:
        print("猜的数字大了...")

if 嵌套

在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。

num=int(input("输入一个数字:"))
if num%2==0:
    if num%3==0:
        print ("你输入的数字可以整除 2 和 3")
    else:
        print ("你输入的数字可以整除 2,但不能整除 3")
else:
    if num%3==0:
        print ("你输入的数字可以整除 3,但不能整除 2")
    else:
        print  ("你输入的数字不能整除 2 和 3")

循环语句

格式:while 判断条件:
执行语句……

值得注意的一点是python中没有do……while……循环

例题:

n = 100
 
sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1
 
print("1 到 %d 之和为: %d" % (n,sum))

还记得我高中最开始学循环的时候,有的算法题目不会,提交的时候给它整一个死循环,来个玉石俱焚

var = 1
while var == 1 :  # 表达式永远为 true
	print(var)

for语句:
for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串

languages = ["C", "C++", "Perl", "Python"]
for x in languages:
    print (x)


当你入门的时候,应该用过这样一个函数,range(),目的就是生成一个数列

for i in range(5,9)#区间
	print(i)
for i in range(5)
	print(i)
for i in range(0,10,3)#间隔3,也可以说是步长为3
	print(i)

break和continue和else

break

n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)
print('循环结束。')

continue

n = 5
while n > 0:
    n -= 1
    if n == 2:
        continue
    print(n)
print('循环结束。')

例子:
循环字符串 Runoob,碰到字母 o 跳过输出

for letter in 'Runoob':     # 第一个实例
   if letter == 'o':        # 字母为 o 时跳过输出
      continue
   print ('当前字母 :', letter)
 
var = 10                    # 第二个实例
while var > 0:              
   var = var -1
   if var == 5:             # 变量为 5 时跳过输出
      continue
   print ('当前变量值 :', var)
print ("Good bye!")

对比之下,可以变成检测字符串中是否有一个字符,也就是我们,上面记忆的函数,所以我才敢说字符串函数不用全部记忆

else:循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被 break 终止时不执行。

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, '等于', x, '*', n//x)
            break
    else:
        # 循环中没有找到元素
        print(n, ' 是质数')

pass语句:这个是为了程序的完整性而出现的,没有实际的意义

for letter in 'Runoob': 
   if letter == 'o':
      pass
      print ('执行 pass 块')
   print ('当前字母 :', letter)
 
print ("Good bye!")

最后

还是老样子,原创不易,求个三连,感谢各位的支持,我是那个陪你头秃,陪你变强的小码民!

以上是关于Python0基础(中)——期末不挂科的主要内容,如果未能解决你的问题,请参考以下文章

Python0基础(上)——期末不挂科

只用半小时,只用半小时,只用半小时!给自己一个机会!!!看完保你web开发一期末不挂科,老师看了都说好!!!

数据分析与挖掘期末复习笔记(不挂科)

《算法设计与分析》期末不挂科

Python数据分析与可视化期末复习笔记整理(不挂科)

期末不挂科计算机网络 数据链路层