一、列表

[]表示列表,用','进行分隔,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 第二节课内容和练习的更多相关文章

  1. python第一节课内容及练习

    一.input输入 sname = input("请输入你的姓名:")yu_yan = input("请输入你学习的语言:")print("{}, 欢 ...

  2. 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 ...

  3. 初学Python——第一节课

    一.Python语言的特性: 1.与C语言不同,Python语言是一门解释性语言.程序在执行过程中,执行一步.编译一步. 2.Python是一个动态类型语言,不需要定义变量的数据类型. 3.Pytho ...

  4. python第二十七课——os模块

    演示os模块中常用的属性和函数: 1.os模块: 作用:管理文件和目录 属性: os.name:返回系统类型 常用的windows系统 --> nt os.environ:返回当前系统所有的环境 ...

  5. 多测师讲解自动化测试_rf节课内容_高级讲师肖sir

    *** Settings ***Library Selenium2LibraryLibrary OperatingSystem *** Variables ***${name} zhangsan@{l ...

  6. C#第二节课

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  7. HTML第二节课

    表单 <form id="" name="" method="post/get" action=""> &l ...

  8. Linux第二节课学习笔记

    虚拟机不一定要安装12版本,但仅有12版本支持RHCE模拟考试环境,激活码可以百度. 在创建新的虚拟机过程中,安装客户机操作系统时需要选择稍后安装操作系统,否则会默认最小化安装导致后面课上很多命令不能 ...

  9. python第二十三课——dict中的函数

    dic1 = {...} dic2 = {...} dic1.update(dic2) 1.update(dict):dic1调用update传入dic2,如果dic2中的内容在dic1中不存在,那么 ...

随机推荐

  1. 笔记:Linux下软件的安装、CentOS更新yum源、LAMP环境搭建、kali软件管理

    一.Linux下软件的安装 方式:yum源 / rpm /源码安装 1.yum:(帮助管理员解决依赖关系) yum是通过分析rpm的包头数据后,根据各种软件的相关性质做出属性相对应的解决方案,然后可以 ...

  2. Host 'controller' is not mapped to any cell

    问题: Host 'controller' is not mapped to any cell 解决: 执行:nova-manage cell_v2 simple_cell_setup 再次检查:

  3. SuperSlide轮播切换

    <!-- 点击切换引入 --> <script type="text/javascript" src="js/jquery.js">&l ...

  4. 算法-图(1)Dijkstra求最短路径

    数组dist[],是当前求到的顶点v到顶点j的最短路径长度 数组path[]存放求到的最短路径,如path[4]=2,path[2]=3,path[3]=0,则路径{0,3,2,4}就是0到4的最短路 ...

  5. DevOps系列(2)-SonarQube之PostgreSQL

    上一篇从整体上讲了下DevOps大概涉及到了哪些内容,以及主要工作流程,接下来我们将分步详细介绍各个部分的使用. 概览 首先从 SonarQube 开始说起,SonarQube 是一个可用于检测重复代 ...

  6. 【新鲜出炉的个人项目】基于 Flink 的商品推荐系统

    FlinkCommodityRecommendationSystem Recs FlinkCommodityRecommendationSystem(基于 Flink 的商品推荐系统) 1. 前言 系 ...

  7. vue刷新数组

    困扰我两天的问题被一行代码解决了!!! 最近在做某个功能时用到了v-for,页面内容都是根据父页面传递过来的数组生成的,但是当我改变数组内容时页面不会跟着改变.这个问题足足困扰了我两天时间,最终下面的 ...

  8. slua中,绑定lua文件到Monobehavior的一种方法

    slua本身并不提供如何把一个lua文件绑定到一个预制中,就像一个普通的继承自monobehavior的自定义脚本那样,而tolua的框架却采用了拙劣的做法: public class LuaBeha ...

  9. Fitness - 05.08

    倒计时237天 运动34分钟,共计8组,3.4公里.拉伸10分钟. 每组跑步2分钟(6.6KM/h),走路2分钟(6KM/h). 最近掉了几斤,所以今天状态感觉特别好. 虽然每天在拼命学习Unity, ...

  10. 想在java接口自动化里用上Python的requests?这样做就可以了

    相信现在很多的公司自动化测试重点都在接口层,因为接口测试更加接近代码底层,相对于UI自动化,接口自动化有着开发更快.覆盖更全.回报率高等优点. 接口自动化代码实现不难,本质上就是代码模拟发送请求,然后 ...