python练习案例04之字符串、列表、字典的常用操作

177 阅读4分钟

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

题目1:

有列表['royal',20,[2000,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量

 l = ['royal',20,[2000,3,18]]
 name = l[0]
 age = l[1]
 year = l[2][0]
 month = l[2][1]
 day = l[2][2] 

题目2:

用列表的insert与pop方法模拟队列

队列:FIFO,先进先出

 l = []
 # 入队
 l.append('one')
 l.append('two')
 l.append('three')
 ​
 print(l)
 ​
 # 出队
 l.pop(0)
 l.pop(0)
 l.pop(0)

题目3:

用列表的insert与pop方法模拟堆栈

堆栈:LIFO,后进先出

 l=[]
 # 入栈操作
 l.append('first')
 l.append('second')
 l.append('third')
 ​
 print(l)
 # 出队操作
 print(l.pop())
 print(l.pop())
 print(l.pop())

题目4:

简单购物车,要求如下:

  实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数以三元组形式加入购物列表,如果输入为空或其他非法输入则要求用户重新输入  
 msg_dic={
 'apple':10,
 'tesla':100000,
 'mac':3000,
 'lenovo':30000,
 'chicken':10,
 }

代码:

 god_list = []
 flag = True
 while flag:
     god_name = input('请输入商品名:')
     god_price = input('请输入价格:')
     god_num = input('请输入购买个数:')
 ​
     if god_price.isdigit() and god_num.isdigit():
         flag = False
         god_price = int(god_price)
         god_num = int(god_num)
 ​
         god = (god_name,god_price,god_num)
         god_list.append(god)
         print(shop_list)
     else:
         print("您输入有误,请重新输入")

解题思路:

1.首先我们还是先分析一下变量,先设置一个列表,shop_list作为购物列表,用来存储用户输入的商品信息。这里我们设置用户输入的商品名为god_name,单价为god_price,购买个数为god_num。

 god_list = []
 god_name = input('请输入商品名:')
 god_price = input('请输入价格:')
 god_num = input('请输入购买个数:')

2.紧接着我们需要判断价格和个数需要为纯数字的字符串,所以我们加个条件判断,如果为纯数字字符串则转换为int类型。

 if god_price.isdigit() and god_num.isdigit():
     god_price = int(god_price)
     god_num = int(god_num)

3.然后放到一个元组中,再将元组放到商品列表中,最后输出出来

 if god_price.isdigit() and god_num.isdigit():
     god_price = int(god_price)
     god_num = int(god_num)
 ​
     god = (god_name,god_price,god_num)
     god_list.append(god)
     print(god_list)

4.但是如果用户输入的价格和个数不是纯数字字符串就要重新输入

else:
    print('您的输入有误,请重新输入')

5.用户输入错误与否是未知的,所以需要根据条件判断是否重复执行,所以我们套一层while循环来判断,我们设置一个变量flag,默认为True,即默认进入循环,如果用户输入无误则改变flag为False结束循环,反之不改变flag。

god_list = []
flag = True

while flag:
    god_name = input('请输入商品名:')
    god_price = input('请输入价格:')
    god_num = input('请输入购买个数:')

    if god_price.isdigit() and god_num.isdigit():
        flag = False
        god_price = int(god_price)
        god_num = int(god_num)

        god = (god_name,god_price,god_num)
        god_list.append(god)
        print(god_list)
    else:
        print('您的输入有误,请重新输入')

题目5:

有如下值集合 [11,22,33,44,55,66,77,88,99],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中

l = [11,22,33,44,55,66,77,88,99]
d = {}
k2 = []
for v in l:
    if v > 66:
       d['k1'] = v
    else:
        k2.append(v)
        d['k2'] = k2
print(d)

解题思路:

1.首先我们需要一个列表包含这些数字,并且要创造一个空字典,再创造一个空列表用来存放第二个key的值

l = [11,22,33,44,55,66,77,88,99]
d = {}
k2 = []

2.然后将l列表中的值用for循环迭代出来

for v in l:

3.接着判断这个v是否大于66,如果大于66保存到k1中,小于66则添加到k2列表中,然后将k2列表存放到字典k2键中

if v > 66:
       d['k1'] = v
    else:
        k2.append(v)
        d['k2'] = k2

4.最后输出字典即可

l = [11,22,33,44,55,66,77,88,99]
d = {}
k2 = []
for v in l:
    if v > 66:
       d['k1'] = v
    else:
        k2.append(v)
        d['k2'] = k2
print(d)

题目6:

统计s='hello world royal say hello world world'中每个单词的个数

s='hello world r0ya1 say hello world world'
hello_count = s.count('hello')
world_count = s.count('world')
r0ya1_count = s.count('r0ya1')
say_count = s.count('say')

print('''hello:{hello_count}\n======
world:{world_count}\n====== 
r0ya1:{r0ya1_count}\n======
say:{say_count}\n====== 
'''.format(hello_count = hello_count,world_count = world_count , r0ya1_count = r0ya1_count , say_count = say_count))

解题思路:

1.这题比较简单,首先直接用字符串函数count统计每个单词的数量,然后传给相应的变量

s='hello world r0ya1 say hello world world'
hello_count = s.count('hello')
world_count = s.count('world')
r0ya1_count = s.count('r0ya1')
say_count = s.count('say')

2.然后格式化输出一样即可

print('''hello:{hello_count}\n======
world:{world_count}\n====== 
r0ya1:{r0ya1_count}\n======
say:{say_count}\n====== 
'''.format(hello_count = hello_count,world_count = world_count , r0ya1_count = r0ya1_count , say_count = say_count))

\