当前位置:   article > 正文

【Python】像计算机科学家一样思考Python_笔记(上)_文字游戏 读取单词列表

文字游戏 读取单词列表

目录 

(一)程序之道

(二)变量、表达式和语句

(三)函数

例:turtle模块,画正方形

有返回值的函数

重构

(四)函数接口

文档字符串

(五)条件和递归

pass

嵌套条件

递归recursion

键盘输入

(八)字符串序列(sequence)

遍历字符串

字符串不可变

例:计算字母a在字符串中出现的次数(计数器counter)

(九)例:文字游戏

(十)列表

列表遍历

遍历列表,读取元素

遍历列表并更新元素

列表方法(如append、extend、sort)

例:列表元素相加(可直接sum(l) )

例:首字母大写(俩列表交互)

例:只保留大写元素

删除元素(pop、del、remove)

列表和字符串(list、split、join)

对象和值

(十一)字典

可哈希/不可哈希

(十二)元组

内置函数enumerate()

(十二)元组之内置函数zip()

(十三)数据结构的选择

random()方法

(十四)文件

os模块

数据库

pickle模块

自定义模块


(一)程序之道

(二)变量、表达式和语句

(三)函数

函数之无返回值函数
函数之嵌套使用
函数之注意事项
函数之函数对象
函数之命名规则.png
模块.png
定义 调用call 函数.png
调试之runtime error和semantic error
调试之syntax error
解释器
关键字

例:turtle模块,画正方形

  • 准备工作
  1. import turtle #导入模块
  2. bob=turtle.Turtle() #使用turtle模块.Turtle函数
  3. #Turtle函数会创建一个Turtle对象,我们将其赋给变量bob
  4. print(bob)#<turtle.Turtle object at 0x00000240C054DB00>
  5. #即变量bob指向一个类型为Turtle的对象,这个类型由turtle模块定义
  • 法一:简单重复
    1. #创建一个Turtle对象,可以调用方法以进行更多操作(方法与函数类似,但语法略有不同)
    2. #(Turtle函数会创建一个Turtle对象,我们将其赋给变量bob)
    3. bob.fd(100)#让海龟往前走100个像素
    4. bob.lt(90)#左转90度
    5. bob.fd(100)#让海龟往前走100个像素
    6. bob.lt(90)#左转90度
    7. bob.fd(100)#让海龟往前走100个像素
    8. bob.lt(90)#左转90度
    9. bob.fd(100)#让海龟往前走100个像素
    10. bob.lt(90)#左转90度
  • 法二:借助for循环(loop)
  1. for i in range(4): #i=0,1,2,3
  2. bob.fd(100)
  3. bob.lt(90)
  • 画正方形:封装成函数
  1. #完整代码
  2. import turtle #导入模块
  3. bob=turtle.Turtle() #使用turtle模块.Turtle函数
  4. #Turtle函数会创建一个Turtle对象,我们将其赋给变量bob
  5. print(bob)#<turtle.Turtle object at 0x00000240C054DB00>
  6. #即变量bob指向一个类型为Turtle的对象,这个类型由turtle模块定义
  7. def square(t):
  8. for i in range(4):
  9. t.fd(100)
  10. t.lt(90)
  11. #square(bob)
  12. bobb=turtle.Turtle()
  13. square(bobb)
  • 画多边形
  1. def polygon(t,n,length):
  2. angle=360/n
  3. for i in range(n):
  4. t.fd(length)
  5. t.lt(angle)
  6. bobb=turtle.Turtle()
  7. polygon(bobb,6,70)
  8. polygon(bobb,n=6,length=70)#可加 关键字实参
  • 画多边形→近似圆
  1. import math,turtle
  2. bob=turtle.Turtle() #注意有括号!Turtle函数
  3. def polygon(t,n,length):
  4. angle=360/n
  5. for i in range(n):
  6. t.fd(length)
  7. t.lt(angle)
  8. #用50边形近似圆
  9. def circle(t,r):
  10. circumference=2*math.pi*r#周长
  11. n=50
  12. length=circumference/n#每条小边的长度
  13. polygon(bob,n,length)#调用上面的画多边形函数
  14. circle(bob,500)
函数接口
  1. #修改一行
  2. n=int(circumference/3)+1 #线段数量约为周长的1/3

有返回值的函数

调用一个有返回值的函数会生成一个返回值,我们通常将其赋值给某个变量或作为表达式的一部分。无返回值的函数,更准确地说,它们的返回值是None。

重构

(四)函数接口

接口就像是函数和调用者之间的合同,调用者同意提供合适的参数,函数同意完成相应的工作。

文档字符串

(五)条件和递归

pass

嵌套条件

递归recursion

调用正在执行的函数本身的过程

  1. #递归recursion:自己调用自己的函数
  2. def countdown(n):
  3. if n<=0:
  4. print('blastoff')
  5. else:
  6. print(n)
  7. countdown(n-1)
  8. countdown(3) #>>>3 2 1 blastoff

键盘输入

  1. text=input('随便输:')
  2. num=eval(input('随便输数值:'))
  3. print(type(num))#<class 'int'>
  4. print(text)
  5. print(num)

(八)字符串序列(sequence)

遍历字符串

  1. fruit='banana'
  2. #while循环,遍历字符串
  3. index=0
  4. while index < len(fruit):
  5. letter=fruit[index]
  6. print(letter)
  7. index=index+1
  8. #for循环,遍历字符串
  9. for letter in fruit:
  10. print(letter)

字符串不可变

不能直接用过字符串索引修改元素值。只能重新创建呢。列表可变

例:计算字母a在字符串中出现的次数(计数器counter)

  1. word='banana'
  2. count=0
  3. for letter in word:
  4. if letter =='a':
  5. count=count+1
  6. print(count) #>>>3

(九)例:文字游戏

  • 读文本
  1. #1、读取单词列表
  2. fin=open('E:\新桌面\Python\截图\words.txt')
  3. fin.readline()#读一行
  4. #遍历读每行
  5. for line in fin:
  6. word=line.strip()
  7. print(word)
  • 遍历找e,找到就False
  1. fin=open('E:\新桌面\Python\截图\words.txt')
  2. #遍历找'e',找到就False
  3. def has_no_e(word):
  4. for letter in word:
  5. if letter=='e':
  6. return False
  7. return True
  • 函数:判断是否按字母顺序 is_abecedarian()

法一:for循环

  1. word='apple'
  2. #是否按字母顺序
  3. def is_abecedarian(word):
  4. previous=word[0]
  5. for c in word:
  6. if c < previous: #字符/串可以比大小,如'c'>'a','bc'>'b'
  7. return False
  8. previous=c
  9. return True
  10. print(is_abecedarian(word)) #注:print输出才能看到结果(False)

法二:递归

  1. word='apple'
  2. #是否按字母顺序
  3. def is_abecedarian(word):
  4. if len(word) <=1:
  5. return True
  6. if word[0] > word[1]:
  7. return False
  8. return is_abecedarian(word[1:])
  9. print(is_abecedarian(word))

法三:while循环

  1. word='apple'
  2. #是否按字母顺序
  3. def is_abecedarian(word):
  4. i=0
  5. while i <len(word)-1:
  6. if word[i+1]<word[i]:
  7. return False
  8. i=i+1
  9. return True
  10. print(is_abecedarian(word))
  • 函数:判断是否为回文 is_palindrome
  1. #判断是否为回文
  2. word='250052'
  3. def is_palindrome(word):
  4. i=0
  5. j=len(word)-1
  6. while i<j:
  7. if word[i]!=word[j]: #别忘冒号!!!
  8. return False
  9. i=i+1
  10. j=j-1
  11. return True
  12. print(is_palindrome(word))

(十)列表

列表遍历

遍历列表,读取元素

  1. #for循环,遍历列表(与遍历字符串类似)
  2. #读取列表元素
  3. name=['ywp','wtx','baby']
  4. for n in name:
  5. print(n)
  6. num=[1,2,3,0]

遍历列表并更新元素

  1. num=[1,2,3,0]
  2. #写入/更新列表元素,结合下标访问、内置函数range()和len()
  3. for i in range(len(num)):
  4. num[i]=num[i]*2
  5. print(num[i])

列表方法(如append、extend、sort)

  1. #append添加一个新元素到 列表末端
  2. t=['a','b','c']
  3. t.append('d')
  4. print(t) #['a', 'b', 'c', 'd']
  5. #extend添加所有元素到 列表末端
  6. t2=['aa','bb','cc']
  7. t.extend(t2)
  8. print(t) #['a', 'b', 'c', 'd', 'aa', 'bb', 'cc']
  9. #sort 将列表元素从小到大排序
  10. t3=['d','c','a']
  11. t3.sort()
  12. print(t3) #['a', 'c', 'd']
  13. print(t3.sort()) #None
print(l.sort)结果为None

例:列表元素相加(可直接sum(l) )

  1. num=[1,2,3]
  2. def add_all(t):
  3. total=0
  4. for x in t:
  5. total+=x
  6. return total
  7. print(add_all(num))
  8. print(sum(num))

例:首字母大写(俩列表交互)

  1. t=['app','pig','fine']
  2. #首字母大写
  3. def capitalize_all(t):
  4. res=[]
  5. for s in t:
  6. res.append(s.capitalize())
  7. return res
  8. print(capitalize_all(t))#['App', 'Pig', 'Fine']

例:只保留大写元素

  1. t=['app','PIG','Fine']
  2. #只保留大写元素
  3. def only_upper(t):
  4. res=[]
  5. for s in t:
  6. if s.isupper():
  7. res.append(s)
  8. return res
  9. print(only_upper(t))#['PIG']

删除元素(pop、del、remove)

  1. #pop
  2. t=['app','PIG','Fine']
  3. tp=t.pop(1)#返回被删除的元素
  4. print(tp)#PIG
  5. print(t)#查看原列表 ['app', 'Fine']
  6. #del
  7. tt=['app','PIG','Fine']
  8. del tt[1]
  9. print(tt) #['app', 'Fine']
  10. del tt[:1]
  11. print(tt)#['Fine']
  12. #remove(若已知要删除的值,但不知下标)
  13. ttt=['app','PIG','Fine']
  14. ttt.remove('app')
  15. print(ttt)#['PIG', 'Fine']

列表和字符串(list、split、join)

  1. #list直接将字符串分成单个字符
  2. t='love you'
  3. t=list(t)
  4. print(t)#['l', 'o', 'v', 'e', ' ', 'y', 'o', 'u']
  5. #split按某符号(默认空格)分隔字符串
  6. tt='love you'
  7. ts=tt.split()
  8. print(ts)#['love', 'you']
  9. #join按某符号(默认空格)合并字符串,与split相反
  10. delimiter=' '
  11. #在某个分隔符上调用join方法,并传入一个列表作为参数
  12. tj=delimiter.join(ts)
  13. print(tj)#love you

对象和值

(十一)字典

可哈希/不可哈希

(十二)元组

内置函数enumerate()

  1. for index,element in enumerate('abc'):
  2. print(index,element)
  3. '''
  4. 0 a
  5. 1 b
  6. 2 c
  7. '''

(十二)元组之内置函数zip()

  1. a = [1,2,3]
  2. b = ['a','b','c']
  3. zipped = zip(a,b)
  4. print(zipped)#<zip object at 0x000002476F680488>
  5. print(list(zipped))#[(1, 'a'), (2, 'b'), (3, 'c')]

(十三)数据结构的选择

random()方法

  1. import random
  2. for i in range(3):
  3. x=random.random()
  4. print(x)
  5. '''
  6. 0.5859316143057813
  7. 0.7867295553359852
  8. 0.07251354296290347
  9. '''

  1. import random
  2. random.randint(5,10)
  3. print(random.randint(5,10))#10
  4. print(random.randint(5,10))#9
  5. print(random.randint(5,10))#5

(十四)文件

os模块

os模块提供了操作文件和目录的函数,os.getcwd返回当前目录的名称

  1. import os
  2. print(os.getcwd()) #如D:\Anaconda\Lib\site-packages\lda2vec

数据库

pickle模块

自定义模块

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/167244
推荐阅读
相关标签
  

闽ICP备14008679号