python 第二节课内容和练习
一、列表
[]表示列表,用','进行分隔,list有序 能够进行索引 切片 (in append extend count index insert pop remove,reverse sort copy)
temp_ls = ['only', 'tom',1,'oulf',2,[1,22222,3],'tom',{'key1':'value1'}]
# 取列表中的嵌套列表,方法1
tyd = (temp_ls[5])
print(tyd[1])
# 取列表中的嵌套列表,方法2:
print((temp_ls[5])[1])
# 遍历列表方法1:用固定循环遍历 for
for i in temp_ls:
print(i)
# 遍历列表方法2:用非固定循环遍历while
len_temp_ls = len(temp_ls)
j = 0
while j<len_temp_ls:
print(temp_ls[j])
j +=1
# 列表拼接
temp_ls_1 = ['wow']
print(temp_ls + temp_ls_1)
# 列表删除
del(temp_ls[4])
print(temp_ls)
# 判断某个字符串是否在该列表中
if 'tom' in temp_ls:
print('YES')
else:
print('NO')
# 列表的添加append,将ts作为一个对象,添加到列表temp_ls中值得后面
ts = ['dds','dff','sd']
temp_ls.append(ts)
print(temp_ls)
# 列表的添加extend,把ts作为一个对象,将这个对象中的所有字符串一个一个添加到列表temp_ls中值得后面
temp_ls.extend(ts)
print(temp_ls)
# 统计列表中某个字符串出现的次数,count
print(temp_ls.count('tom'))
# 取出列表中值得索引index,当某个值存在多个时,只取出的是第一个
print(temp_ls.index('tom'))
# pop删除列表中最后一个元素,并且有返回删除的值
temp_ls.pop()
print(temp_ls.pop())
print(temp_ls)
# remove除列表中某一个元素,并且有返回删除的值
temp_ls.remove('dds')
print(temp_ls)
# insert向列表中插入元素,需要指定具体插入的位置
temp_ls.insert(2,'wcr')
print(temp_ls)
# reverse反向输入列表中的所有值
tp = [4,4,1,5,9,0]
tp.reverse()
print(tp)
# srot给列表进行排序,只能对同数据类型的列表进行排序,当列表中存在字符串、数字、嵌套列表等,不能用sort进行对列表排序
tp.sort()
print(tp)
# 对列表进行反向排序
tp.sort(reverse=True)
print(tp)
print("-----------------------------------元组-------------------------------------------------")
# 二、元组tuple
用()表示,创建后不可以修改,也是有序类型
t = (32,'ab','dd',55,1)
# 判断某个元素是否存在元组中
if 'ab' in t:
print("i存在元组t中")
else:
print("i不存在元组t中")
# 元组也可以进行循环遍历
for i in t:
print(i)
print(type(t))
print(type([]))
print(type((43,))) # 当存在1个值时,需要在这个值后面加一个,这样才能是tuple
print("-----------------------------------集合-------------------------------------------------")
# 三、集合set
用{}表示 set 无序类型、不可以切片,不能用索引取值,可以做两个集合的交集、并集、差集;可以判断是否存在in
s1 = {}
print(s1)
s = {3,45,'sdd','d3',33}
print(type(s))
print((3 in s))
print({2,4,5,6}-{2,3,5,6}) # 差集
print({2,4,5,6}|{2,3,5,6}) # 并集
print({2,4,5,6}&{2,3,5,6}) # 交集
s1 = {3,4,5,7,8}
s2 = {4,5,6,7,9}
print(s1.difference(s2))
print(s1.union(s2))
print("-----------------------------------字典-------------------------------------------------")
# 四、字典dict
用{} 无序类型,键:值
d = {'name': 'tom', 'age': '20', 'class': '2班'}
country = {'中国': '北京', '美国': '华盛顿', '日本': '东京'}
print(country['中国'])
print(country.get('英国'))
print(country.get('日本')) # get方法访问字典
二、练习
1、冒泡排序
# _*_ coding: utf-8 _*_
import sys
import importlib
importlib.reload(sys)
'''
冒泡排序:
0.如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。
1.原理:比较两个相邻的元素,将值大的元素交换到右边
2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。
(1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。
(2)比较第2和第3个数,将小数 放在前面,大数放在后面。
......
(3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成
(4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一个数是不参加比较的。
(5)在第二趟比较完成后,倒数第二个数也一定是数组中倒数第二大数,所以在第三趟的比较中,最后两个数是不参与比较的。
(6)依次类推,每一趟比较次数减少依次
3.算法分析:
(1)由此可见:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数
(2)冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,
第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,
以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。
'''
num = [4,7,11,2,49,23,43,99,9]
print("列表排序'**前**'的值:{}".format(num))
# 方法1
for i in range(0,len(num)-1):
for j in range(0, len(num)-1-i):
if num[j] > num[j+1]:
temp = num[j+1]
num[j+1] = num[j]
num[j] = temp
print("列表排序后的值:{}".format(num))
# 方法2
for i in range(0,len(num)-1):
for j in range(0, len(num)-1-i):
if num[j] > num[j+1]:
num[j], num[j+1] = num[j+1], num[j] # a,b=b,a
print("列表排序'**后**'的值:{}".format(num))
2、利用Python语言,采用字典的方式对应月份和天数,采用选择结构和循环结构解决如下问题:输入某月某日,判断这一天是一年的第几天?
输出“这是年度第XX天”,
如若日期输入错误,则输出“error”。具体要求如下:
(1)创建python_day02_lx.py新文件并保存;
(2)采用字典的方式对应月份和天数;
(3)依次弹出对话“请输入月份:”和“请输入日期:”
(4)采用条件判断结构区分所输入日期是否正确,如果错误,输出“error”;
(5)如若输入日期正确,采用循环结构计算天数,输出“这是年度第XX天”;
# _*_ coding: utf-8 _*_
import sys
import importlib
importlib.reload(sys)
year = eval(input("请输入年份:"))
month = eval(input("请输入月份:"))
day = eval(input("请输入日期:"))
flag = 0 # 判断flag是否为平年还是闰年,flag=0为平年,flag=1是闰年
# 判断是否为闰年
if year < 9999 and month <= 13 and day < 32:
if (year%400== 0):
flag = 1
print("您输入的该年是闰年!")
elif (year%100!=0 and year%4== 0):
flag = 1
print("您输入的该年是闰年!")
else:
flag = 0
print("您输入的该年是平年!")
else:
print("输入错误:请重新输入年份!")
try:
if flag == 1:
ms = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
elif flag == 0:
ms = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
else:
print("日期输入错误!")
except:
print("ERROR!")
data = 0
# 先遍历前面几个月
for i in range(0, month-1):
data +=ms[i] # data=data+ms[i]
data +=day # data=data+day
# print("该天是这年的第%d天"%data)
print("该天是这年的第{0}天".format(data))
3、完数
完全数:如果一个数恰好等于它的因子之和,则称该数为“完全数” [1] 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。
后面的完全数还有8128、33550336等等。
# _*_ coding: utf-8 _*_
import sys
import importlib
importlib.reload(sys)
'''
真因子是指除了它本身以外的因子,真因子包括1在内,应该是除了它本身以外的其他约数
约数,又称因数bai。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
'''
m = int(input("请输入一个完全数:"))
def PerfectNum(m):
a = [] # 定义一个存储数据的列表
for i in range(1, m):
s = 0
# print(i)
for j in range(1, i):
if i % j == 0: # 整数i除以整数j,商=0没有余数,j是i的约数,即真因子
s += j # 所得的真因子j相加,赋给s
# print(s)
if i == s: # 当真因子相加的s=完全数i
a.append(i) # 把完全数i添加到存储数据的a中
return a
if __name__ == '__main__':
k = PerfectNum(m)
print("{}以下的完全数有:{}".format(m, k))
python 第二节课内容和练习的更多相关文章
- python第一节课内容及练习
一.input输入 sname = input("请输入你的姓名:")yu_yan = input("请输入你学习的语言:")print("{}, 欢 ...
- centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /dev/tty(0,6) 模拟终端 /dev/pts/# grub-md5-crypt 给grub加密码 initrd 第二节课
centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /d ...
- 初学Python——第一节课
一.Python语言的特性: 1.与C语言不同,Python语言是一门解释性语言.程序在执行过程中,执行一步.编译一步. 2.Python是一个动态类型语言,不需要定义变量的数据类型. 3.Pytho ...
- python第二十七课——os模块
演示os模块中常用的属性和函数: 1.os模块: 作用:管理文件和目录 属性: os.name:返回系统类型 常用的windows系统 --> nt os.environ:返回当前系统所有的环境 ...
- 多测师讲解自动化测试_rf节课内容_高级讲师肖sir
*** Settings ***Library Selenium2LibraryLibrary OperatingSystem *** Variables ***${name} zhangsan@{l ...
- C#第二节课
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- HTML第二节课
表单 <form id="" name="" method="post/get" action=""> &l ...
- Linux第二节课学习笔记
虚拟机不一定要安装12版本,但仅有12版本支持RHCE模拟考试环境,激活码可以百度. 在创建新的虚拟机过程中,安装客户机操作系统时需要选择稍后安装操作系统,否则会默认最小化安装导致后面课上很多命令不能 ...
- python第二十三课——dict中的函数
dic1 = {...} dic2 = {...} dic1.update(dic2) 1.update(dict):dic1调用update传入dic2,如果dic2中的内容在dic1中不存在,那么 ...
随机推荐
- docker入门1-docker container
image和container介绍 一个image是一个可被docker执行的包,它包括程序运行的所有东西,包括代码,运行时,库,环境变量和配置文件. 一个container是image在内存中的运行 ...
- 调试tomcat9.0.19源码
本文所用到的环境: IntelliJ IDEA Apache Maven 3.3.9 jdk1.8 1. 查看Tomcat版本 $TOMCAT_HOME\bin\version.bat D:\Prog ...
- cpu相关信息(进程、线程、核...)
cpu的相关信息. 1.cpu 1.1 物理cpu 实际Server中插槽上的CPU个数.物理cpu数量,可以数不重复的 physical id 有几个 1.1.1 查看物理CPU的个数 cat /p ...
- 为什么我们需要Logstash,Fluentd等日志摄取器?
前文传送门:Logging with ElasticSearch, Kibana, ASP.NET Core and Docker 疑问:既然应用能直接向ElasticSearch写日志,为什么我们还 ...
- 从《三体》到“中美科技战”,3分钟理解“网络”D丝为什么要迎娶“算力”白富美
摘要:在多维的世界里,高维的文明对于低维文明具有碾压的优势,而网络也正在从二维走向三维!网络硬件的竞争主要是“芯片+算法”. 从三体到中美科技战,理解网络与算力深度融合助力高维度竞争 1:对抗封锁,需 ...
- muduo源码解析5-mutex相关类
mutexlock和mutexlockguard class mutexlock:noncopyable { }: class mutexlockguard:noncopyable { }: 作用: ...
- 轻松应对并发,Newbe.Claptrap 框架入门,第四步 —— 利用 Minion,商品下单
接上一篇 Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开 ...
- day03 每日一行
day03 每日一行 问题描述 用列表解释式 .生成器表达式实现 字典列表为: [{'first': 'john', 'last': 'smith', 'email': 'jsmith@exsampl ...
- [第二届全国中学生网络安全竞赛]bypass
前几天拿到了线下赛的源码,做做看.这道主要是命令执行的黑名单绕过 先看看给出的代码: <?php highlight_file(__FILE__); error_reporting(0); $b ...
- Asp.Net中的三种分页方式总结
本人ASP.net初学,网上找了一些分页的资料,看到这篇文章,没看到作者在名字,我转了你的文章,只为我可以用的时候方便查看,2010的文章了,不知道这技术是否过期. 以下才是正文 通常分页有3种方法, ...