应无所住,而生其心
排名
1
文章
861
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

python基础,列表,元组,键值对,日期时间,高级特性(切片,迭代,列式推导)

4723人阅读 2022/5/17 15:41 总访问:5238685 评论:0 收藏:0 手机
分类: Python

Python的安装

windows环境:

https://www.python.org/downloads/windows/

找一个你想要的版本,下载即可。比如下载3.99版本,直接下载安装文件

安装的时候把添加到环境变量勾上。Add Python to Path。这样就不用添加完成后在自己配置一次环境变量了。

安装完成后就可以使用python命令试试,是否安装成功了。

python的基础命令

查看python版本号
  1. python --version

或者,使用-V,大写的V

  1. python -V
进入python命令行

直接输入python即可

退出python命令行

exit()或者ctrl+z

Python基本语法

Python注释

注释:

  1. # 定义一个变量
  2. str = 'hello python'
  3. '''
  4. hello python多行注释
  5. '''
  6. """
  7. hello python多行注释
  8. """
  9. print(str)

Python变量

Python的输入输出

input接受输入,print输出

  1. username = input("请输入用户名:\n")
  2. print("你输入的内容为:"+username)

输入输出做一个简单的加法计算:

  1. number1 = input("请输入加数1:\n")
  2. number2 = input("请输入加数2:\n")
  3. result = int(number1)+int(number2)
  4. print("两数之和为:"+str(result))

注意:python中,print函数不能同时识别2种数据类型。直接print(“两数之和为:”+result)会报错,无法把字符串和int类型相加,不像c#那样会自动转换,所以需要手动转化一下。

根据不同运算符实现两数计算

  1. import sys
  2. number1 = input("请输入加数1:\n")
  3. number2 = input("请输入加数2:\n")
  4. calltype = input("请输入运算符:\n")
  5. result = 0
  6. if calltype=="+":
  7. result = int(number1)+int(number2)
  8. elif calltype=="-":
  9. result = int(number1)-int(number2)
  10. elif calltype=="*":
  11. result = int(number1)*int(number2)
  12. elif calltype=="/":
  13. result = round(int(number1)/int(number2),2)
  14. else:
  15. print("不支持该运算符")
  16. sys.exit()
  17. print("两数运算的结果:"+str(result))

Python的基本数据类型

整形
字符串
列表
键值对

Pythonwhile循环

简单求和循环

  1. i=1
  2. r=0
  3. while i<=100:
  4. r=i+r
  5. i=i+1
  6. print(r)

Python猜数字

基础用法:

  1. import random
  2. result = random.randint(1,100)
  3. while True:
  4. number = int(input("请猜数字,范围1-100\n"))
  5. if number > result:
  6. print("数字比实际数字大")
  7. elif number < result:
  8. print("数字比实际数字小")
  9. else:
  10. print("猜对了:数字是"+str(result))
  11. break

算上次数与时间差

  1. import random
  2. import datetime
  3. result = random.randint(1,100)
  4. count = 0
  5. # 记录游戏开始的时候
  6. starttime = datetime.datetime.now()
  7. while True:
  8. number1 = int(input("请猜数字,数字的范围是1到100\n"))
  9. count= count+1
  10. if number1 > result :
  11. print("你猜大了")
  12. elif number1 < result :
  13. print("你猜小了")
  14. else:
  15. ## 记录游戏结束的时间
  16. start_end = datetime.datetime.now()
  17. ## 计算时间差
  18. diff_time = (start_end-starttime).total_seconds()
  19. print("你猜对了"+",你猜了"+(str)(count)+"次","用时:",diff_time,"秒")
  20. break

python获取当前时间,Python获取时间差

  1. import datetime
  2. import time
  3. ## 获取当前时间
  4. start_time = datetime.datetime.now()
  5. print(start_time)
  6. time.sleep(3)
  7. ## 暂停3秒后获取当前时间
  8. end_time = datetime.datetime.now()
  9. print(end_time)
  10. ## 求两个时间差
  11. time_diff = (end_time-start_time).total_seconds()
  12. print(time_diff)

Python日期模块

  1. import calendar
  2. ## 获取一年的日期
  3. reuslt = calendar.calendar(2022)
  4. print(reuslt)
  5. print("--------------------------------------")
  6. ## 获取某月的日期
  7. r2 = calendar.month(2022,6)
  8. print(r2)
  9. ## 计算某一天是星期几
  10. r3 = calendar.weekday(2022,5,22)
  11. print(r3)

python的模块引用语法

import 模块….

这样是把某个模块全部引入。比如下面示例的datetime模块中既包含datetime,也包含date。我们直接引入全部模块里边所有的模块都可以用。

  1. import datetime
  2. ## 获取年月日 时分秒
  3. now_time = datetime.datetime.now()
  4. print(now_time)
  5. ## 获取年月日
  6. today = datetime.date.today()
  7. print(today)
from xx模块 import 模块里边的部分内容

这样是引入一个模块里边的部分内容,比如这里引入datetime模块的datetime,所以我们可以直接datetime.now()了,而不用datetime.datetime.now()了。

  1. from datetime import datetime
  2. ## 获取年月日 时分秒
  3. now_time = datetime.now()
  4. print(now_time)

Python列表List

list基本使用

  1. '''
  2. list
  3. '''
  4. ## 申明
  5. list1 = ['a','m','c','g','b']
  6. ## 访问
  7. print(list1[2])
  8. print(list1[-2])
  9. print(list1[0:2])
  10. print(list1[2:])
  11. ## 修改
  12. print("---------------------------")
  13. list1[2]="mm"
  14. print(list1[2])
  15. ## 添加
  16. list1.append("xx")
  17. print(list1[-1])
  18. print(list1)
  19. ## 删除
  20. del list1[2]
  21. list1.remove("a")
  22. print(list1)
  23. ## 判断某个元素是否包含在列表中
  24. iscontent = 3 in [1,5,7]
  25. print(iscontent)
  26. ## 拿到list的长度
  27. listlength = len(list1)
  28. print(listlength)
  29. ## 两个list之间相加
  30. listsum = [1,5,7]+[2,4,8]
  31. print(listsum)
  32. ## 使用循环遍历list
  33. ### while 遍历
  34. i = 0
  35. listsumlen = len(listsum)
  36. while i < listsumlen :
  37. print(listsum[i])
  38. i=i+1
  39. ### for循环 遍历
  40. for item in listsum :
  41. print(item)

使用list切片(slice)获取python

  1. list1 = ["苹果","西瓜","香蕉","桃子","荔枝","芒果","哈密瓜"]
  2. ## 直接使用的方法 开始,结束,
  3. result = list1[slice(2,5,2)]
  4. ## 可以等价于下面的写法,简写
  5. result2 = list1[2:5:2]
  6. print(result2)

list 练习。寻找list里边内容的位置,找到两次后退出

大概的效果

或者叫在水果集合里边找水果,找到后返回水果的位置,找到两次后就退出。这个图看着更清晰点

可以把问题分步简化

1:更根据名字找到位置(一个循环判断一下就搞定)

  1. fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
  2. content = input("请输入想要找到的水果\n")
  3. i = 0
  4. while i<len(fruilt_list):
  5. ## item是集合里边的值
  6. item = fruilt_list[i]
  7. ## 找到了就直接输出位置
  8. if item ==content:
  9. print(content,i)
  10. i=i+1

2:能找无数次(外面套一个死循环搞定)
注意缩进,还有用于输入的位置放到死循环里边

  1. fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
  2. while True:
  3. i = 0
  4. content = input("请输入想要找到的水果\n")
  5. while i<len(fruilt_list):
  6. ## item是集合里边的值
  7. item = fruilt_list[i]
  8. ## 找到了就直接输出位置
  9. if item ==content:
  10. print(content,i)
  11. i=i+1

3:只能找两次(限制一下次数,两次就退出)

  1. fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
  2. ## 定义一个变量用于记录找到了的次数
  3. count =0
  4. while True:
  5. content = input("请输入想要找到的水果\n")
  6. i = 0
  7. while i<len(fruilt_list):
  8. ## item是集合里边的值
  9. item = fruilt_list[i]
  10. ## 用户想要找的水果和集合里边一个一个比较,如果有一个相等,就说明找到了
  11. if item ==content:
  12. count = count+1
  13. print(content,",位置在:",i,"找到了",count,"次")
  14. i=i+1
  15. ## 用break退出循环,由于有两个循环,所以写到外面,不然只能退出第一个循环。写里边也可以使用exit退出
  16. if count == 2:
  17. break

或者这样也可以方法有很多种,这里用exit退出:
上面一步一步分析的,逻辑理解起来更清晰点

  1. list1 = ["a",'c','d','e','q']
  2. ## 找出列表中的位置
  3. i = 1
  4. count = 0
  5. while True:
  6. number1 = (input("请猜---------------\n"))
  7. i=1
  8. # 遍历查询
  9. while i<len(list1):
  10. # print(list1[i],number1)
  11. if list1[i]==number1:
  12. count = count+1
  13. print("找到了",count,"个,位置在",i)
  14. ## 找到两个就退出
  15. if count==2:
  16. print("已经找到两个了结束了")
  17. exit()
  18. i=i+1

配合方法定义后

  1. fruit_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
  2. ## 定义一个变量用于记录找到了的次数
  3. count =0
  4. ## 定义方法找到变量就加1
  5. def findfruit(fruit_list,fruitname,_count):
  6. i = 0
  7. while i<len(fruit_list):
  8. ## item是集合里边的值
  9. item = fruit_list[i]
  10. ## 用户想要找的水果和集合里边一个一个比较,如果有一个相等,就说明找到了
  11. if item ==fruitname:
  12. _count = _count+1
  13. print(fruitname,",位置在:",i,"找到了",_count,"次")
  14. i=i+1
  15. return _count
  16. while True:
  17. content = input("请输入想要找到的水果\n")
  18. resultcount = findfruit(fruit_list,content,count)
  19. count = resultcount
  20. ## 用break退出循环,由于有两个循环,所以写到外面,不然只能退出第一个循环。写里边也可以使用exit退出
  21. if count == 2:
  22. break

list 练习2。同一个水果找两次才退出

配合键值对使用就比较简单了

  1. list1 = ["苹果","西瓜","香蕉","桃子","荔枝","芒果","哈密瓜"]
  2. ## 定义一个键值对存放找到水果的次数
  3. count_keyvalue = {}
  4. ## 可以无限找,输入exit退出
  5. count = 0
  6. while True:
  7. poi = 0
  8. fruit = input("请输入你想要找到的水果\n")
  9. if fruit == "exit":
  10. break
  11. while poi<len(list1):
  12. item = list1[poi]
  13. if item == fruit:
  14. count = count+1
  15. if item in count_keyvalue:
  16. print(item,"已经找到了两次,应该结束")
  17. exit()
  18. else:
  19. count_keyvalue[item] = 1
  20. print("找到了,位置是:",poi,"找到了",count,"次")
  21. poi = poi+1

分析:
比如前面找到了4次分别是:西瓜,荔枝,哈密瓜,桃子

就会形成一个这样的键值对:
xx = {“西瓜”:1,”荔枝”:1,”哈密瓜”:1,”桃子”:1}

key在这个键值对存在的情况只有第一次已经找到过一次才会成立,所以只要key存在于这个键值对那一定前面已经找到过一次,直接exit()结束程序即可。

Python元组


元组是有序且不可更改的集合
基本和list类似,里边的内容不能修改,不能删除这些。要定义一些需要不变元素的一组数据可以使用元组。理解记忆,一个元字,记忆成不变

  1. xx = ("西瓜","香蕉","桃子")
  2. print(xx)
  3. ## 获取值
  4. print(xx[1])
  5. ## for遍历
  6. for item in xx:
  7. print(item)
  8. xx[1] = "香蕉2"
  9. print("--------------------------------------")
  10. i = 0
  11. while i< len(xx) :
  12. print(xx[i])
  13. i = i + 1

更改元组值

创建元组后,您将无法更改其值。元组是不可变的,或者也称为恒定的。
但是有一种解决方法。您可以将元组转换为列表,更改列表,然后将列表转换回元组。

实例
把元组转换为列表即可进行更改:

  1. x = ("apple", "banana", "cherry")
  2. y = list(x)
  3. y[1] = "kiwi"
  4. x = tuple(y)
  5. print(x)

Python生成器表达式

和列表推导式很类似。仅仅是将列表推导式中的[]替换为(),但是两者差别挺大,生成器表达式可以说组合了迭代功能和列表解析功能。可以延加载需要调用next才能访问里边的内容。
列表推导式是直接返回一个列表,生成器表达式是一个跌倒对象,不会直接生成一个列表,而是真正需要用到这些数据的时候才返回。

  1. b = (x*x for x in range(1,3))
  2. ## 直接输出生成器表达式
  3. print(b)
  4. ## 可以使用next逐一来访问
  5. print(next(b))
  6. print(next(b))
  7. ## 使用for循环遍历,它会自动调用next方法
  8. for item in b:
  9. print(item)
  10. ## 求和
  11. print(sum(b))
  12. ## 生成器表达式转换成list
  13. print(list(b))
  14. ## 生成器表达式转换成元组
  15. # print(tuple(b))

注意有些测试的时候要把有些注释掉,比如测试求和的时候要把

Python键值对

  1. tinydict = {'name': 'runoob','likes': 123, 'url': 'www.runoob.com'}
  2. print(tinydict["likes"])
  3. ## 如果key不存在就是添加
  4. tinydict["likes"]="修改过后的123"
  5. print(tinydict)
  6. ## 删除字典
  7. del tinydict["Name"]
  8. print(tinydict)
  9. ## 清空字典
  10. tinydict.clear()
  11. print(tinydict)
  12. if 'url22' in tinydict:
  13. print('在')
  14. else:
  15. print("不在")
  16. ## 定义方法查找键是否存在
  17. def findkey(key):
  18. ## 判断键值对里边的Key是否存在
  19. if key in key_value:
  20. print(key,"存在于键值对")
  21. else:
  22. print(key,"不存在于键值对")
  23. findkey("age")
  24. rkeys = tinydict.keys()
  25. print(rkeys)
  26. ## 遍历key
  27. for item in rkeys:
  28. print(item)
  29. ## 遍历value
  30. for item in tinydict.values():
  31. print(item)
  32. ## 遍历Key,Value 。方法1:遍历key,在通过key取值即可
  33. for keys in tinydict.keys():
  34. print(keys,tinydict[keys])

键值对练习-投票

  1. tinydict = {'黄焖鸡': 1,'水煮鱼': 1, '惊叫鸡': 1,'烫火锅': 1}
  2. def print_ticket():
  3. for keys in tinydict.keys():
  4. print(keys,tinydict[keys])
  5. print_ticket()
  6. while True:
  7. print("请给你喜欢的食物投票,e退出投票:")
  8. tiket = input()
  9. if tiket=="e":
  10. break
  11. if tiket in tinydict:
  12. tinydict[tiket] = tinydict[tiket] +1
  13. print_ticket()
  14. else:
  15. print("没有该食物")
  16. print("-------------------------------------------------------")

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

python学习 1-安装

Ptyhon非常简单易用的面向对象的脚本语言,跨平台 入门简单python分2个版本 Python2、Python3。Python 2.7 将于 2020 年结...

python学习 2-基本语法

基础:python脚本语言,不需要编译(像C#、Java、PHP、C++需要编译成机器可识别的语言), 而直接由解释器解释,很多地方类似...

python学习 3-爬虫基本介绍 及简单实例

爬虫爬虫就是一只猪,蜘蛛。。 网络蜘蛛。互联网是一个网由各个网站组成。无数的蜘蛛就在网上到处爬,根据网址从一个网站爬...

python实例 1-日志抓取处理 补错(附日志小技巧)

有时候数据出了问题,可以从日志中恢复数据(如果你没记日志..没备份..→_→..)一、日志展示介绍个平常自己用的小方法,如...

python实例 2-12306抢票(一) 登陆

开坑年关将近,终于对12306下手了,,平安夜撸代码,攻克了12306的登陆 2018-12-24 22:16:00没错 这篇博客就写从零开始的异...

python安装pip以及使用pip安装requests等模块

pip很简单的介绍pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。如果想...

python数据集合区别

列表(list):可读写,值可以重复,有序排列,初始化语法:[&#39;tom&#39;,‘jerry’]元组(tuple):只读,值可以重复,...

python实例 2-12306抢票(二) 下单

第二篇 刷票与下单1.记住登陆上一篇写了登陆:http://www.tnblog.net/cz/article/details/162 为了方便调试 不让每次登陆都...

使用VS Code开发python

Vs Code开发Python可以很好的支持代码调试、智能提示、代码对齐等1:下载VS Codehttps://code.visualstudio.com/Downloadvs ...

python变量与命名

Python使用等号 ( = ) 作为赋值运算符,例如a = 66 就是一条赋值语句,作用就是将66赋值给变量a。Python是弱类型语言,弱类...

python关键字和内置函数

Python中包含了如下所示的关键字:上面这些关键字都不能作为变量名。另外,Python 3还提供了如下表所示的内置函数:也不能...

python基础输入和输出

Python使用print()函数向打印程序输出,采用input()函数接收程序输入。print()函数的语法格式如下:print(value,...,sep=&#...

python基本数据类型

Python包含两大类基本数据类型:数值类型、字符串类型,三大类组合数据类型:集合类型、序列类型和字典类型.数值类型:整型...

python中通过fake_useragent生成随机UserAgent

fake_useragent第三方库,来实现随机请求头的设置;GitHub ---&gt; https://github.com/hellysmile/fake-useragent安...

python 升级pip

一条命令即可: python -m pip install --upgrade pip 安装成功后,一般是在python目录下面的Scripts里边的

python html编码解码

使用方法:html.escape(s)与html.unescape即可 import html s=&quot;&lt;div&gt;jsdlfjsl&lt;/div&gt;&quot; #html编...