文章目录
学习资源:https://www.bilibili.com/video/av4050443 python编程:从入门到实践
环境:win10+vscode +Anaconda(python3.7)
一、遇到问题
1.CMD中无法无法查的python版本 并跳转微软商店
解决方法:修改环境变量 系统变量中将安装的python优先级提前
二、学习笔记
1."与’的区别
(https://blog.csdn.net/kevindree/article/details/86796664)
两者没有区别,都可以用来表示一个字符串。但可以通过单双混合使用,可以减少转义字符
my_str1 = 'I\'m a student'
my_str2 = "I'm a student"
print(my_str1)
print(my_str2)
————————————————————下方为输出结果————————————————————
I'm a student
I'm a student
两者结果都为I'm a student
my_str1 = "Jason said \"I like you\""
my_str2 = 'Jason said "I like you"'
print(my_str1)
print(my_str2)
————————————————————下方为输出结果————————————————————
Jason said "I like you"
Jason said "I like you"
结果都为 Jason said "I like you"
2.(&,|)和(and,or)之间的区别
https://blog.csdn.net/weixin_40041218/article/details/80868521
2.1数值变量
&、|分别表示按位与、按位或
1 & 2 # 输出为0
1 | 2 # 输出为3
and有0反0,无0反第二个数
or 返回第一个非0数
# 判断变量是否为0, 是0则为False,非0判断为True,
# and中含0,返回0; 均为非0时,返回后一个值,
2 and 0 # 返回0
2 and 1 # 返回1
1 and 2 # 返回2
# or中, 至少有一个非0时,返回第一个非0,
2 or 0 # 返回2
2 or 1 # 返回2
0 or 1 # 返回1
2.2逻辑变量
两者基本一致
In[103]:(3>0) | (3<1)
Out[103]: True
In[104]:(3>0) and (3<1)
Out[104]: False
In[105]:(3>0) or (3<1)
Out[105]: True
In[106]:(3>0) & (3<1)
Out[106]: False
注意事项: x and y 中 ,x为false则不会计算y 等同 |
3.python语句中的 end=’'用法
结合程序讲解:
原程序
temp= input("请输入一个整数 :")
number =int(temp)
while number:
i = number - 1
while i:
print(' ',end ='')
i = i - 1
j = number
while j:
print('*', end = '')
j = j - 1
print()
number = number - 1
————————————————————下方为输出结果————————————————————
请输入一个整数 :5
*****
****
***
**
*
将print(’ ‘,end =’’)改为 print(’ ')后 此时每个print函数在字符串末尾添加一个换行符
temp= input(" 请输入一个整数 :")
number =int(temp)
while number:
i = number - 1
while i:
print(' ') #此处发生了变化
i = i - 1
j = number
while j:
print('*', end = '')
j = j - 1
print()
number = number - 1
请输入一个整数 :5
*****
****
***
**
*
#若把print(' ')换成print('1') 更为明显
请输入一个整数 :5
1
1
1
1
*****
1
1
1
****
1
1
***
1
**
*
end =’‘的位置 print(’ ‘,‘1’,end =’’) 并调换三者之间的关系 (无影响,但注意格式,end =’'前面加,后面加+)
print(' ','1',end ='')
————————————————————下方为输出结果————————————————————
请输入一个整数 :5
1 1 1 1*****
1 1 1****
1 1***
1**
*
#其中,经过print之后显示为” “(空格)
即print('The quick brown fox', 'jumps over', 'the lazy dog')
为The quick brown fox jumps over the lazy dog
print(end =''+' '+'1')
print(' ' ,end =''+'1')
————————————————————下方为输出结果————————————————————
均为:
请输入一个整数 :5
1 1 1 1*****
1 1 1****
1 1***
1**
*
print(end =''' ','1') #错误
print(end ='5'+' '+'1')
————————————————————下方为输出结果————————————————————
请输入一个整数 :5
5 15 15 15 1*****
5 15 15 1****
5 15 1***
5 1**
*
4.字符串转换()
浮点型转化为整数,直接截断处理,去掉小数点后面的 5.99——>5
str float int 可定义为变量 str=”“ 但完全不建议
切记int()只能转化由纯数字组成的字符串
a ="520"#字符串
b =int (a)
c=float(b)
print(b+c)
————————————————————下方为输出结果————————————————————
1040.0
a ="520.9" #字符串
b =int(a)#切记int()只能转化由纯数字组成的字符串
c=float(b)
print(b+c)
————————————————————下方为输出结果————————————————————
报错 发生异常: ValueError
invalid literal for int() with base 10: '520.9'
a ="520.9" #字符串
c=float(a)
b =int(c)
print(b+c)
————————————————————下方为输出结果————————————————————
1040.9
type() 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象(暂不深究)。
isinstance() 函数来判断一个对象是否是一个已知的类型
isinstance(320.25,bool) 判断类型是否一致
5.python运算符
https://www.runoob.com/python/python-operators.html#ysf4
注意:python2与python3存在不一样的地方
python3中 /正常除法 10/8=1.25 “//”表示地板除法
python2中 / 地板除法 10/8 =1
3**5=3^5
-32=-(3 ** 2)=-9 3-2=3**(-2)=0.11111111111111
not or and 的优先级是不同的: not > and > or (直接用括号)
6.分支和循环(8-10)
x,y,z="五五开","white","马飞飞"
卢本伟=x if x == y else z
print(卢本伟)
————————————————————下方为输出结果————————————————————
马飞飞
#结果为马飞飞 if 后面的判断句,正确为x,错误为z
assert 断言 在其自杀前将其击毙 可当作检查点
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
x,y,z互换 :x, y, z = z, y, x
for i in range(0, 10, 2): 从0到小于10 每次跳2 0,2,4,6,8
Python 字典 in 操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。
而 not in 操作符刚好相反,如果键在字典 dict 里返回 false,否则返回 true。
break continue
7.列表(11-13)
7.1列表中插入
append #每次只能加一个
member=['卢本伟','white']
print(member)
print(len(member))
member.append('五五开')
print(member)
print(len(member))
————————————————————下方为输出结果————————————————————
['卢本伟', 'white']
2
['卢本伟', 'white', '五五开']
3
extend #可插入列表 即[]
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
member=['卢本伟','white']
member.extend(['五五开',"卢本伟牛逼"])
print(member)
print(len(member))
————————————————————下方为输出结果————————————————————
['卢本伟', 'white', '五五开', '卢本伟牛逼']
4
insert #从指定位置或0开始 插入
insert() 函数用于将指定对象插入列表的指定位置,无返回值
list.insert(index, obj)
index – 对象 obj 需要插入的索引位置。(插完后 在index处指向obj)
obj – 要插入列表中的对象。
7.2列表中删除
remove(‘’)查找并删除 只删除第一个
member=['卢本伟牛逼','卢本伟牛逼','卢本伟牛逼','五五开牛逼','五五开牛逼','痛苦呀马飞飞']
member.remove('卢本伟牛逼')
print(member)
————————————————————下方为输出结果————————————————————
['卢本伟牛逼', '卢本伟牛逼', '五五开牛逼', '五五开牛逼', '痛苦呀马飞飞']
#只删除找到的第一个
del[] 删除第几个
member=['卢本伟牛逼','五五开牛逼','卢本伟牛逼','卢本伟牛逼','五五开牛逼','痛苦呀马飞飞']
del member[2]
print(member)
del member #全部删除
————————————————————下方为输出结果————————————————————
['卢本伟牛逼', '五五开牛逼', '卢本伟牛逼', '五五开牛逼', '痛苦呀马飞飞']
pop() 取出最后一个并删除 而且返回值
7.3列表分片
member[a:b] 从a到b且不包含b
member2=member #指针方式指向
member2=member[]
下面着重讲解[]与直接赋值的区别
member=['卢本伟牛逼','五五开牛逼','卢本伟牛逼','卢本伟牛逼','五五开牛逼','痛苦呀马飞飞']
member2= member[:]#不受member修改影响
member3= member
del member[1]#删除
print(member2)#不受member修改影响
print(member3)#受影响
del member
print(member2)
print(member3)#此时已经没有了member 无影响
————————————————————下方为输出结果————————————————————
['卢本伟牛逼', '五五开牛逼', '卢本伟牛逼', '卢本伟牛逼', '五五开牛逼', '痛苦呀马飞飞']#member2
['卢本伟牛逼', '卢本伟牛逼', '卢本伟牛逼', '五五开牛逼', '痛苦呀马飞飞']#member3
['卢本伟牛逼', '五五开牛逼', '卢本伟牛逼', '卢本伟牛逼', '五五开牛逼', '痛苦呀马飞飞']
['卢本伟牛逼', '卢本伟牛逼', '卢本伟牛逼', '五五开牛逼', '痛苦呀马飞飞']
————————————————————以地址的形式看下之间的变化————————————————————
old = [1, 2, 3, 4, 5]
new = old
print(id(new)) #2405817776456
print(id(old)) #2405817776456
old = [6]
print(id(new)) #2405817776456
print(id(old)) #2405834175048
print(new)
print(old)
————————————————————下方为输出结果————————————————————
2405817776456
2405817776456
2405817776456
2405834175048
[1, 2, 3, 4, 5]
[6]
由上面可得:重新赋值时,地址会发生改变
7.4列表中的比较操作符
依次比较
list1=[123,456]
list2=[234,456]
print(list1<list2)
————————————————————下方为输出结果————————————————————
True
列表可拼合、重复
用in判断列表中的列表
常见列表的内置函数
list.count(a) a在list中出现了多少次
list.index (a,b,c) 在list[b,c]中第一次出现a的位置 含b不含c
list.reverse() 前后反转
list.sort() 默认从小到大排, sort(revers=True) 反着来
list.copy() 方法更使用切片拷贝是一样的,即地址会发生改变
list.clear() 清空列表,但列表仍存在