鱼C论坛

 找回密码
 立即注册
查看: 1954|回复: 5

[已解决]查找字符串次数

[复制链接]
发表于 2021-9-12 11:43:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def findStr(desStr, subStr):
    count = 0
    length = len(desStr)
    if subStr not in desStr:
        print('在目标字符串中未找到字符串!')
    else:
        for each1 in range(length-1):      
            if desStr[each1] == subStr[0]:
                if desStr[each1+1] == subStr[1]:
                    count += 1
                    
        print('子字符串在目标字符串中共出现 %d 次' % count)

求问else后面部分的语句意思,还有问啥要用length函数,能否直接查找某2个字符在不在整个字符串中呢
最佳答案
2021-9-12 14:07:01
你的代碼解說:
def findStr(desStr, subStr):
    count = 0
    length = len(desStr) # 定義長度方便等下進行檢查
    if subStr not in desStr:
        print('在目标字符串中未找到字符串!')
    else: # 當發現 subStr 在 desStr 裡面時
        for each1 in range(length-1): # 從第一個字符開始遍歷至最後第二個位置(不包括最後一個)     
            if desStr[each1] == subStr[0]: # 當發現兩個字符串的字符相同時
                if desStr[each1+1] == subStr[1]: # 發現字符串的第二個字符也相同時
                    count += 1 # 計算相同次數
                    
        print('子字符串在目标字符串中共出现 %d 次' % count)
如果你是想判斷某個字符串是否在另一個字符串裡,而且出現次數是多少,但其實你的代碼是錯的,因為我用你的代碼做測試:
a = "banana"
b = "nana"
findStr(a, b)
子字符串在目标字符串中共出现 2 次
正確應該是1次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-12 14:07:01 | 显示全部楼层    本楼为最佳答案   
你的代碼解說:
def findStr(desStr, subStr):
    count = 0
    length = len(desStr) # 定義長度方便等下進行檢查
    if subStr not in desStr:
        print('在目标字符串中未找到字符串!')
    else: # 當發現 subStr 在 desStr 裡面時
        for each1 in range(length-1): # 從第一個字符開始遍歷至最後第二個位置(不包括最後一個)     
            if desStr[each1] == subStr[0]: # 當發現兩個字符串的字符相同時
                if desStr[each1+1] == subStr[1]: # 發現字符串的第二個字符也相同時
                    count += 1 # 計算相同次數
                    
        print('子字符串在目标字符串中共出现 %d 次' % count)
如果你是想判斷某個字符串是否在另一個字符串裡,而且出現次數是多少,但其實你的代碼是錯的,因為我用你的代碼做測試:
a = "banana"
b = "nana"
findStr(a, b)
子字符串在目标字符串中共出现 2 次
正確應該是1次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-12 15:49:24 | 显示全部楼层
傻眼貓咪 发表于 2021-9-12 14:07
你的代碼解說:
如果你是想判斷某個字符串是否在另一個字符串裡,而且出現次數是多少,但其實你的代碼是錯 ...

longstr = input('请输入目标字符串:')
shortstr = input('请输入子字符串(两个字符):')
findstr(longstr,shortstr)
请问最后这一句是什么意思哇,这个函数在第一行不是已经定义了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-12 15:55:00 | 显示全部楼层
longstr = input('请输入目标字符串:') # 輸入字符串
shortstr = input('请输入子字符串(两个字符):') # 輸入字符串
findstr(longstr,shortstr) # 執行函數,參數是以上兩個字符串
範例:
def funcionA(x, y):
    print(x+y)

a = 13 # 變量 a
b = 5 # 變量 b
funcionA(a, b) # 執行函數,參數是 a 和 b
18
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-12 16:14:32 | 显示全部楼层
wodeai999 发表于 2021-9-12 15:49
longstr = input('请输入目标字符串:')
shortstr = input('请输入子字符串(两个字符):')
findstr(lon ...

針對你的題目,我的代碼是:
def isInside(main, sub): # 函數
    size = len(sub) # 定義子字符串長度,方便等下切割測試(採用段落切割檢查)
    count = 0
    for i in range(len(main)-size): # 從第1個字符到最後第 size 字符做檢查
        if sub in main[i:i+size+1]: # 開始切割檢查
            count += 1
    return count # 返回次數

a = "banana"
b = "nana"
print(isInside(a, b))
1

代碼流程:
main = "banana"
sub = "nana"

檢查範圍:range(len(main)-size)也就是 "ban"(因為 "nana" 長度是4 ,就算"banana" 只有後面 3 個一樣也肯定不對,因為必須 4 個字符一樣)
當 i = "b"
檢查  sub 是在 main[i:i+size+1] 裡面(意思就是檢查  sub 是在 "bana" 裡面)
答案:沒有

當 i = "a"
檢查 sub 是在 main[i:i+size+1] 裡面(意思就是檢查  sub 是在 "anan" 裡面)
答案:沒有

當 i = "n"
檢查 sub 是在 main[i:i+size+1] 裡面(意思就是檢查  sub 是在 "nana" 裡
答案:有
count + 1

檢查完畢,返回 count 值(共 1 次)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-13 09:16:28 | 显示全部楼层
傻眼貓咪 发表于 2021-9-12 16:14
針對你的題目,我的代碼是:

看懂了 谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-4 15:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表