鱼C论坛

 找回密码
 立即注册
查看: 1211|回复: 8

[已解决]关于for循环的问题

[复制链接]
发表于 2021-8-6 15:51:07 | 显示全部楼层 |阅读模式

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

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

x
程序目的是查找输入的字符串的重复次数
为了防止重复查找,所以选择判断之后each值发生改变 但是为什么改变后的each值传递不进去呢?
def count(zifu):
    str1=zifu
    str2=zifu
    i=0
    long=len(zifu)
    for each1 in range(long):
        print(each1)
        for each2 in range(long):
            if str2[each2]==str1[each1]:
                i+=1
        print('出现',str1[each1],'%d次'% i)
        if str1[each1]==str1[each1+1]:
            print(each1)
            each1=2+each1
            print(each1)
    return
这是输入和运行的结果:
count('!!!!')
0
出现 ! 4次
0
2
1
出现 ! 8次
1
3
2
出现 ! 12次
2
4
3
出现 ! 16次
如果我输入的位数够多就会一直以几何倍增长,为什么修改后的each值传递不进去呢
最佳答案
2021-8-6 16:02:36
def count(zifu):
    for i in set(zifu):
        print(f'{i}出现{zifu.count(i)}次')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-6 16:02:36 | 显示全部楼层    本楼为最佳答案   
def count(zifu):
    for i in set(zifu):
        print(f'{i}出现{zifu.count(i)}次')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 16:19:31 | 显示全部楼层
本帖最后由 灰晨 于 2021-8-6 16:21 编辑

if str1[each1]==str1[each1+1]:
            print(each1)
            each1=2+each1
            print(each1)
虽然,这里修改each1后,each1等于2
但是,第二次循环for each1 in range(long): ,又重新将each1赋值为1了

直接像楼上一样用count就能解决的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-6 23:18:17 | 显示全部楼层
灰晨 发表于 2021-8-6 16:19
if str1[each1]==str1[each1+1]:
            print(each1)
            each1=2+each1

就是想问一下 单纯用我的方法是无解的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-6 23:19:03 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2021-8-6 23:36:21 | 显示全部楼层

可以再问一下为什么这里要用set吗 目前还没有学到这个函数 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 09:44:28 | 显示全部楼层
小北要努力 发表于 2021-8-6 23:36
可以再问一下为什么这里要用set吗 目前还没有学到这个函数 谢谢

set是集合函数
一般用来去重保留唯一
后面会学到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 11:47:04 | 显示全部楼层

问一下大佬,这个print是什么用法,应该怎么去理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 12:08:41 | 显示全部楼层
拉普赛高 发表于 2021-8-7 11:47
问一下大佬,这个print是什么用法,应该怎么去理解

你是指这段代码吗
print(f'{i}出现{zifu.count(i)}次')

这不是print的用法

是f字符串 f-string ,是python3.6以后引入的格式化字符串方法

简单来说在字符串前面加个f,然后字符串中的{}内可以替换掉变量或者常量

name = 'Tom'
age = 18
tell = 123456789

s = f'name:{name}\nage:{age}\ntell:{tell}'

print(s)


https://docs.python.org/zh-cn/3/library/string.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 19:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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