Python--学习之路
记录一些遇到的问题,百度去搜别人的,很多都是乱七八糟、,对错都不管的乱复制,所以还是自己总结,用起来比较方便
代码样例基本来自菜鸟教学,我只是挑选自己觉得重要的点,大家也可以直接在菜鸟教学学习哈,那边比较全面
菜鸟教学:https://www.runoob.com/python3/python3-tutorial.html
-
1.print()中文乱码
这是print函数输出编码问题,添加下面的代码
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
-
2.python变量类型
-
2.1赋值、输出(字符串、列表、元组、字典、集合)
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
----------------------------------------------------------------
x='abcdefghijklmn' #字符串
print(x)
print(x[1:4])
print(x[1:])
print(x*2)
print('----------------------------------')
结果:
abcdefghijklmn
bcd
bcdefghijklmn
abcdefghijklmnabcdefghijklmn
---------------------------------------------------------------
y=['abc',123,456,789,'dfg'] #列表
print(y)
print(y[1:4])
y[1]=1000 #可以进行赋值
print(y[1:])
print(y*2)
print('----------------------------------')
结果
['abc', 123, 456, 789, 'dfg']
[123, 456, 789]
[1000, 456, 789, 'dfg']
['abc', 1000, 456, 789, 'dfg', 'abc', 1000, 456, 789, 'dfg']
---------------------------------------------------------------
z=('abc',123,456,789,'dfg') #元组
print(z)
print(z[1:4])
#z[1]=1000 #不可以进行赋值
print(z[1:])
print(z*2)
print('----------------------------------')
结果
('abc', 123, 456, 789, 'dfg')
(123, 456, 789)
(123, 456, 789, 'dfg')
('abc', 123, 456, 789, 'dfg', 'abc', 123, 456, 789, 'dfg')
-----------------------------------------------------------
s={1:'a',2:'b',3:'c',4:'d'} #字典
print(s)
print(s[1])
print(s[3])
print(s.values())
print(s.keys())
print('---------------------------------')
结果:
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
a
c
dict_values(['a', 'b', 'c', 'd'])
dict_keys([1, 2, 3, 4])
--------------------------------------------------------
#集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
#基本功能是进行成员关系测试和删除重复元素。
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites) # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Runoob' in sites :
print('Runoob 在集合中')
else :
print('Runoob 不在集合中')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
结果:
{'Facebook', 'Baidu', 'Google', 'Taobao', 'Runoob', 'Zhihu'}
Runoob 在集合中
{'c', 'b', 'a', 'd', 'r'}
{'d', 'r', 'b'}
{'c', 'b', 'a', 'z', 'l', 'd', 'r', 'm'}
{'a', 'c'}
{'z', 'l', 'b', 'd', 'r', 'm'}
--------------------------------------------------------
-
2.2数据类型的转换
-
3.列表 list
#append添加列表元素
list = ['Google', 'Runoob', 1997, 2000]
print ("第三个元素为 : ", list[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2])
list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')
print ("更新后的列表 : ", list1)
结果:
第三个元素为 : 1997
更新后的第三个元素为 : 2001
更新后的列表 : ['Google', 'Runoob', 'Taobao', 'Baidu']
-----------------------------------------------------------------------------
#del删除列表元素
list = ['Google', 'Runoob', 1997, 2000]
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)
结果:
原始列表 : ['Google', 'Runoob', 1997, 2000]
删除第三个元素 : ['Google', 'Runoob', 2000]
----------------------------------------------------------------------------
列表方法在菜鸟教学里有详细的实例,自行查看哈
-
4.元组 tup
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
a = () #空元组
a = (50,) #只包含一个元素
-
5.字典 dict
-
5.1修改字典
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新 Age
tinydict['School'] = "菜鸟教程" # 添加信息
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
结果:
tinydict['Age']: 8
tinydict['School']: 菜鸟教程
---------------------------------------------------------------------------------
-
5.2删除字典
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del tinydict['Name'] # 删除键 'Name'
tinydict.clear() # 清空字典
del tinydict # 删除字典
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
结果:
Traceback (most recent call last):
File "/runoob-test/test.py", line 9, in
print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined
-----------------------------------------------------------------------------
-
6.集合 set
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
----------------------------------------------------------------------------
-
6.1添加元素
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
---------------------------------------------------------------------------
thisset = set(("Google", "Runoob", "Taobao"))
thisset.update({1,3})
print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
thisset.update([1,4],[5,6])
print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
-
移除元素
#s.remove( x )将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误
thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)
{'Google', 'Runoob'}
thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
File "", line 1, in
KeyError: 'Facebook'
-------------------------------------------------------------
#s.discard( x )方法也是移除集合中的元素,且如果元素不存在,不会发生错误
thisset = set(("Google", "Runoob", "Taobao"))
thisset.discard("Facebook") # 不存在不会发生错误
print(thisset)
{'Taobao', 'Google', 'Runoob'}
-------------------------------------------------------------
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
print(x)
Runoob
#set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
-
7.条件语句
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print("hello")
# 输出结果: hello
num = 10
if num < 0 or num > 10: # 判断值是否在小于0或大于10
print("hello")
else:
print("undefine")
# 输出结果: undefine
num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print("hello")
else:
print("undefine")
# 输出结果: undefine
-
循环语句
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
# while-----continue 和 break 用法
i = 1
while i < 10:
i += 1
if i%2 > 0: # 非双数时跳过输出
continue
print(i) # 输出双数2、4、6、8、10
print('--------------------------------')
i = 1
while 1: # 循环条件为1必定成立
print(i)
i += 1
if i%2 > 0: # 非双数时跳过输出
break
else:
i += 2
print(i)
# while … else 在循环条件为 false 时执行 else 语句块
count = 0
while count < 5:
print (count, " is less than 5")
count = count + 1
else:
print (count, " is not less than 5")
print("--------------------------")
#循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)
#导致循环终止时被执行,但循环被 break 终止时不执行。
# for
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, ' 是质数')