掉进悬崖的小白,开始学习列表,继续向基础进军,列表操作,趣味游戏继续走起~

掉进悬崖的小白,开始学习列表,继续向基础进军,列表操作,趣味游戏继续走起~

列表

列表概念及存储方式:

1.一个可变长的存储一系列数据的顺序集合
2.列表是通过索引来访问的
3.由连续的内存位置组成的

定义列表:

列表标识:[]
定义空列表
empty_list = []
定义同类型存储的列表:
str_list = [“程咬金”,“亚瑟”,“曹操”]
int_list = [1,23,66,27,8]
定义混杂类型存储的列表:
list = [“张三”,23,“男”,“13838383388”]
定义一个重复出现n次元素的列表:*
重要的事情说三遍
list = [“我要学Python!”] * 3

列表的基本操作:

nums = [1, 2, 3, 4, 5, 6, 7]
数据:1 2 3 4 5 6 7
索引:0 1 2 3 4 5 6
1.索引默认从0开始,访问列表元素:nums[0]、nums[1]。
2.获取列表元素数:len(nums):7
3.遍历:
for i int range(len(nums)):
print(nums[i])

列表其他操作:
添加元素至末尾:
nums.append(8)

插入元素到指定位置,位置可以为负:
nums.insert(1, 9)

追加列表:
nums.extend([8, 9, 10, 11])

删除:
删除位置上的数据:del nums[2]
删除某个数据(只删除找到的第一个):nums.remove(7)

修改:
nums[0] = 0

查询:找不到会报错
会找到第一个6的索引
index = nums.index(6)

反序
nums.reverse()
[7, 6, 5, 4, 3, 2, 1]

目前前提:列表数据是同类型的,才可以求最大和最小
求最大:max(nums):7
求最小:min(nums):1

合并:+
nums1 = [1, 2, 3]
nums2 = [4, 5, 6]
nums3 = nums1 + nums2
[1, 2, 3, 4, 5, 6]

打乱(随机洗牌)
random.shuffle(nums1)
将num1中的元素随机打乱,打印出[2,1,3]

列表练习小游戏

公交报站系统

# 2、公交报站系统,每经过一站,报出该站名称,若乘客在该站下车,
# 在出站口提示“一共乘坐x站”。用while循环实现以上程序
#
list_stand = ["人民路","幸福路","长寿街","富民街"]
list_choose1 = []
num_stands = 0
while "y" not in list_choose1 :
    num_stands += 1
    if num_stands >=len(list_stand):
        print(f"终点站{list_stand[num_stands - 1]}到了,一共乘坐{len(list_stand) }站,请下车")
        break
    list_choose1.append(input(f"第{num_stands}站{list_stand[num_stands - 1]}到了,是否下车:"))
else:
    print(f"一共乘坐{num_stands }站")

电文译码(解码)

# 3、有一电文,已按下列规律译成译码:
#               A→Z  a→z
#               B→Y  b→y
#               C→X  c→x
#               …    …
# 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。
# 非字母字符不变。编写一个程序将密码译成原文,并输出密码和原文。
#
#
list_a_z = [chr(i) for i in range(97,123)]
# list_z_a = [chr(i) for i in range(122,96,-1)]
list_A_Z = [chr(i) for i in range(65,91)]
# list_Z_A = [chr(i) for i in range(90,64,-1)]

print(list_a_z)
print(list_A_Z )
# print(list_Z_A )
# print(list_z_a )
list_text = list(input("请输入原文:"))
print(f"原文:{list_text}")
for i in range(len(list_text)):
    if list_text[i] in list_a_z :
            list_text[i] = list_a_z[25-list_a_z.index(list_text[i])]
    if list_text[i] in list_A_Z:
            list_text[i] = list_A_Z[25-list_A_Z.index(list_text[i])]

print(f"译文:{list_text}")

模仿QQ登录,3次有误锁定

# 10、登录QQ时,QQ号和密码必须正确并且匹配才能够登录成功。
# 假设最多只允许用户输入三次,中间任何一次输入正确,则给出提示:登录成功。
# 如第一次输入信息有误,则给出提示:QQ号或密码输入有误,请重新输入,您还有2次机会。
# 第二次还输入有误,则给出:QQ号或密码输入有误,请重新输入,您还有1次机会。
# 第三次如输入还有误,则给出提示:您三次输入都有误,请与管理员联系。
#
def register():
    in_next = 3
    for i in range(3):
        user_name = input("请输入用户名:")
        user_pwd = input("请输入密码:")
        if user_name != "admin" or user_pwd != "88888":
            print(f"QQ号或密码输入有误,请重新输入,您还有{2 - i}次机会。") if i != 2 else print("您三次输入都有误,请与管理员联系")
        else:
            print("登录成功")
            return


register()


两个数的最大公约数和最小公倍数

def common_num(a,b):
    c= a if a<b else b
    for i in range(c,a*b+1):
        if i%a==0 and i%b ==0:
            # common_multiple= i
            print(f"最小公倍约数:{i}")
            break
    for j in range(c,0,-1):
        if a%j==0 and b%j ==0:
            # common_divisor= j
            print(f"最大公约数:{j}")
            break
common_num(in_int(),in_int())

定义in_int()函数,提示用户一直输入,直到输入正确的整数为止

# 定义in_int()函数,提示用户一直输入正确的整数为止
def in_int():
    while True:
        num = input("请输入整数:")
        if num.isdigit():
            return int(num)
        print("重新输入!")

规则转换,递归游戏

# 1、输入一段字符判断是大写,还是小写。若是小写,转换为大写,若是大写,转换为小写
#
list_a_z = [chr(i) for i in range(97, 123)]
list_A_Z = [chr(i) for i in range(65, 91)]
def in_char():
    while True:
        list_char = list(input("请输入一段字符:"))
        for i in range(len(list_char)-1):
            if list_char[i] in list_a_z:
                list_char[i]= list_A_Z[list_a_z.index(list_char[i])]
            if list_char[i] in list_A_Z:
                list_char[i] = list_a_z[list_A_Z.index(list_char[i])]
        print(str(list_char))
        return
# in_char()
# 2、一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数
# 是多少, 用递归算法实现。
#
list_2 = [1,1,2,3,5,8,13,21,34]
for i in range(30-len(list_2)):
    list_2.append(list_2[-1] + list_2[-2])
print(list_2)


# 3、请编程实现对一个数组的排序,结果从大到小
#
def int_rank():
    num_list = [1,8,4,3,9]
    rank_list=[]
    num_list.append(in_int())
    for i in range(len(num_list)):
        rank_list.append(max(num_list))
        num_list.remove(max(num_list))
    print(rank_list)
# int_rank()

最有趣的画规则图形小游戏它又来了!

# 4、接收一个整数(1-26之间),打印A-Z之间图形。如接收26,则打印如下图形
#      (char)65-->A   (char)66-->B
#      以此类推
#                                    A
#                                   BBB
#                                  CCCCC
#                                 DDDDDDD
#                                EEEEEEEEE
#                               FFFFFFFFFFF
#                              GGGGGGGGGGGGG
#                             HHHHHHHHHHHHHHH
#                            IIIIIIIIIIIIIIIII
#                           JJJJJJJJJJJJJJJJJJJ
#                          KKKKKKKKKKKKKKKKKKKKK
#                         LLLLLLLLLLLLLLLLLLLLLLL
#                        MMMMMMMMMMMMMMMMMMMMMMMMM
#                       NNNNNNNNNNNNNNNNNNNNNNNNNNN
#                      OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
#                     PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
#                    QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
#                   RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
#                  SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
#                 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
#                UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
#               VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
#              WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
#             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#            YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
#           ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
#
def in_1_26():
    while True:
        score = input("请输入1-26(打印行数):")
        if score.isdigit() and 1 <= int(score) <= 26:
            return int(score)
        print("重新输入!")
def figure_A_Z():
    n = in_1_26()
    for i in range(1, n + 1):
        print(" " * (n - i) + chr(64 + i) * (2 * i - 1))
figure_A_Z()
 5. 键盘输入一个整数(0-9之间),显示如下图形(n=5)
#     12345
#      2345
#       345
#        45
#         5
#
# def figure_0_9():
#     n_5 = in_int()
#     if n_5 >9 or n_5<0:
#             print("暂只能满足0-9之间打印!")
#     else:
#         for j in range(5):
#             for i in range(j, 6):
#                 if i <= j:
#                     print(" " * j, end="")
#                 else:
#                     print(chr(48 + i), end="")
#             print()
# figure_0_9()
# 6、输入一个奇数显示以下图型(如:num=5)
#  *****            " ",0,*,5
#   ***            " ",1,*,3
#    *            " ",2,*,1
#   ***            " ",1,*,3
#  *****            " ",0,*,5
# def figure_odd():
#     n_11 = in_int()
#     if n_11 % 2 == 0:
#         print("输入值非奇数无法打印!")
#     else:
#         for i in range(n_11):
#             if i <= n_11 // 2:
#                 print(" " * i + "*" * (n_11 - i * 2))
#             else:
#                 print(" " * (n_11 - i - 1) + "*" * (i * 2 - n_11 + 2))
#             pass
#         pass


# 编程实现如下图列出的图形。(放在此处作为上题参考!)
#   *
#  ***
#  *****
# *******
#  *****
#   ***
#   *
# n_11 = int(input("请输入奇位行数:"))
# if n_11 % 2==0:
#     print("无法打印!")
# else:
#     for i in range(n_11):
#         if i <= n_11 // 2:
#             print(" " * (n_11 // 2 - i) + "*" * (2 * i + 1))
#         else:
#             print(" " * (i - n_11 // 2) + "*" * ((n_11 - i) * 2 - 1))
#         pass
#     pass
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章