20210602 start
5字回文——% //方法
break continue 循环跳出 原理or标志点是什么
梳理这几种高级数据类型的 循环、增加、删除等操作,用 表格方式 列清楚
再看看 打印符号怎么换行(print('i\n')?
案例——翻转数字
#翻转数字
# 地板除与取余法结合
#跟几位数没关系,都能reverse过来,其实本题并不是真正
#【回文】,其实是reverse的另类练习——将循环、地板除、取余结合
a=int(input('sth<5\n'))
while a!=0: #剩下个位数时,余数能输出,地板除=0
print(a%10,end="") # 空字符,""
a=a//10
#妈呀,想通了之后简直简单得要si
'''
# 1错误代码——一开始也可以,发现余数是0的时候就不对
while a%10!=0:
print(a%10,end="")
a=a//10
#错误2
while a//10!=0:
#最后个位数因为地板除得0,所以不能输出
print(a%10,end="")
a=a//10
'''
#就这么两行代码就完事了。。。
收获
想明白了之后——主要是 真正找到规律了之后——其实非常简单——几行代码
但是这里还是有一些陷阱的——就是条件判断这里,% // !=0 ,当举例中没有0时,好像没有问题,但其实是有问题的——找到真正对的方法
方法想明白后,其实几个字不是限制,而且也不是严格的【回文】,而是【reverse】——原来是我一直记错,人家就叫【翻转数字】
案例——打印素数
#打印素数
# 思路1— 如果一个数能被1、比自己小的数、自己整除,就是素数
20210602也不对,1不应该出现的——检查错误
end=int(input('some num\n'))
for i in range(1,end+1): # 注意终点是否包含
c=0 # 注意计数器何时清零,是用来判断一个数内部的,所以数字更新-计数器更新
for j in range(0,i): # 这段循环是基于——一个数能否被比自己小的数整除,若能 则非素数
if i%(j+1)==0:
c+=1
if c<3: # 接着j的循环,c大小来断定是否能被其他数字整除
print('{}\n'.format(i))
# print(i,'\n') 两种都可以,这种简洁些
# 思路2——自身和1不用算,被中间数能整除,就不是素数
# 20210602不对10以内素数,3579,9不应在其中——找错误点
a=int(input('sth\n'))
for i in range(1,a+1):
for j in range(2,i): # 1和本身都不需要判断了,减少预算
if i%j==0: # 能被整除 不符合 直接跳出
break
else:
print(i)
break # 很关键,没有能整除的,就是素数,打出,跳出循环
思路3——左右区间(天地)——没太明白原理——再琢磨
收获
print('{}\n'.format(i))——当需要打印i时,又想再换行时,目前通过{}.format 方法可以 i\n不行
print(i,'\n')——也可以 打出同样效果——这种可能更朴素一些,'\n'单纯就是换行,前面可以直接放要打印的参数
进一步明确了 i和j 各司其职,各自关系,比大学时候的内部嵌套明白了很多——现在想来当时还是没学透
20210602 end
收获
reverse——翻转数字怎么做——除了reverse函数偷懒做法,再底层些——// %地板除和取余相结合的方法
找到规律,想明白原理后,其实问题就变简单了,几行代码就解决了
以为解决了的问题,有时候不过是没有遇到全例,就是举例验证得有些特殊,导致误以为自己对了
注意00 数字中间这类例子,验证一些内容比较有用
每天的思路都不一样,很难想的事情过一天可能才思敏捷,以前明白的方法现在反而会想不出甚至不能理解——所以多看、开阔思路,多接触,多反思——这样能帮助自己学透,而不是碰巧就做对了,做会了
素数练习 训练了 循环嵌套,比大学时候理解得透彻了一些,但也许还不够透彻到底哈哈,而且几种方法相互验证结果不对,在哪里出现问题还需要进一步比较判断
今日目标
5字回文——% //方法
break continue 循环跳出 原理or标志点是什么——在练习中接触了一点,但是讲得比较模糊,定义不够清晰
梳理这几种高级数据类型的 循环、增加、删除等操作,用 表格方式 列清楚
再看看 打印符号怎么换行(print('i\n')?
接下来
打印素数,方法纠错,(天地)思路再理解
break continue 循环跳出——这回应该要看到了——清晰界定