python字符串切片问题

题目:已知字符串s='苹果:12个;梨:20个;桔子:35个;香蕉:18个',试编写程序,实现以下功能:

  1. 根据输入的水果,查询个数。(假设用户输入的水果在字符串中均存在)
    例如:输入“苹果”,输出“苹果总共有12个。”

我的答案:
str='苹果:12个;梨:20个;桔子:35个;香蕉:18个'
a=int(input("请输入水果:"))
b=(a-1)*3
c=str[b:b+6]
print("水果共有",c)

运行的时候报错了,请问如何修改


# 定义字符串s
s = '苹果:12个;梨:20个;桔子:35个;香蕉:18个'

# 将字符串s按照分号分割,得到一个列表
lst = s.split(';')

# 定义一个空字典,用于存储水果和个数的对应关系
dic = {}

# 遍历列表中的每个元素
for item in lst:
  # 将每个元素按照冒号分割,得到水果和个数
  fruit, num = item.split(':')
  # 去掉个数中的'个'字,转换为整数类型
  num = int(num[:-1])
  # 将水果和个数作为键值对存入字典中
  dic[fruit] = num

# 提示用户输入水果
fruit = input('请输入水果:')

# 判断用户输入的水果是否在字典中
if fruit in dic:
  # 如果在字典中,输出对应的个数
  print(f'{fruit}总共有{dic[fruit]}个。')
else:
  # 如果不在字典中,输出提示信息
  print('没有找到该水果。')

。。。。。又想吐槽了

a = int(input()) 是个什么鬼?你要记录的是水果名,不是数字,为什么要用int?
b = (a-1) * 3 是个什么逻辑?你的水果又不都是2个字的,你有梨的存在啊
c = str[b:b+6] 又是个什么逻辑?什么水果的数字有6个数字那么多?你批发呢?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7581554
  • 这篇博客也不错, 你可以看下Python基础题目大全,测试你的水平,巩固知识(含答案)
  • 除此之外, 这篇博客: python对图片进行水平 垂直翻转及按一定角度旋转中的 2. 处理某文件夹中所有图片 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    
    #!/usr/bin/env python
    
    import sys
    import cv2
    import os
    from PIL import Image
    from PIL import ImageDraw
    
    os.getcwd()
    path = os.path.join(os.getcwd(),'image')
    print(path)
    im_file = os.listdir(path)
    
    for im_file_index_i in im_file:
        os.getcwd()
        path = os.path.join(os.getcwd(), 'image')
        # im_test = os.path.join(path, im_file_index_i)
        im_test = os.path.join(path, im_file_index_i)
        print(im_test)
        img1 = Image.open(im_test)
    
        # ====================================================
        out = Image.open(im_test)
        out1 = out.transpose(Image.FLIP_LEFT_RIGHT)  # 水平翻转
        out2 = out.transpose(Image.FLIP_TOP_BOTTOM)    #垂直翻转
        out3 = out.rotate(45)                            #45°顺时针翻转
        # out4 = img.rotate(30)                            #30°顺时针翻转
        #out1.show()
        #out2.show()
        #out3.show()
        # out4.show()
        name1 = '/home/.../image/' + im_file_index_i
        out1.save(name1)
    
        name2 = '/home/.../image/' + im_file_index_i
        out2.save(name2)
    
  • 您还可以看一下 董付国老师的Python可以这样学(第12季:音频处理与视频处理实战)课程中的 补充:删除视频画面中的水印小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^