如何捅破python编程的那层纸

如何捅破python编程的那层纸,第1张

一些朋友自学python过程中,发现书也能看懂,书上的玩具代码也能看懂,但为啥自己不能做习题,不能写代码解决问题,自己不能动手写代码?

原因是初学者没有学会计算思维、解决问题的方法、编程思路。

编程思路的养成需要一个过程的,在编码过程中思考,多动手敲代码。

有时候,想不明白的地方,有人稍微点破一下,那层纸就很容易破。

请看下面的例子。

编程思路一:

经常有人问,一个文本文件,要抽取多少行以后的文本。

相信记数循环,大家都看得懂,也会写。下面的代码就是利用记数循环来解决这个问题。

代码一:

一个几百M的文本文件,需要每隔1000行写到新的文件中。

不要小看了计数循环,用计数循环和判断语句就可以解决这个问题。

# coding:utf-8

"""

迪艾姆python远程视频培训

咨询:qq:1465376564

"""

with open('dist_1.txt','r') as f1 ,open('dist_new.txt','w') as f2:

i = 0

for line in f1:

i += 1

if i % 1000 == 0:

f2.write(line)

代码二:

请问一个日志文本文件有2000行,我要提取其中的100行到200行,怎么做?

你可以试试下面的方法。

别小看while计数循环,其实它可以用来干很多事。

#coding:utf-8

i = 0

file1 = open("test.txt","r")

file2 = open("out.txt","w")

while True:

line = file1.readline()

i += 1

if 100<=i and i<=200:

file2.write(line)

if i >200 :

break

if not line:

break

file1.close()

file2.close()

编程思路二:

#coding:utf-8

"""

本代码由迪艾姆公司黄老师所写,思路大家自己看代码。

抓了a,b,c,d4名犯罪嫌疑人.其中有一名是小偷,审讯中:

a说我不是小偷

b说c是小偷

c说小偷肯定是d

d说c胡说!

其中有3个人说的是实话,一个人说的是假话,编程推断谁是小偷。

(用穷举法和逻辑表达式)

"""

for thief in ['a','b','c','d']:

sum = (thief != 'a') + (thief == 'c') + (thief == 'd') + (thief !='d')

if sum == 3:

print "小偷是:%s " % thief

总结: 学习python编程,先学会过程式编程,再过度到面向对象的编程范式。 学会函数抽象、类抽象。一步一步养成计算思维、学会解决问题的方法、编程思路。 这个需要一个过程,也不要 *** 之过急。 看一下这些视频,可能对你有些帮助。

#!/usr/local/bin/python3    

    

import random    

from spyword import spyword    

    

num=int(input('请输入玩家数(至少为3)\n'))    

#卧底玩家    

spy=random.randint(0,num-1)    

    

#随机产生词语 定义词语列表 计算玩家票数的列表 统计死亡玩家的列表    

list_rand=spyword.popitem()    

word=[]    

cnt=[]    

dead=[]    

    

#给三个列表赋值    

for i in range(0,num):    

    word.append('a')    

    cnt.append(0)    

    dead.append(num+2)    

    

#给玩家词语 其中print是调试用的,sanmeVote是出现相同票数的标志,spyWin是卧底胜利的判决条件    

for i in range(0,num):    

    if (i==spy):    

        word[i]=str(list_rand[1])    

    else:    

        word[i]=str(list_rand[0])    

    print (word[i])    

sameVote=0    

spyWin=0    

#游戏开始    

for x in range(0,num-1):    

    for k in range(0,num):    

        if ((k not in dead) & (sameVote==0)):    

            print ('%d号玩家发言时间'%(k+1))    

    print ('发言环节结束')    

            

    #将各位玩家的票数置0    

    for j in range(0,num):    

        if (j not in dead):    

            cnt[j]=0    

        

    for j in range(0,num):    

        if (j not in dead):    

            vote2p=int(input('请%d号玩家投票'%(j+1)))-1    

            cnt[vote2p]=cnt[vote2p]+1    

            sameVote=0    

    

    for y in range(0,num):    

        if((cnt[y]==max(cnt)) & (y!=cnt.index(max(cnt)))):    

            print ('不止一位玩家得到最高票数,请这些玩家重新发言')    

            sameVote=1    

        

    if (sameVote==0):    

        dead[x]=cnt.index(max(cnt))    

        if (dead[x]==spy):    

            print ('卧底得到最多票数,游戏结束')    

            spyWin=1    

            break    

        print ('%d号玩家被冤死!'%(dead[x]+1))    

            

#游戏结束    

if(spyWin==0):    

    print ('只剩两名玩家,卧底胜利!')

spyword是自定义的卧底词字典,运行时把这个文件放在python的工作目录下,就可以让python程序调用该字典了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12138326.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存