python中的语法列表,循环,元素

1.python中的语法列表,循环,元素

  • 容器的基本特征:一个容器型的数据可以同时保存多个其他的数据

  • 元素:容器中每一个独立的数据就是一个元素

  • 列表:是容器型数据类型(序列):将[]作为容器的标志,里面多个元素用逗号隔开:[元素1,元素2,元素3,…] 。

  • 特点:列表是可变的(元素的个数、值和顺序可变)增,删,改;列表是有序的。

  • 要求:没有要求(不管什么类型的数据都可以作为列表的元素)

  • 查:获取元素

  • 种类:获取单个元素,切片,遍历(一个一个的取)

    • 获取单个元素

    • 任何结果是列表的表达式,比如:保存列表的变量、具体的列表值等任何结果是列表的表达式,
      固定写法
      下标又叫索引,是元素在有序序列中位置信息。
      Python中有序序列中每个元素都有两组下标值,分别是:从前往后从0开始递增的下标值;从后往前从-1开始递减的下标值

    • 空列表

    • len(列表) 获取列表中元素的个数

      代码如下:

      scores = [90,89,23,54]
      print (sum(scores)/len(scores))
          
      list1 = []
      list2 = [ ]
      print(type(list1),type(list2)) #<class 'list'>
      print(bool(list1),bool(list2)) #<class 'list'>
      print(len(list1),len(list2)) #False False
          
      list3 = [21,32,32,34,87,90]
      print(list3)  #[21, 32, 32, 34, 87, 90]
          
      list4 = [
          [1,3,4],
          [3,5,6],
          [7,8,9]
       ]
      print(list4)
      #  [[1, 3, 4], [3, 5, 6], [7, 8, 9]]
          
      names = ['甄姬','貂蝉','韩信',' 吕布','赵云','后裔','鲁班','狄仁杰']
      print(names[1]) #貂蝉
      print(names[-1]) #狄仁杰
      print(names[5]) #后裔
      print(names[-5]) #吕布
      #print(names[10]) 下标不能越界
          
      for x in names:
          print(x,end = ' ')
      # 甄姬 貂蝉 韩信  吕布 赵云 后裔 鲁班 狄仁杰
          
      for index in range(len(names)):
          print(index,names[index],end = ' ')
      # 0 甄姬 1 貂蝉 2 韩信 3  吕布 4 赵云 5 后裔 6 鲁班 7 狄仁杰
          
      for index, item in enumerate(names):
          print(index,item,end = ' ')
      # 0 甄姬 1 貂蝉 2 韩信 3  吕布 4 赵云 5 后裔 6 鲁班 7 狄仁杰 
      
2.循环嵌套

# 循环嵌套的执行原则:外循环一次,内循环完整
for x in range(5):
    for y in range(2, 5):
        print(x, y)

x取值范围:0,1,2,3,4
第1次  x=0:  执行循环体对应的for循环, y取值范围是: 2,3,4
            第1次 y=2: print(x, y) -> print(0, 2)
            第2次 y=3: print(x, y) -> print(0, 3)
            第3次 y=4: print(x, y) -> print(0, 4)
            内循环结束
第2次  x=1:  执行循环体对应的for循环, y取值范围是: 2,3,4
            第1次 y=2: print(x, y) -> print(1, 2)
            第2次 y=3: print(x, y) -> print(1, 3)
            第3次 y=4: print(x, y) -> print(1, 4)
            内循环结束
3.元素

列表.append(元素)   -   在列表的最后添加一个元素
列表.insert(下标, 元素)  - 在指定下标对应的元素前插入指定元素
"""
movies = ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
print(movies)       # ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']

movies.append('肖生克的救赎')
print(movies)       # ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪', '肖生克的救赎']

movies.insert(2, '沉默的羔羊')
print(movies)       # ['五十六度灰', '哥斯拉大战金刚', '沉默的羔羊', '桃花侠大战菊花怪', '肖生克的救赎']

# 2)批量添加
# 列表1.extend(列表2)  - 将列表2元素全部添加到列表1的后面
movies.extend(['让子弹飞', '触不可及', 'V字仇杀队'])
print(movies)       # ['五十六度灰', '哥斯拉大战金刚', '沉默的羔羊', '桃花侠大战菊花怪', '肖生克的救赎', '让子弹飞', '触不可及', 'V字仇杀队']

# 练习:将scores中所有的及格的分数提取出来
# [89, 67, 90, 98, 78, 99]
scores = [89, 67, 56, 90, 98, 30, 78, 51, 99]
scores2 = []
for x in scores:
    if x >= 60:
        scores2.append(x)
print(scores2)
4.习题

# 1.使用for和while循环输出 0~100 内所有3的倍数。
print('==================第1题(1)===============')
# 方法一
for num in range(0, 100, 3):
    print(num)

# while循环
print('==================第1题(2)===============')
num = 0   # 保存3的倍数,默认是0
while True:
    # 打印3的倍数
    print(num)
    num += 3
    if num >= 100:
        break


# 2. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。
# 234
print('==================第2题(1)===============')
for num in range(100, 200):
    if num % 10 % 3 == 0 or num // 10 % 10 % 3 == 0:
        print(num)

for num in range(100, 200):
    ge = num % 10
    if ge % 3 == 0:
        print(num)
        continue
    shi = num // 10 % 10
    if shi % 3 == 0:
        print(num)

print('==================第2题(2)===============')
num = 100
while True:
    if num % 10 % 3 == 0 or num // 10 % 10 % 3 == 0:
        print(num)
    num += 1
    if num >= 200:
        break

# 3.统计100~200中十位数是5的数的个数
print('==================第3题===============')
count = 0
for num in range(150, 160):
    count += 1
print(count)

# 4. 打印50~150中所有能被3整除但是不能被5整除的数
print('==================第4题===============')
for num in range(51, 150, 3):
    if num % 5 != 0:
        print(num)

for num in range(51, 150, 3):
    if num % 5 == 0:
        continue
    print(num)

# 5.计算50~150中所有能被3整除但是不能被5整除的数的和
print('==================第5题===============')
sum1 = 0
for num in range(51, 150, 3):
    if num % 5 != 0:
        sum1 += num
print(sum1)

# 6. 使用循环计算1*2*3*4*...*10的结果。
print('==================第6题===============')
sum1 = 1
for num in range(1, 11):
    sum1 *= num
print(sum1)

# 7.统计100以内个位数是2并且能够被3整除的数的个数。
print('==================第7题===============')
count = 0
for num in range(2, 100, 10):
    if num % 3 == 0:
        count += 1
        print(num)
print('个数:', count)

# 8.输入任意一个正整数,求他是几位数?
# 234  -> 3   234 // 10  = 23 // 10 = 2 // 10 = 0
# 1024  -> 4    1024 // 10 = 102  // 10  = 10 // 10 = 1 // 10 = 0
print('==================第8题===============')
 num = int(input('请输入一个正整数:'))
 count = 0
 while True:
     num //= 10
     count += 1
     if num == 0:
        break
print(count)

# 9.判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
print('==================第9题===============')
num = 7
# 方法一:基本逻辑(没有优化)
for x in range(2, num):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')

# 方法二:优化循环次数
for x in range(2, int(num ** 0.5) + 1):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')


# 10. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
# 1  1 2 3 5 8 13 21 34 55
print('==================第10题===============')
pre_1 = pre_2 = 1
n = 6
if n == 1 or n == 2:
    print(1)
else:
    for x in range(n-3):
        pre_1, pre_2 = pre_2, pre_1 + pre_2
    print(pre_1 + pre_2)

"""
pre_1 = 1, pre_2 = 1
n = 6
if n == 1 or n == 2 -> if 6==1 or 6 == 2  -> if False or False -> if False
执行else中的代码:
    执行for循环:
    x取值范围是:range(n-3) -> range(6-3) -> range(3) -> 0, 1, 2 (循环3次)
    第1次循环  x = 0: pre_1, pre_2 = pre_2, pre_1 + pre_2 -> pre_1, pre_2 = 1, 1+1 -> pre_1, pre_2 = 1, 2
    第2次循环  x = 1: pre_1, pre_2 = pre_2, pre_1 + pre_2 -> pre_1, pre_2 = 2, 1+2 = 2, 3
    第3次循环  x = 2: pre_1, pre_2 = pre_2, pre_1 + pre_2 -> pre_1, pre_2 = 3, 2+3 = 3, 5
    循环结束
    print(pre_1 + pre_2) -> print(3 + 5)  -> print(8)
    
from random import randint
number = randint(1, 100)    # 产生1~100的随机数(游戏中需要猜的数)
count = 0
while True:
    value = int(input('请输入数字(1~100):'))    # 玩家输入
    count += 1
    if value == number:
        break
    if value > number:
        print('大了,再小点儿!')
    else:
        print('小了,再大点儿!')

print('恭喜你猜对了!')
if count < 5:
    print('猜中只用了', count, '次! 棒棒哒~')
elif count < 10:
    print('总共猜了', count, '次~平凡如你~')
else:
    print('天才!你猜了', count, '次!')
    
 for循环
"""
for 变量 in 序列:
    循环体(需要重复执行的代码)
else:
    代码段
"""
for x in range(10):
    if x % 2:
        print(x)

"""
x取值范围是:0、1、2、3...9
第1次循环 x=0:  if x % 2  -> if 0 % 2 -> if 0 -> if False
第2次循环 x=1:  if x % 2  -> if 1 % 2 -> if 1 -> if True: print(x) -> print(1)
第3次循环 x=2:  ....

# 2. range
# range(N)    [0,N)  步长为1
# range(M,N)    [M,N)  步长为1
# range(M,N,step)   [M, N)   步长为step

# 3.while
"""
while 条件语句:
    循环体
else:
    代码段
    

while True:
    需要重复的操作
    if 停止条件:
        break

# 4.continue、break
# 5. else
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值