本帖最后由 昨非 于 2020-11-30 00:21 编辑
水仙花问题,连带你问的那个,一共三种方法,大同小异for i in range(100,500):
a = (i //100)
b = ((i - 100*a)//10)
c = (i % 10)
s = a**3+b**3+c**3
if i == s:
print(i)
for i in range(1,10):
for j in range(0,9):
for k in range(0,9):
if i*100+j*10+k==i**3+j**3+k**3:
print(i*100+j*10+k)
for i in range(100, 1000):#遍历100到1000所有整数
sum = 0 #定义求和变量,初值为0
temp = i
while temp:#当i得值不等于0时,一直循环
sum = sum + (temp%10) ** 3 #temp取余10得到最后一位的数值,sum等于temp各位数之和
temp //= 10 # 注意这里要使用地板除 这里得到temp的前两位
if sum == i: #判断i是否等于其各位数的三次方之和
print(i)#打印满足情况的i得值
for i in range(100, 1000):
sum = 0
temp = i
while temp: #temp不为0时,进入循环
sum = sum + (temp%10) ** 3 #3次方在求和,和题目要求一样
#第一次temp%10(取余10),得到temp的 的个位数(也就是最后一位)
# 第二次得到temp的十位数(也就是当前的最后一位)
# 第三次得到temp的百位(也就是最后一位)
temp //= 10 #地板除以10,得到temp的前两位(去掉最后一位)
if sum == i:
print(i)
字串查找问题:def findStr(desStr, subStr):
count = 0
length = len(desStr)
if subStr not in desStr:
print('在目标字符串中未找到字符串!')
else: #这里的条件是字串在目标字符串里
for each1 in range(length-1): #length为目标字符串的长度,减一刚好是目标串的索引范围
#而for...in range(n)的语法中,...只是一个循环变量名字而已,叫i,j,k,each,什么都可以,它的取值是range函数规定的,0到n-1;
# each1就是下面要用到的字符串索引值
if desStr[each1] == subStr[0]: #这里只不过是比较目标串的各个字符有没有和字串第一个字符相同的,如果相同,进入下一层判断
if desStr[each1+1] == subStr[1]: #与字串第一个字符匹配后,移到后一位字符进行判断,索引值加一就是后移一位,没什么难理解的
count += 1 #前两个条件都满足了,计数出现次数加一
print('子字符串在目标字符串中共出现 %d 次' % count)
不理解还可以参考这个
<font color="red">[已解决]</font>零基础入门学习Python第18讲课后作业动动手第2题
https://fishc.com.cn/thread-185220-1-1.html
(出处: 鱼C论坛)
|