本文规划了解学习python的路线,总结学习python需要具备的基础知识并应用。
(赶快卷起来吧!代码全部分段复制可执行,点个赞呗!)
第一部分:学习路线:第一步,首先明白你为什么学习python,了解学习python的本质:实现功能,方便人的生活等。
第二步,安装python的作业本——解释器(python.exe,anaconda,pycharm社区版),开始接触python语言的基础语法,实现小功能。涉及变量,输入输出函数(input(),print()),逻辑语句(if...else...,while...else...,for...in...)等,然后学习基本数据类型,涉及九种数据类型,同时兼顾计算机底层原理易于理解python的知识。这样你就有了一个好的基础。
第三步,开始学习深一点的python语法,实现比较复杂的功能。涉及函数(内置函数,自定义函数),模块(内置模块,其他导入模块)。学习之后你就对python有了自己的理解。比如用于爬虫的re模块,数学计算的模块numpy,数据分析模块pandas,数据可视化模块matplotlib,机器学习模块sklearn,科学计算的模块scipy等等。python强大的原因就是模块多,类库多。
第四步,高层次的python(我差距很大,仅为现阶段认知)。学习面向对象的解释型通用型的脚本编程语言。进入自己的领域前端开发,web开发,爬虫开发,自动化运维,数据挖掘,人工智能。根据你感兴趣的方向发展下去。做出你的贡献!
第二部分:基础知识: 1、 交互,基本条件语句if,基本循环语句while# -*- coding: utf-8 -*-
"""
Created on Sat Oct 2 10:02:17 2021
初次体验
交互
条件语句if用户登录
循环语句while用户登录
循环语句while猜数字升级版
字符串
字符串的格式化,
字符串编码压缩,解压
习题
基本条件语句if
基本循环语句while
思考1-2+3-4+5...100结果
@author: lx
"""
#用交互输入input,(不换行)输出print,字符串格式化format,变量。
print("what's your name?")
name = input("请输入你的名字:")
print("my name is {0}" .format(name))
print("hello!",name,end="")
print(",I'm smart man")
#用条件语句if实现用户登录,判断用户名'helin'
user = input("请输入用户名:")
if user == "helin":
print("登录成功")
else:
print("登录失败")
#用循环语句while实现用户登录,多次输入,判断是否登录成功。登录失败,提醒剩余次数。
print("开始登录")
num = 1
while num <= 3:
user = input("请输入用户名:")
pwd = input("请输入密码:")
if user == "helin" and pwd == "0612":
print("登录成功")
break
else:
##num=3
# num = num - 1
# print("登录失败","剩余登录次数为",num)
massage = "登录失败,你还有{}次机会" .format(3-num)
num = num + 1
print(massage)
#猜年龄游戏升级版,最大三次机会,最后询问是否再玩一次
count = 0
while count < 3:
count = count + 1
#print(count)
age = int(input("请输入猜测的年龄:"))
if age == 21:
print("猜对了!")
break
# else:
# print("猜错了。")
elif age > 21:
print("大了")
elif age < 21:
print("小了")
if count == 3:
print("很遗憾,猜错了")
choice = input("是否还想继续?(y/n)")
if choice == "y":
count = 0
elif choice == "n":
print("游戏结束。")
break
else:
print("输出错误")
#字符串的格式化,
'''
%形式(需要使用占位符,可用内容或者变量接受;可以同时接受多个;可以给占位符命名,以键值对形式接收。)可在变量作为模板格式化
.format(用{}表示占位符,占位默认从0开始,也可用内容或者变量接受,也从0开始;可以给占位符命名,以赋值形式接收)可在变量作为模板格式化
.f(在{}里面直接输入接收内容或变量;可以显示公式;可以进行进制转化;可以使用函数)
'''
#字符串压缩为字节
date = '字节byte'
transform = date.encode('utf-8')
print(transform)#b'xe5xadx97xe8x8ax82byte'
#文件操作
file_object = open('lod.txt',mode = 'wb') #打开文件
file_object.write(transform) #写入内容
file_object.close() #关闭文件
#字节解压为字符串
old = transform.decode('utf-8')
print(old)#字节byte
###################################################################################
#基本条件语句if
#提示用户输入用户名和密码,用户名等于“hl“且密码等于‘’0206‘’就会输出登录成功;否则登录失败。
user = input('输入用户名:')
pwd = input('输入密码:')
if user == 'hl' and pwd == '123':
print('登录成功')
else:
print('用户名或密码错误')
#猜数字,提示用户输入一个数字,判断数字等于10,输出猜对了;数字大于10,输出大了;数字小于10,输出猜小了
num = int(input('输入猜测的数字:'))
if num == 10:
print('猜对了')
elif num > 10:
print('猜大了')
else:
print('菜小了')
#提示用户输入数字,判断为偶数输出是偶数;否则输出是奇数
num = input('输入数字')
if int(num) % 2 == 0:
print('是偶数')
else:
print('是奇数')
#基本循环语句while
#猜数字改进版,提示用户输入数字后,判断大小是否为10,输出猜大了,或猜小了,或是猜对了。
#如果猜对了跳出循环;否则继续猜。
date = True
while date:
num = int(input('猜测数字:'))
if num == 10:
print('猜对了')
date = False
elif num > 10:
print('猜大了')
else:
print('菜小了')
#输出1-100的整数
num = 1
while num < 101:
print(num,end = 't')
num = num + 1
#输出1-10,跳过7不输出。
num = 1
while num < 11:
if num != 7:
print(num)
num = num + 1
#输出1-100的奇数
num = 1
while num < 101:
if num % 2 == 1:
print(num)
num = num + 1
#输出1-100的偶数
num = 1
while num < 101:
if num % 2 == 0:
print(num)
num = num + 1
#求1-100整数和
num = 1
total = 0
while num <= 100:
total = total + num
num += 1
print(total)
#输出10-1的整数
num = 10
while num > 0:
print(num)
num -=1
#思考题
#思考1-2+3-4+5...100结果
total = 0
num = 1
while num <= 100:
if num % 2 == 1:
total = total + num
else:
total = total - num
num = num + 1
print(total)
#思考1-2+3-4+5...100=-50
total = 0
num = 1
while num < 101:
if num == 100:
total = total - num
print(num,end="=")
elif num % 2 == 1:
print(str(num)+'-',end="")
total = total + num
else:
print(str(num)+'+',end="")
total = total - num
num += 1
print(total)
total = 0
num = 1
while num < 101:
if num == 1:
total = total + num
print(num,end="")
elif num % 2 == 1:
print('+'+str(num),end="")
total = total + num
elif num % 2 == 0:
print('-'+str(num),end="")
total = total - num
num += 1
print('=',total)
2、字符串的方法练习
"""
独有方法
#登陆验证码判断
#数据拼接
循环遍历
for,if,range结合字符串功能使用
公有方法
#倒计时
#用户输入文本,统计出现次数,输出结果。
#提取用户输入的数字,相加输出
"""
#登陆验证码判断
import random
code = random.randrange(1000,9999) #生成验证码
massage = '欢迎登陆nb系统,手机号为{}的验证码为{}'.format(11123456789, code)
print(massage)
tel = int(input('请输入验证手机号:'))
num = int(input('请输入验证码:'))
if tel == 11123456789 and num == code:
print('登陆成功')
else:
print('登陆失败')
#数据拼接
date_list = []
while True:
hobby = input('请输入你的爱好(Qq退出):')
if hobby.lower() == 'q':
break
date_list.append(hobby)
result = ','.join(date_list)
print(result)
#遍历= 索引+循环
text = '欲戴王冠,必承其重。'
#while遍历
index = 0
while index < len(text):
print(text[index])
index += 1
#for循环,变量接收
for item in text:
print(item)
#for + range(),创建一个列表
for index in range(len(text)):
#print(index) #字符串的索引下标
print(text[index])
#倒序
for item in range(9,-1,-1):
#print(item)
print(text[item])
###############################################################################
#倒计时
for num in range(3,0,-1):
text = '倒计时{}秒'
print(text.format(num))
#用户输入文本,统计出现次数,输出结果。
text = input('请输入')
count = 0 #相当于计数器
for item in range(len(text)):
if text[item] == 'a':
count += 1
print('文本中包含{}次字母a'.format(count))
#提取用户输入的数字,相加输出
#思路:对用户输入的文本每一个字符都用isdecimal()判断,是数字的转化为字符串连接起来,将字符串的数字用int()转化相加
num1 = input('请输入')
num2 = input('请输入')
value = ''
for item in range(len(num1)):
if num1[item].isdecimal():
value += num1[item]
value = ''
for item in range(len(num2)):
if num2[item].isdecimal():
value += num2[item]
total = int(value) + int(value)
print(total)
#思路:对用户输入的文本每一个字符都用isdecimal()判断,是数字的存放在列表中,最后用''.join()连接,将字符串的数字用int()转化相加
num1 = input('请输入')
num2 = input('请输入')
num_list1 = []
for item in num1:
if item.isdecimal():
num_list1.append(item)
num_list2 = []
for item in num2:
if item.isdecimal():
num_list2.append(item)
print(int(''.join(num_list1)) + int(''.join(num_list2)))
3、列表元组的方法练习
"""
列表
#综合,创建用户列表,列表的嵌套,动态列表
#for +range找出能被3 整除的数,追加到列表
#去除列表元素的两边空格,找出列表中以'a'开头的,追加到列表输出
#将'陕K'字车牌找到,放入列表,输出车牌数量
元组
#动态创建用户添加到列表,实现用户登录判断
#生成扑克牌
"""
#综合,创建用户列表,列表的嵌套,动态列表
user_list = []
while True:
user = input('请输入用户名(q):')
pwd = input('请输入密码(q):')
if user.lower() == 'q' or pwd.lower() == 'q':
break
date = []
date.append(user)
date.append(pwd)
user_list.append(date)
print(user_list)
#简化
user_list = []
while True:
user = input('请输入用户名(q):')
pwd = input('请输入密码(q):')
if user.lower() == 'q' or pwd.lower() == 'q':
break
date = [user,pwd] #生成动态列表
user_list.append(date)
print(user_list)
#for +range找出能被3 整除的数,追加到列表
date_list = []
for i in range(0,51):
if i == 0:
continue
# print(i)
date = i % 3 == 0
if date:
date_list.append(i)
print(date_list)
#去除列表元素的两边空格,找出列表中以'a'开头的,追加到列表输出
li = [' abb ','cpdd ','yyds','xswl ','cnmd','ay ' ]
date_list = []
for i in li:
date = i.strip()
if date.startswith('a'):
date_list.append(date)
print(date_list)
#将'陕K'字车牌找到,放入列表,输出车牌数量
car_list = ['陕K66666','陕A99999','蒙A88888','陕K12345','陕K67890']
date_list = []
# count = 0
for i in car_list:
if i.startswith('陕K'):
date_list.append(i)
# count += 1
# print(count)
print(date_list)
print(len(date_list))
###############################################################################
#动态创建用户添加到列表,实现用户登录判断
#用户创建自己的账号
user_list = [] #存放用户信息[('name','123'),('user','pwd')]
while True:
user = input('创建用户名(q):')
pwd = input('创建密码(q):')
if user.lower() == 'q' or pwd.lower() == 'q':
break
date = (user,pwd) #生成动态元组
user_list.append(date)
print(user_list)
#创建好后,用户登录
print('登录程序')
user = input('请输入用户名(q):')
pwd = input('请输入密码(q):')
judge = False
for item in user_list: #获取列表元素(元组)
if item[0] == user and item[1] == pwd:
judge = True
break
if judge:
print('登录成功')
else:
print('登录失败')
#生成扑克牌
#扑克颜色
color_list = ['红桃','方块','黑桃','梅花']
#扑克大小
num_list = []
for num in range(1,14):
num_list.append(num)
#最终扑克牌
result = []
for color in color_list:
for num in num_list:
card = (color,num)
result.append(card)
print(result)
4、集合字典的方法练习
"""
集合
#代码实现:用户循环输入,输入已经存在于集合,添加到新列表;输入不存在,添加到原集合
#模拟用户信息录入,已经录入的不会再次录入。
#列表去重
字典
#对两个变量拼接,输出格式信息
#用户循环输入格式字符串:asd|123,将内容分割为键值得形式存放于字典
#将上面列表键放在key_list,值放在value_list
#将列表数字大于66的放入键为k1的值中,小于66的放入键为k2的值中
#初级综合案例
"""
#代码实现:用户循环输入,输入已经存在于集合,添加到新列表;输入不存在,添加到原集合。
date_set = {'helin','wangbaoying','heyuxuan'}
date_list = []
while True:
date = input('请输入(q):')
if date == 'q':
break
if date in date_set:
date_list.append(date)
else:
date_set.add(date)
print(date_set)
print(date_list)
#模拟用户信息录入,已经录入的不会再次录入。
user_set = set()
while True:
name = input('请输入姓名:(q)')
age = input('请输入年龄:(q)')
if name == 'q' or age == 'q':
break
user = (name,age)
if user in user_set:
print('已录入')
else:
user_set.add(user)
print(user_set)
#列表去重
date_list = [11,22,33,11,22,33,456789]
new = set(date_list)#变为集合
date_list = list(new)#变回列表
print(date_list)
#[33, 11, 456789, 22]
################################################################################
#对两个变量拼接,输出格式信息
header = [11,22,33]
date_dict = {
'aaa':['111','222','333'],
'bbb':['444','555','666'],
'ccc':['777','888','999']}
for key,value in date_dict.items():
# print(key,value)
text_list = []
for index in range(len(header)):
passage = '{},{}:{}' .format(key,header[index],value[index])
text_list.append(passage)
#print(text_list)
date = ','.join(text_list)
print(date)
#用户循环输入格式字符串:asd|123,将内容分割为键值得形式存放于字典
info = {}
while True:
date = input('请输入:(1)')
if date == '1':
break
new_date = date.split('|')
info[new_date[0]] = new_date[1] #根据列表的第一个元素为键,创建新键值对{k:v}
print(info)
#将上面列表键放在key_list,值放在value_list
date = {'name':'helin',
'age':21,
'hobby':{'soccer':'swim'},
('1+1','=',2):True}
#增加键值对
result = date['hobby']['qq'] = '123456'
#print(date)
date['k'] = 'v'
#print(date)
#将上面列表键放在key_list,值放在value_list
key_list = []
value_list = []
#用两变量接收,循环3次
for key,value in date.items():
key_list.append(key)
value_list.append(value)
print(key_list)
print(value_list)
#转化,代码简洁,但不高效,循环6次
key_list = list(date.keys())
value_list = list(date.values())
print(key_list)
print(value_list)
#将列表数字大于66的放入键为k1的值中,小于66的放入键为k2的值中
result = {'k1':[],'k2':[]}
date = [11,22,34,56,66,77,88,99]
for item in date:
if item > 66:
result['k1'].append(item)
elif item < 66:
result['k2'].append(item)
else:
pass
print(result)
result = {}
date = [11,22,34,56,66,77,88,99]
for item in date:
if item > 66:
if 'k1' in result:
result['k1'].append(item)
else:
result['k1']=[item]
elif item < 66:
if 'k2' in result:
result['k2'].append(item)
else:
result['k2']=[item]
else:
pass
print(result)
#初级综合案例
goods = [
{'name':'computer','price':'5000'},
{'name':'smartphone','price':'2000'},
{'name':'watch','price':'199'},
{'name':'ipad','price':'999'}]
#显示格式:序号+商品名称+商品价格
for index in range(len(goods)):
print(index + 1,goods[index]['name'],goods[index]['price'])
#用户输入序号,显示商品,#规范化输入,循环,退出
while True:
num = input('请输入序号(q):')
if num == 'q':
break
if num.isdecimal():
num = int(num)
if 0 < num < len(goods) + 1:
print(goods[num-1]['name'],goods[num-1]['price'])
else:
print('超出范围')
else:
print('输入不是数字!')
5、代码规范及知识补充
"""
基础总结补充
#判断键是否存在
#简化代码,简单逻辑先处理
#简化代码,减少嵌套次数
#简化代码,减少循环的次数
is与==
位运算符
"""
# TODO 特殊注释,下面为代码规范
print('todo')
#判断键是否存在
date = {'name':'helin',
'age':21,
'hobby':['soccer','swim'],
('1+1','=',2):True}
result = date.get('key')#none
# if result == None:
# print('不存在')
# else:
# print(result)
#简化
if result:
print(result)
else:
print('不存在')
if 'key' in date:
result = date.get('key')
print(date)
else:
print('键不存在')
#简化代码,简单逻辑先处理
#案例,实现用户登录
user_set = {
'hll':'123',
'wby':'666'}
user_name = input('请输入用户名:')
user_pwd = input('请输入密码:')
pwd = user_set.get(user_name)#根据用户输入的user_name作为键,在user_set中找到对应的值
"""
if pwd == None:
print('用户名不存在')
else:
if pwd == user_pwd:
print('登录成功')
else:
print('登录失败')
#优化
if pwd:
if pwd == user_pwd:
print('登录成功')
else:
print('登录失败')
else:
print('用户名不存在')
"""
#简单的逻辑放在前面
if not pwd:
print('用户名不存在')
else:
if pwd == user_pwd:
print('登录成功')
else:
print('登录失败')
#简化代码,减少嵌套循环,简单逻辑先处理
goods = [
{'name':'computer','price':'5000'},
{'name':'smartphone','price':'2000'},
{'name':'watch','price':'199'},
{'name':'ipad','price':'999'}]
#显示格式:序号+商品名称+商品价格
for index in range(len(goods)):
print(index + 1,goods[index]['name'],goods[index]['price'])
#用户输入序号,显示商品,#规范化输入,循环,退出
# while True:
# num = input('请输入序号(q):')
# if num == 'q':
# break
# if num.isdecimal():
# num = int(num)
# if 0 < num < len(goods) + 1:
# print(goods[num-1]['name'],goods[num-1]['price'])
# else:
# print('超出范围')
# else:
# print('输入不是数字!')
#简化代码,减少嵌套循环,简单逻辑先处理
while True:
num = input('请输入序号(q):')
if num == 'q':
break
if not num.isdecimal():
print('不是数字')
continue
num = int(num)
if num < 1 or num > 4:
print('超出范围')
print(goods[num-1]['name'],goods[num-1]['price'])
#简化代码,减少循环的次数
date = {'name':'helin',
'age':21,
'hobby':{'soccer':'swim'},
('1+1','=',2):True}
#增加键值对
result = date['hobby']['qq'] = '123456'
#print(date)
date['k'] = 'v'
#print(date)
#将上面列表键放在key_list,值放在value_list
key_list = []
value_list = []
#用两变量接收,循环3次
for key,value in date.items():
key_list.append(key)
value_list.append(value)
print(key_list)
print(value_list)
#转化,代码简洁,但不高效,循环6次
key_list = list(date.keys())
value_list = list(date.values())
print(key_list)
print(value_list)
##############################################################################
#is与==
a = []
b = []
print(a == b)
print(a is b)
# True
# False
c = a
print(a == c)
print(a is c)
# True
# True
v1 = None
v2 = None
print(v1 == v2)
print(v1 is v2)
# True
# True
#位运算符
a = 60
b = 13
print(bin(a).lstrip('0b').zfill(8))
print(bin(b).lstrip('0b').zfill(8))
# 0011 1100
# 0000 1101
print(a & b)#12
print(a | b)#61
print(a ^ b)#49
print(~ a)#-61
print(a << 2)#240
print(a >> 2)#15
续文:
推荐学习视频:
基础知识------系统教学-Python 3.9零基础入门到精通(完整版)_哔哩哔哩_bilibili
数据分析------【python教程】数据分析——numpy、pandas、matplotlib_哔哩哔哩_bilibili
推荐学习网站:
n菜鸟教程------Python3 教程 | 菜鸟教程 (runoob.com)
基础小二------基础_Python小二-CSDN博客
推荐博主:
csdn/微信公众号------python小二
抖音活跃博主------python私教-有屠夫、程序员zhenguo(Python编程)
留下你的关注,收藏,点赞,让我瞅瞅谁在默默关心我。哈哈,感谢浏览!



