Python基础之容器1----字符串和列表

Posted 一如年少模样

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础之容器1----字符串和列表相关的知识,希望对你有一定的参考价值。

一、编码:

  1、编码只是梳理

  

  2、编码涉及的函数:

    

  3、实例:

      字符串内存图

  

  

二、字符串

  1、定义:由一系列字符组成的不可变序列容器,存储的是字符的编码值

    不可变:指字符串一旦定义,其内存地址就已经确定不能改变

    序列:指字符的编码在内存中按照一定的顺序存储

    

    

    2、字符串的字面值:

      (1)单双引号:

        

      (2)三引号:

        

      (3)转义字符:

        

  3、字符串格式化:

    

      实例:

        

        

二、列表

  1、列表定义:

    

    内存图:

      

 

      

  2、创建列表:

    

  3、添加列表元素:

    

  4、删除列表元素:

    

  5、定位元素:

    

  6、遍历元素:

    

三、容器通用操作

  1、数学运算

    

    实例:

      

  2、成员运算:

    

    实例:

    

  3、索引(index)

    

    索引内存图

      

     实例:

      

  4、切片

    

    实例

      

四、综合实例演练

  练习1:在控制台中获取一个字符串,打印每个字符的编码值.

  

str_input  = input("请输入文字:")
for item in str_input:
    print(ord(item))

  练习2:在控制台中循环输入编码值,显示字符.直到输入负数时,退出.

    

while True:
    number = int(input("请输入编码值:"))
    if number < 0:
        break
    print(chr(number))

  练习3:在控制台中,获取一个字符串.
    1.  打印第一字符
    2.  打印最后一个字符
    3.  如果是奇数,打印中间的字符串(len(字符串))
    4.  打印倒数3个字符
    5.  倒叙打印字符串

    

str_input = input("请输入字符串:")
#1.  打印第一字符
print(str_input[0])
# print(str_input[-len(str_input)])
#2.  打印最后一个字符
print(str_input[-1])
# print(str_input[len(str_input) - 1])
#3.  如果是奇数,打印中间的字符串(len(字符串))
if len(str_input) % 2 == 1:
    print(str_input[len(str_input) // 2])
#4.  打印倒数3个字符
print(str_input[-3:])
#5.  倒叙打印字符串
print(str_input[::-1])

  练习4:在控制台中输入一个整数,根据整数打印一个矩形,要求如下

    """ 输入整数: 4
        ****
        *  *
        *  *
        ****

    """

number = int(input("请输入:"))
# 头
print("*" * number)
# 中间
for i in range(number -2):
    print("*" + " "*(number - 2) +"*")
# 尾
print("*" * number)

 

   练习5:在控制台中录入学生成绩,计算总分,最高分,最低分。
     “请输入学生总数:”
     “请输入第1个学生成绩:”

    

stu_count = int(input("请输入学生总数:"))
list01 = []
for i in range(stu_count):
    score = int(input("请输入第%d个学生成绩:"%(i+1)))
    list01.append(score)

print("总分:%d."%(sum(list01)))
print("最高分:%d."%(max(list01)))
print("最低分:%d."%(min(list01)))

   练习6:在控制台中录入学生姓名。  
         要求:姓名不能重复
              如果录入esc,则停止录入,打印每个学生姓名

  

list_names = []

while True:
    name = input("请输入第%d个学生姓名:" % (len(list_names) + 1))
    if name == "esc":
        break
    # 如果姓名不存在:
    if name not in list_names:
        list_names.append(name)

for item in list_names:
    print(item)

  练习7.获取最大/最小值

  

list01 = [34, 5, 6, 78, 9, 0, 5, 8, 88, 4]
# 假设第一个元素就是最大值
max = list01[0]
# 依次与后面(从第二个开始)元素进行比较
 for i in range(1,len(list01)):
# 发现更大的,则替换假设的.
     if max  < list01[i]:
         max = list01[i]
# 最后假设的就是真的最大值.
 print(max)

 

 

    练习8: 在控制台中循环录入字符串,输入q时退出.然后显示一个新的字符串.

    

list_result = []
while True:
    str_input = input("请输入:")
    if str_input =="q":
        break
    # str_result = str_result + str_input
    # ()使用列表拼接
    list_result.append(str_input)

#(2) 使用join合并
str_result = "".join(list_result)
print(str_result)

    练习9:判断字符串是否是回文:
        上海自来水来自海上
        奶牛产牛奶
        提示:字符串翻转  str01[::-1]

while True:
    Str1 = input(\'请输入一个字符串:\')
    if Str1 == \'q\':
        break
    else:
        Str2 = Str1[::-1]
        if Str1 == Str2:
            print(\'“%s”是回文字符串\' % Str1)
        else:
            print(\'“%s”不是回文字符串\' % Str1)

    练习10: 一注彩票7个球
        前六个是红球:1 -- 33 之间的数字,且不能重复.
          最后一个是蓝球:1 -- 16 之间的数字
        (1) 在控制台中购买彩票

    

ticket = []
# 前六个红球:
while len(ticket) < 6:
    number = int(input("请输入第%d个红球号码:"%(len(ticket) + 1)))
    if number <1 or number > 33:
        print("不再范围内")
    elif number in ticket:
        print("该号码已经存在")
    else:
        ticket.append(number)
# 蓝球:
while True:
    number = int(input("请输入蓝球号码:"))
    if 1<= number <= 16:
        ticket.append(number)
        break # 退出循环
    else:
        print("不再范围内")


print(ticket)  # 只是将列表转换为字符串 再显示

# 获取每个元素
# for item in ticket:
#     print(item)

    (2) 随机产生一注彩票

  

import random


ticket = []
while len(ticket) < 6:
    number = random.randint(1,33)
    if number not in ticket:
        ticket.append(number)

# 排序
# ticket.sort()

# number = random.randint(1,16)
# ticket.append(number)
ticket.append(random.randint(1,16))

# 需求:对列表执行范围的元素进行排序
# (1)通过切片返回新列表
temp = ticket[:6]
# (2)对新列表进行排序
temp.sort()
# (3)将新列表赋值给原列表
ticket[:6] = temp

print(ticket)

 

  

 

  

以上是关于Python基础之容器1----字符串和列表的主要内容,如果未能解决你的问题,请参考以下文章

python基础数据类型之列表

Python基础之公共方法

Python3详细的数组基础操作-入门必备[列表的操作]

python基础之非数值型变量

python基础之非数值型变量

Python 基础之集合及基本数据类型总结