内容正文:
少儿编程课
1
大大数字
字符串的遍历
for x in 字符串:
…
字符串[下标]
字符串1 + 字符串2
字符串 * 数字
print('hello'+'world') #helloworld
print('xyz'*3) #xyzxyzxyz
for x in 'python':
print(x) #p y t h o n
s='python'
print(s[0]) #p
print(s[1]) #y
print(s[-1]) #n
3
字符串的切片
切片:
[起点:终点:步长]
s='python'
print(s[1:3:1])
print(s[1:3])
print(s[:3:])
print(s[1::])
print(s[::-1])
4
大数字计算
已知数字N为2008个2008组成的数字,N除以13的余数是?
1、利用字符串乘法的特性,构建一个有2008个2008的字符串。
2、利用数字和字符串转换的技巧,将字符串转为数字,然后对数字13求余。
大数字计算
s='2008'*2008
n=int(s)
print(n%13)
大数字计算
多位数200920092009…..2009736中有n个2009(n至少为4个),能被11整除,n
的最小取值是多少?
思路分析
利用字符串乘法的特性,构建字符串。
因为不确定有多少个2009(即无法确定n的值为多少),所以要利用while循环,不断改变n的值,利用字符串乘法与736拼接构成多位字符串。
将字符串转为数字后看是否可以整除11,如果可以循环终止,如果不可以继续测试下一个数字。
大数字计算
n=4
while True:
s='2009'*n+'736'
print(s)
if int(s)%11==0:
break
else:
n+=1
print(n)
break:终止循环
大数字计算
1,2,3,4…9,10,11…自然数组成一个数字1234567891011…
则这个数字从第1位到第207位位数之和是多少?
10
思路分析
数字从1开始构成一个大数字12345678910…..,显然这里不能用数学计算,而是应该将数字转为字符串后进行字符串的拼接,构成这样一个数字。
题目要求对前207位求和,并不需要一直拼接到数字207。位数够了就立即停止拼接。因此在不知道准确拼接到哪个数字停止时,无法使用for循环,应该使用while循环,并设定为一直循环。
遍历拼接好的207位字符串,将字符串转为数字并求和。
11
找数字
想一想代码有可以改进的地方吗?
s=''
x=1
while True:
s+=str(x) #从1开始拼接,构成一个长度为207的大字符串
if len(s)==207: #长度为207时,终止
break
else:
x+=1
sum=0
for x in s: #遍历207个字,转为数后累加求和
sum+=int(x)
print(sum)
12
步长
步长原意是指走路或跑步时两脚相邻着地点之间的距离。
步长在程序设计中就是数值在每次运算时的改变量(有可能增加或减少)。
例如,我们经常写的for x in range(10),x的变化是规律是每次循环时都增加1,这里的1就是改变量,也就是该循环的步长值为1。
我们也可以改变步长值,也就是改变每次循环时循环变量的改变量。
range(起始值,终止值,步长值)
例如:for x in range(1,10,3),则x的变化是规律是每次循环时都增加3,x的取值依次为1,4,7
步长值还可以应用在切片上,'python' [::3]得到的结果是ph。
找数字
从1开始到103的连续奇数依次写成一个多位数,N=1357911…
数A共有多少位?除以9的余数是?
1、可以从1开始逐个数字遍历到103,找到里面的奇数。
也可以从1开始到103,将步长设置为2,这样得到的每一个都是奇数。
2、将循环变量从数字转为字符串,进行字符串的拼接。
3、拼接完成后的字符串通过长度就可以计算出位数。
4、转为数字后对9求余就可以得到余数。
思路分析
找数字
s=''
for x in range(1,104,2):
n=str(x)
s+=n
print(len(s))
print(int(s)%9)
$$