TNBLOG
首页
博客
视频
资源
问答
猿趣
手机
关于
搜索
收藏
便签
笔记
消息
创作
登录
剑轩
故如虹,知恩;故如月,知明
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
CSS
15篇
微服务
41篇
Git
14篇
.NET
102篇
移动开发
33篇
软件架构
23篇
.NET Core
119篇
.NET MVC
11篇
英语
3篇
随笔
86篇
Bootstrap
3篇
Redis
21篇
编辑器
10篇
Js相关
15篇
虚拟化
8篇
更多
Oracle
7篇
Python
14篇
数据库
26篇
EF
17篇
微信
3篇
前端
151篇
消息队列
6篇
docker
41篇
多线程
1篇
Java
4篇
软件基础
2篇
C++
2篇
WCF
7篇
Linux
7篇
nginx
5篇
K8S
9篇
ABP
2篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
原
python基础,列表,元组,键值对,日期时间,高级特性(切片,迭代,列式推导)
2640
人阅读
2022/5/17 15:41
总访问:
3936000
评论:
0
收藏:
0
手机
分类:
Python
[TOC] ## Python的安装 #### windows环境: https://www.python.org/downloads/windows/ 找一个你想要的版本,下载即可。比如下载3.99版本,直接下载安装文件 ![](https://img.tnblog.net/arcimg/aojiancc2/f1780c97fb81491c9c7bdc3db2222054.png) 安装的时候把添加到环境变量勾上。Add Python to Path。这样就不用添加完成后在自己配置一次环境变量了。 ![](https://img.tnblog.net/arcimg/aojiancc2/bb37f2b76884409a95f4da88ce7db974.png) ![](https://img.tnblog.net/arcimg/aojiancc2/822b90528ab649b8888d79c196c49ea7.png) 安装完成后就可以使用python命令试试,是否安装成功了。 ## python的基础命令 ##### 查看python版本号 ``` python --version ``` 或者,使用-V,大写的V ``` python -V ``` ##### 进入python命令行 直接输入python即可 ![](https://img.tnblog.net/arcimg/aojiancc2/d660c0b9517948c98f50abf8bf0e56d0.png) ##### 退出python命令行 exit()或者ctrl+z ![](https://img.tnblog.net/arcimg/aojiancc2/123c22b184044bc29c4e79343fc1d6d5.png) ## Python基本语法 ### Python注释 注释: ``` # 定义一个变量 str = 'hello python' ''' hello python多行注释 ''' """ hello python多行注释 """ print(str) ``` ### Python变量 ### Python的输入输出 input接受输入,print输出 ```python username = input("请输入用户名:\n") print("你输入的内容为:"+username) ``` ![](https://img.tnblog.net/arcimg/aojiancc2/07607122e98940df9d2b761a78a9a865.png) 输入输出做一个简单的加法计算: ``` number1 = input("请输入加数1:\n") number2 = input("请输入加数2:\n") result = int(number1)+int(number2) print("两数之和为:"+str(result)) ``` tn>注意:python中,print函数不能同时识别2种数据类型。直接print("两数之和为:"+result)会报错,无法把字符串和int类型相加,不像c#那样会自动转换,所以需要手动转化一下。 ![](https://img.tnblog.net/arcimg/aojiancc2/1239c7efefcf47ce869df8dd0d05f4c5.png) ### 根据不同运算符实现两数计算 ``` import sys number1 = input("请输入加数1:\n") number2 = input("请输入加数2:\n") calltype = input("请输入运算符:\n") result = 0 if calltype=="+": result = int(number1)+int(number2) elif calltype=="-": result = int(number1)-int(number2) elif calltype=="*": result = int(number1)*int(number2) elif calltype=="/": result = round(int(number1)/int(number2),2) else: print("不支持该运算符") sys.exit() print("两数运算的结果:"+str(result)) ``` ### Python的基本数据类型 整形 字符串 列表 键值对 ### Pythonwhile循环 #### 简单求和循环 ``` i=1 r=0 while i<=100: r=i+r i=i+1 print(r) ``` #### Python猜数字 基础用法: ``` import random result = random.randint(1,100) while True: number = int(input("请猜数字,范围1-100\n")) if number > result: print("数字比实际数字大") elif number < result: print("数字比实际数字小") else: print("猜对了:数字是"+str(result)) break ``` 算上次数与时间差 ![](https://img.tnblog.net/arcimg/aojiancc2/faca27f917194b3dbce1b37594534d50.png) ``` import random import datetime result = random.randint(1,100) count = 0 # 记录游戏开始的时候 starttime = datetime.datetime.now() while True: number1 = int(input("请猜数字,数字的范围是1到100\n")) count= count+1 if number1 > result : print("你猜大了") elif number1 < result : print("你猜小了") else: ## 记录游戏结束的时间 start_end = datetime.datetime.now() ## 计算时间差 diff_time = (start_end-starttime).total_seconds() print("你猜对了"+",你猜了"+(str)(count)+"次","用时:",diff_time,"秒") break ``` ### python获取当前时间,Python获取时间差 ``` import datetime import time ## 获取当前时间 start_time = datetime.datetime.now() print(start_time) time.sleep(3) ## 暂停3秒后获取当前时间 end_time = datetime.datetime.now() print(end_time) ## 求两个时间差 time_diff = (end_time-start_time).total_seconds() print(time_diff) ``` ### Python日期模块 ``` import calendar ## 获取一年的日期 reuslt = calendar.calendar(2022) print(reuslt) print("--------------------------------------") ## 获取某月的日期 r2 = calendar.month(2022,6) print(r2) ## 计算某一天是星期几 r3 = calendar.weekday(2022,5,22) print(r3) ``` ### python的模块引用语法 ##### import 模块.... 这样是把某个模块全部引入。比如下面示例的datetime模块中既包含datetime,也包含date。我们直接引入全部模块里边所有的模块都可以用。 ``` import datetime ## 获取年月日 时分秒 now_time = datetime.datetime.now() print(now_time) ## 获取年月日 today = datetime.date.today() print(today) ``` ##### from xx模块 import 模块里边的部分内容 这样是引入一个模块里边的部分内容,比如这里引入datetime模块的datetime,所以我们可以直接datetime.now()了,而不用datetime.datetime.now()了。 ``` from datetime import datetime ## 获取年月日 时分秒 now_time = datetime.now() print(now_time) ``` ### Python列表List #### list基本使用 ```python ''' list ''' ## 申明 list1 = ['a','m','c','g','b'] ## 访问 print(list1[2]) print(list1[-2]) print(list1[0:2]) print(list1[2:]) ## 修改 print("---------------------------") list1[2]="mm" print(list1[2]) ## 添加 list1.append("xx") print(list1[-1]) print(list1) ## 删除 del list1[2] list1.remove("a") print(list1) ## 判断某个元素是否包含在列表中 iscontent = 3 in [1,5,7] print(iscontent) ## 拿到list的长度 listlength = len(list1) print(listlength) ## 两个list之间相加 listsum = [1,5,7]+[2,4,8] print(listsum) ## 使用循环遍历list ### while 遍历 i = 0 listsumlen = len(listsum) while i < listsumlen : print(listsum[i]) i=i+1 ### for循环 遍历 for item in listsum : print(item) ``` #### 使用list切片(slice)获取python ``` list1 = ["苹果","西瓜","香蕉","桃子","荔枝","芒果","哈密瓜"] ## 直接使用的方法 开始,结束, result = list1[slice(2,5,2)] ## 可以等价于下面的写法,简写 result2 = list1[2:5:2] print(result2) ``` #### list 练习。寻找list里边内容的位置,找到两次后退出 大概的效果 ![](https://img.tnblog.net/arcimg/aojiancc2/c89ac03a4ed04035aef71751d0d670f1.png) 或者叫在水果集合里边找水果,找到后返回水果的位置,找到两次后就退出。这个图看着更清晰点 ![](https://img.tnblog.net/arcimg/aojiancc2/096a02cbbad8485cb6aa7ed4216c1b47.png) **可以把问题分步简化** 1:更根据名字找到位置(一个循环判断一下就搞定) ``` fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"] content = input("请输入想要找到的水果\n") i = 0 while i<len(fruilt_list): ## item是集合里边的值 item = fruilt_list[i] ## 找到了就直接输出位置 if item ==content: print(content,i) i=i+1 ``` 2:能找无数次(外面套一个死循环搞定) 注意缩进,还有用于输入的位置放到死循环里边 ``` fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"] while True: i = 0 content = input("请输入想要找到的水果\n") while i<len(fruilt_list): ## item是集合里边的值 item = fruilt_list[i] ## 找到了就直接输出位置 if item ==content: print(content,i) i=i+1 ``` 3:只能找两次(限制一下次数,两次就退出) ``` fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"] ## 定义一个变量用于记录找到了的次数 count =0 while True: content = input("请输入想要找到的水果\n") i = 0 while i<len(fruilt_list): ## item是集合里边的值 item = fruilt_list[i] ## 用户想要找的水果和集合里边一个一个比较,如果有一个相等,就说明找到了 if item ==content: count = count+1 print(content,",位置在:",i,"找到了",count,"次") i=i+1 ## 用break退出循环,由于有两个循环,所以写到外面,不然只能退出第一个循环。写里边也可以使用exit退出 if count == 2: break ``` **或者这样也可以方法有很多种,这里用exit退出:** 上面一步一步分析的,逻辑理解起来更清晰点 ``` list1 = ["a",'c','d','e','q'] ## 找出列表中的位置 i = 1 count = 0 while True: number1 = (input("请猜---------------\n")) i=1 # 遍历查询 while i<len(list1): # print(list1[i],number1) if list1[i]==number1: count = count+1 print("找到了",count,"个,位置在",i) ## 找到两个就退出 if count==2: print("已经找到两个了结束了") exit() i=i+1 ``` **配合方法定义后** ``` fruit_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"] ## 定义一个变量用于记录找到了的次数 count =0 ## 定义方法找到变量就加1 def findfruit(fruit_list,fruitname,_count): i = 0 while i<len(fruit_list): ## item是集合里边的值 item = fruit_list[i] ## 用户想要找的水果和集合里边一个一个比较,如果有一个相等,就说明找到了 if item ==fruitname: _count = _count+1 print(fruitname,",位置在:",i,"找到了",_count,"次") i=i+1 return _count while True: content = input("请输入想要找到的水果\n") resultcount = findfruit(fruit_list,content,count) count = resultcount ## 用break退出循环,由于有两个循环,所以写到外面,不然只能退出第一个循环。写里边也可以使用exit退出 if count == 2: break ``` #### list 练习2。同一个水果找两次才退出 配合键值对使用就比较简单了 ``` list1 = ["苹果","西瓜","香蕉","桃子","荔枝","芒果","哈密瓜"] ## 定义一个键值对存放找到水果的次数 count_keyvalue = {} ## 可以无限找,输入exit退出 count = 0 while True: poi = 0 fruit = input("请输入你想要找到的水果\n") if fruit == "exit": break while poi<len(list1): item = list1[poi] if item == fruit: count = count+1 if item in count_keyvalue: print(item,"已经找到了两次,应该结束") exit() else: count_keyvalue[item] = 1 print("找到了,位置是:",poi,"找到了",count,"次") poi = poi+1 ``` **分析:** 比如前面找到了4次分别是:西瓜,荔枝,哈密瓜,桃子 就会形成一个这样的键值对: xx = {"西瓜":1,"荔枝":1,"哈密瓜":1,"桃子":1} key在这个键值对存在的情况只有第一次已经找到过一次才会成立,所以只要key存在于这个键值对那一定前面已经找到过一次,直接exit()结束程序即可。 ### Python元组 tn2>元组是有序且不可更改的集合 基本和list类似,里边的内容不能修改,不能删除这些。要定义一些需要不变元素的一组数据可以使用元组。理解记忆,一个元字,记忆成不变 ``` xx = ("西瓜","香蕉","桃子") print(xx) ## 获取值 print(xx[1]) ## for遍历 for item in xx: print(item) xx[1] = "香蕉2" print("--------------------------------------") i = 0 while i< len(xx) : print(xx[i]) i = i + 1 ``` #### 更改元组值 创建元组后,您将无法更改其值。元组是不可变的,或者也称为恒定的。 但是有一种解决方法。您可以将元组转换为列表,更改列表,然后将列表转换回元组。 实例 把元组转换为列表即可进行更改: ``` x = ("apple", "banana", "cherry") y = list(x) y[1] = "kiwi" x = tuple(y) print(x) ``` ### Python生成器表达式 和列表推导式很类似。仅仅是将列表推导式中的[]替换为(),但是两者差别挺大,生成器表达式可以说组合了迭代功能和列表解析功能。可以延加载需要调用next才能访问里边的内容。 列表推导式是直接返回一个列表,生成器表达式是一个跌倒对象,不会直接生成一个列表,而是真正需要用到这些数据的时候才返回。 ``` b = (x*x for x in range(1,3)) ## 直接输出生成器表达式 print(b) ## 可以使用next逐一来访问 print(next(b)) print(next(b)) ## 使用for循环遍历,它会自动调用next方法 for item in b: print(item) ## 求和 print(sum(b)) ## 生成器表达式转换成list print(list(b)) ## 生成器表达式转换成元组 # print(tuple(b)) ``` 注意有些测试的时候要把有些注释掉,比如测试求和的时候要把 ### Python键值对 ``` tinydict = {'name': 'runoob','likes': 123, 'url': 'www.runoob.com'} print(tinydict["likes"]) ## 如果key不存在就是添加 tinydict["likes"]="修改过后的123" print(tinydict) ## 删除字典 del tinydict["Name"] print(tinydict) ## 清空字典 tinydict.clear() print(tinydict) if 'url22' in tinydict: print('在') else: print("不在") ## 定义方法查找键是否存在 def findkey(key): ## 判断键值对里边的Key是否存在 if key in key_value: print(key,"存在于键值对") else: print(key,"不存在于键值对") findkey("age") rkeys = tinydict.keys() print(rkeys) ## 遍历key for item in rkeys: print(item) ## 遍历value for item in tinydict.values(): print(item) ## 遍历Key,Value 。方法1:遍历key,在通过key取值即可 for keys in tinydict.keys(): print(keys,tinydict[keys]) ``` #### 键值对练习-投票 ![](https://img.tnblog.net/arcimg/aojiancc2/ea975bb33d154d999cd1abe8e6df693d.png) ``` tinydict = {'黄焖鸡': 1,'水煮鱼': 1, '惊叫鸡': 1,'烫火锅': 1} def print_ticket(): for keys in tinydict.keys(): print(keys,tinydict[keys]) print_ticket() while True: print("请给你喜欢的食物投票,e退出投票:") tiket = input() if tiket=="e": break if tiket in tinydict: tinydict[tiket] = tinydict[tiket] +1 print_ticket() else: print("没有该食物") print("-------------------------------------------------------") ```
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}