Python、Day2

循环

while循环:

while 条件:
	循环体
[else:
	# 循环正常执行完成后,执行该语句块
	# 如果循环被非正常终止,则不会执行else中的代码
]

for循环:

  • python中的for循环本质是用来迭代数据的
for 循环控制变量 in 循环条件 :
	循环体
补充:

break、continue关键字

  • break跳出循环
  • continue结束本次循环

range函数

  • 可以用来创建一个整数列表
  • 基本语法:range(start, stop[, step])
参数作用示例
start计数从 start 开始,默认是从 0 开始range(5)等价于range(0, 5)
stop计数到 stop 结束,但不包括 stoprange(0, 5) 是[0, 1, 2, 3, 4]没有5
step步长,默认为1。range(0, 5) 等价于 range(0, 5, 1)

random模块

  • 用来生成一个随机数
  • 基本语法:
import random
random.random() #生成一个(0-1)之间的数
random.randint(a, b) #生成一个(a-b)之间的数
random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。

迭代器

迭代:

  • 迭代是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。

可迭代对象:

  • 可迭代对象并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过__iter__( )方法或__getitem__( )方法访问。

迭代器:

  • 迭代器可以看作是一个特殊的对象,每次调用该对象时会返回自身的下一个元素

容器

容器的定义:

  • 容器是一种把多个元素组织在一起的数据结构,是一种数据类型
容器名称
list 列表
set 集合
tuple 元组
dict 字典
list 列表

定义:

  • 列表是一种线性表,在python中没有数组,列表便类似于数组

创建:

  • 直接赋值
    ls = [1, 2, 3]
  • 调用全局函数生成
    ls = list() ls = list([1, 3,4,5,5])

列表的使用:

  • 访问和修改元素的值
	ls = [1, 2, 3]
	ls[0]  #ls[0]=1
	ls[1]=100
	ls   #ls=[1,100,3]
	#括号内为列表下标,可以利用列表下标来访问和修改元素.
	#列表的下标从0开始
  • 获取元素的个数
	ls = [1, 2, 3]
	len(ls)    # 3
  • 遍历(迭代)
ls=[1,2,3]
for i=0 in len(ls):
	print(ls[i])
  • 嵌套
>>>a = ['a', 'b', 'c']
>>>n = [1, 2, 3]
>>>x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
  • 拼接与截取

初始列表:ls=[1,2,3,4],ln=[‘a’,‘b’,‘c’]

示例结果描述
ls[1:3][ 2, 3,4]将列表中下标为1到3的元素输出
ls[::2][1,3]从第一个元素开始,以2为步长输出元素
ls+ln[1,2,3,4,‘a’,‘b’,‘c’]列表拼接
ls*4[1,2,3,4,1,2,3,4,1,2,3,4]列表的重复拷贝
2 in lsTrue判断列表中是否存在此元素
  • 常用方法与函数
方法(函数)示例解释
函数:
len(list)列表元素个数
max(list)返回列表元素最大值
min(list)返回列表元素最小值
list(seq)将元组转换为列表
方法:
list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)将对象插入列表
list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort( key=None, reverse=False)对原列表进行排序
list.clear()清空列表
list.copy()复制列表
set 集合

定义:
集合(set)是一个无序不重复元素序列。
创建:

  • 可以使用大括号 { } 或者 set() 函数创建集合
    创建一个空集合必须用 set() 而不是 { },{ } 会创建一个空字典。
>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)      
{'orange', 'banana', 'pear', 'apple'}
>>> a = set('abracadabra')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}

操作:

  • 添加元素
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
  • 移除元素
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")    #若集合中不存在此元素则会报错
>>> print(thisset)
{'Google', 'Runoob'}
  • 计算集合元素个数
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3
  • 判断元素是否在集合中
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
  • 集合内置方法
方法描述
add()为集合添加元素
update()给集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在
discard()删除集合中指定的元素
pop()随机移除元素
remove()移除指定元素
intersection()返回集合的交集
intersection_update()返回集合的交集
union()返回两个集合的并集
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
issubset()判断指定集合是否为该方法参数集合的子集
issuperset()判断该方法的参数集合是否为指定集合的子集
symmetric_difference()返回两个集合中不重复的元素集合
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
tuple 元组

定义:
与列表类似,但元组的元素不能修改
创建:

>>> tup1 = (1, 2, 3, 4, 5 )
>>> tup2 = "a", "b", "c", "d" 
>>> tup3 =()
>>> tup4 = (50,)   #元组中只有一个元素时,需要在元素末尾加“,”否则创建的变量不是元素类型

操作:
元组支持索引、截取、拼接、重复拷贝、迭代、判断存在、等操作(不支持删除与修改)
对元组的操作与对列表的操作相同
tuple(iterable)方法:将可迭代系列转换为元组

dict 字典

定义:

  • 字典是另一种可变容器模型,且可存储任意类型对象。
    字典中的数据以一种键值对形式存储
    键值是唯一的,且为不可变类型(字符串、数字、元组)

创建:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

操作:

  • 访问字典里的值
>>>dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>>print (dict['Name'])    #若访问的键在字典中不存在,则会报错
Runoob
  • 修改字典
>>>dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>>dict['Age'] = 8          	    # 更新 Age
>>>dict['School'] = "cisco"  		# 添加信息
>>>print ( dict['Age'])
8
>>>print (dict['School'])
csico
  • 删除字典元素
>>>dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} 
>>>del dict['Name'] # 删除键 'Name'
>>>dict.clear()     # 清空字典
>>>del dict         # 删除字典
  • 内置方法和函数
函数描述
len(dict)计算字典元素个数,即键的总数
str(dict)输出字典,以可打印的字符串表示
clear()删除字典内所有元素
copy()返回一个字典的浅复制
fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
get(key, default=None)返回指定键的值,如果值不在字典中返回default值
setdefault(key, default=None)与get类似
key in dict判断key是否在字典中
items()以列表返回可遍历的(键, 值) 元组数组
keys()返回一个迭代器,可以使用 list() 来转换为列表
update(dict2)把字典dict2的键/值对更新到dict里
values()返回一个迭代器,可以使用 list() 来转换为列表
pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
popitem()随机返回并删除字典中的最后一对键和值

题目练习:

#求一个数是否是质数(素数)
def num_1(num):
    if num > 1:
       # 查看因子
        for i in range(2,num):
            if (num % i) == 0:
               return False
        else:
            return True
    else:
        return False

------------------------------------------------------
#求50~150之间的质数是那些
def num_2():
    for i in range(50,150):
        if is_prime(i):
            print(i)


------------------------------------------------------
#使用循环完成如下图案的打印
def num_3():
    a=int(input("请输入图片编号:"))
    if a==1:
        q = int(input('输入打印行数:'))
        for i in range(0, q):
            for j in range(0, i+1):
                print('*', end = '')
            print()
    elif a==2:
        q = int(input('输入打印行数:'))
        for i in range(0, q):
            for j in range(0,q-i):
                print(' ', end = '')
            for k in range(0, 2 * i+1):
                print('*', end = '')
            print()
    elif a==3:
        q = int(input('输入打印行数:'))
        for i in range(0, q):
            for j in range(0,q-i):
                print(' ',end = '')
            if i!=0:
                print('*',end = '')
            if i+1==q:
                for k in range(0, 2 * i - 1):
                    print('*', end = '')
            else:
                for k in range(0, 2 * i - 1):
                    print(' ', end = '')
            print("*")
    elif a==4:
        q = int(input('输入打印行数:'))
        for i in range(0, q//2):
            for j in range(0,q//2-i):
                print(' ', end = '')
            for k in range(0,2*i+1):
                print('*', end = '')
            print()
        for i in range((q+1)//2, 0,-1):
            for j in range(0,q//2-(i-1)):
                print(' ', end = '')
            for k in range(0,2*i-1):
                print('*', end = '')
            print()
    elif a==5:
        q = int(input('输入打印行数:'))
        for i in range(0, q//2):
            for j in range(0,q//2-i):
                print(' ',end = '')
            if i!=0:
                print('*',end = '')
            for k in range(0, 2 * i - 1):
                print(' ', end = '')
            print("*")
        for i in range((q+1)//2,0,-1):
            for j in range(0,q//2-(i-1)):
                print(' ',end = '')
            if i!=1:
                print('*',end = '')
            for k in range(0, 2 * (i-1)-1):
                print(' ', end = '')
            print("*")
    elif a==6:
        q = int(input('输入打印行数(上半部分):'))
        for i in range(1, 2*q):
            a = q - i
            if a < 0:
                a = -a
            b = q - a
            for j in range(a, 0, -1):
                print(' ', end = '')
            for k in range(1, 2 * b):
                if a % 2 and k % 2 == 0:
                    print(' ', end = '')
                else:
                    print('*', end = '')
            print()
    else:
        return False


------------------------------------------------------
#完整计算器程序
def num_4():
    a = eval(input('计算器\n算式:'))
    print('结果:',a)


#一个自然数与3的和是5的倍数,3的差是6的倍数,这个自然数最小是几
def num_5():
    a = 0
    while True:
        a += 1
        if (a + 3) % 5 == 0 and (a - 3) % 6 == 0:
            print(a)
            break


------------------------------------------------------
#在400--500之间求一个数,它被2除余1,5除余3,9除余1,这个数是多少
def num_6():
    for a in range(400, 500):
        m = a % 2
        n = a % 5
        k = a % 9
        if m == 1 and n == 3 and k == 1:
            print('这个自然数是', a)
            break


------------------------------------------------------
#有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几
def num_7():
    k = 1
    for a in range(1,10):
        for b in range(1,10):
            m = a +b
            if m % 3 == 0 and b % 2 == 0:
                if k:
                    print('最小数:{}36{}' .format(a, b))
                    k -= 1
                break
    print('最大数:{}36{}' .format(a, b))


------------------------------------------------------
#将列表ls = [1,2,3,4,5,5,5,5,6,4,56,6,67]去重,至少使用两种方式实现
def num_8():
    ls = [1,2,3,4,5,5,5,5,6,4,56,6,67]
    ls1 = list(set(ls))
    print("第一种方法:", ls1)
    ls2 = []
    for i in ls:
        if i not in ls2:
            ls2.append(i)
    print('第二种方法:',ls2)


------------------------------------------------------
#两个列表进行合并操作
def num_9():
    lis_1=[1,2,3,4,5]
    lis_2=['a','b','c']
    lis_3=lis_1+lis_2
    print(lis_3)


------------------------------------------------------
#使用列表判断一个列表是否在另外一个列表中 
def num_10():
    lis_1=[[1,2],3,[1,2,3]]
    lis_2=[1,2]
    print(lis_2 in lis_1)


------------------------------------------------------
#列表的反转
def num_11():
    lis=[1,2,3,4,5]
    lis_0=list(reversed(lis))
    print(lis_0)


------------------------------------------------------
#列表的排序
def num_12():
    lis=[3,1,6,2,7,5,4,8,4]
    lis.sort()
    print(lis)


------------------------------------------------------
#实现对列表的增删改查功能
def num_13():
    a = [1, 2, 55, 6, 8, 78, 'whi', '1']
    k = int(input('请选择功能(1.添加 2.删除 3.更改 4.查找):'))
    if k == 1:
        a.append(eval(input('请输入元素:')))
    elif k == 2:
        m = eval(input('请输入元素:'))
        for i in a:
            if i == m:
                a.pop(a.index(m))
                break
            else:
                print('没有这个元素')
                break
    elif k == 3:
        m = int(input('请输入元素位置:'))
        a[m-1] = eval(input('请输入改变后的元素:'))
    elif k == 4:
        print(a.index(eval(input('请输入元素:'))))
    else:
        print("输入错误")
    print(a)


------------------------------------------------------
#如何将0-10随机存入列表中
import random
def num_14():
    a = []
    b = int(input('请输入存入数量:'))
    for i in range(0,b):
        a.append(random.randint(0, 10))
    print(a)


------------------------------------------------------
#求出元组(90,34,-23,18,12)中的最大值和最小值
def num_15():
    a = (90, 34, -23, 18, 12)
    max = a[0]
    min = a[0]
    for i in a:
        if i > max:
            max = i
        if i < min:
            min = i
    print('最大值',max,'最小值',min)


------------------------------------------------------
#针对列表[90,34,-23,18,12]从小到大进行排序,然后输出排序后结果
def num_16():
    a = [90,34,-23,18,12]
    a.sort()
    print(a)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值