关于for循环的问题
程序目的是查找输入的字符串的重复次数为了防止重复查找,所以选择判断之后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==str1:
i+=1
print('出现',str1,'%d次'% i)
if str1==str1:
print(each1)
each1=2+each1
print(each1)
return
这是输入和运行的结果:
count('!!!!')
0
出现 ! 4次
0
2
1
出现 ! 8次
1
3
2
出现 ! 12次
2
4
3
出现 ! 16次
如果我输入的位数够多就会一直以几何倍增长,为什么修改后的each值传递不进去呢 def count(zifu):
for i in set(zifu):
print(f'{i}出现{zifu.count(i)}次')
本帖最后由 灰晨 于 2021-8-6 16:21 编辑
if str1==str1:
print(each1)
each1=2+each1
print(each1)
虽然,这里修改each1后,each1等于2
但是,第二次循环for each1 in range(long): ,又重新将each1赋值为1了
直接像楼上一样用count就能解决的问题 灰晨 发表于 2021-8-6 16:19
if str1==str1:
print(each1)
each1=2+each1
就是想问一下 单纯用我的方法是无解的吗 逃兵 发表于 2021-8-6 16:02
好的 谢谢大佬 逃兵 发表于 2021-8-6 16:02
可以再问一下为什么这里要用set吗 目前还没有学到这个函数 谢谢 小北要努力 发表于 2021-8-6 23:36
可以再问一下为什么这里要用set吗 目前还没有学到这个函数 谢谢
set是集合函数
一般用来去重保留唯一
后面会学到 逃兵 发表于 2021-8-6 16:02
问一下大佬,这个print是什么用法,应该怎么去理解 拉普赛高 发表于 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
页:
[1]