加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

王爱胜老师讲座案例程序学习--辗转相除-水仙花数-推荐书单-(读写文本文件)

(2022-03-31 17:30:15)
分类: 研究-学习
现在发现自己有越来越多需要学习的地方,但是学习效率不高。
本周一周二山东省有一次教育论坛活动,专家、名师分享了很多理论和上课的设计,不巧的是中途被耽搁了没听成,这两天准备听回放的但一直还没有开始,先冒冒汗。
下载了王爱胜老师的讲座课件,里面涉及了很多的案例。这些精巧的案例应用到课堂中一定非常有吸引力。细看这些案例程序,有些自己一看就明白怎么回事,有些直接看不懂(比如那个记背单词的程序),还有的自认为自己明白但是独自做发现还有不少问题。。。
====================
1、辗转相除
本来我觉得这个没问题的,被除数、除数、余数,每一轮的循环当余数大于0时,用除数替代被除数,余数替代除数,再进行取余计算,直至余数为0。最后一次的除数就是最大公约数。
被除数 除数   余数
77 44 33
44 33 11
33 11 0
程序如下:(前几行确保非零数,确保大数在前)
a=0
b=0
while a==0 or b==0:
    a=int(input("a="))
    b=int(input("b="))
if a    a,b=b,a

'''
while a%b >0:
    a=b
    b=a%b
print("最大公约数:",b)  #不能形成多次循环,有错误
'''
n=a%b
while n>0:
    a=b
    b=n
    n=a%b
print("最大公约数:",b)

2、水仙花数
#水仙花数
#要注意的是依次取i的每个数位上数值时,要首先将i赋值给新的变量s,这样最终i才能和立方和的值进行比较

sxh=[]
for i in range(100,1000):
    a=0
    s=i
    while s>0:
        x=s
        a=a+x*x*x
        s=s//10
    if i==a:
        sxh.append(i)
print(sxh)

#----------------------
for i in range(100,1000):
    s=i
    a=0
    while s>0:
        x=s
        a=a+x*x*x
        s=s//10
    if i==a:
        print(i)

#------方法二--------------
n=input( "请输入一个三位数:")
s=int(n[0])**3+int(n[1])**3+int(n[2])**3
if s==int(n):
    print(int(n),"是水仙花数")
else:
    print(int(n),"不是水仙花数")

#-------------------------
两种方法,两种思路。一个是数值计算,一个是字符操作+运算。

3、补充知识: split()
这是隔开不同数据(数值 or字符)的方法,默认是用空格。
x=input().split()
y=[int(i) for i in x]
print(y)

4、《推荐书单》项目
如果说前面都看作是编程技术类的知识,这一个则兼具教学设计的技术和艺术。
技术实验一:输入三本书名
(使用方法:空列表,append(),重复三次)
book=[]
x=input("请输入书名:")
book.append(x)
x=input("请输入书名:")
book.append(x)
x=input("请输入书名:")
book.append(x)
print("推荐的书名有:",book)
若重复次数更多,则可以使用for循环语句。如添加10本,添加20本等。
但对于不知道数目的推荐图书,如何实现你?--------while循环。
#-------------------------
技术实验二:输入任意数目的图书
book=[]
x=""
i=0
while x!="0":
    #x=input("请输入等",i+1,"本书的书名:")   #input内必须用+号连接
    x=input("请输入第"+str(i+1)+"本书的书名(按0退出):")
    if x!="0":
        book.append(x)
        i+=1
print("共输入",i,"本书,书名分别是:",book)
## if x!="0": 这里若写成if x!=0: ,程序在执行时也能够结束循环,但是却会把0记录在列表中。不知如何解释。
#-------------------------
技术实验三:
生成列表的同时将内容同步记录至文本文件。

book=[]
x=""
i=0
fw=open("1.txt","w")
while x!="0":
    #x=input("请输入等",i+1,"本书的书名:")   #input内必须用+号连接
    x=input("请输入第"+str(i+1)+"本书的书名(按0退出):")
    if x!="0":
        book.append(x)
        i+=1
fw.write(x+'\n')
fw.write("推荐的本数:"+len(book)+"\n")
fw.close()
print("共输入",i,"本书,书名分别是:",book)
##容易出错(遗忘)之处:
fw=open('1.txt','w')    
fw.write(x+'\n')   
fw.write("共有的图书"+str(len(book))+'\n')  
fw.close()

5、读取文件 readln()
fw=open("1.txt",'r')
lines=fw.readlines()
book=[]
for i in lines:
    book.append(i.strip().split('\n'))
print(book)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有