《Python语言程序设计基础》嵩天著-第7章学习

虽然标题是第七章,但是上课内容和课本第七章内容却不大相同,标题用这个名字好像挂羊头卖狗肉诶~
(。・∀・)ノ゙管它那么多了,直接贴上来代码

homework 1 编写脚本,运行程序,绘制自己喜欢的图形

脚本就不贴了,大家自己思考叭~
其实很简陋的滴,先构思好自己的图和步骤,会好很多


# homework 1 编写脚本,运行程序,绘制自己喜欢的图形
import turtle as t
t.setup(800,800,0,0)
t.speed(0)
t.pencolor("grey")
t.pensize(3)
t.up()
t.goto(0,-280)
t.down()
t.circle(280)
t.left(90)
# 读取数据
datas = []
fo = open("jiaoben2.txt","r",encoding="utf-8")
for i in fo:
    i = i.replace("\n","") #把每一行最后一个换行符/回车,换成空
    datas.append(list(map(eval,i.split(","))))
    # 把每一行以逗号为分割读取
fo.close()
#自动绘制
r = 280
for i in range(len(datas)):
    t.pencolor(datas[i][3],datas[i][4],datas[i][5])
    t.fd(r*datas[i][0])
    if datas[i][1] == 1:
        t.right(datas[i][2])
    else:
        t.left(datas[i][2])
t.done()

效果如图了

**wordcloud 库的介绍课本上好像没有,贴上一些需要用的函数和操作方法,[[安装请参考jieba库的安装]]

wordcloud 函数及操作方法

import worldcloud as w
c = w.WordCloud() #生成词云对象,对象有可选参数,注意大小写
c.generate("www") # 把文本加载到对象中
c.to_file("pywccloud.png") # 输出图像文件即png/jpg的名字和类型
# 中文需要分词,并以空格为分隔符
""" 
wordcloud.Wordcloud() 中可选参数
width : 图片宽度,默认为400
height : 图片长度.默认为200
font_path : 字体类型
min_font_size : 词云中字体的最小字号,默认4号
max_font_size : 词云中的最大字号,根据高度自动调节
font_step : 词云中字体字号的步进间隔,默认为1
max_words : 词云显示的最大单词数量,默认200
stopwords : 不显示的单词{列表}

font_path : 指定字体文件的路径,默认为none  
ep: a = w.Wordcloud(font_path="")
font_path = r"\System\Library\Font\ArialUnicode.ttf" 在mac不需要指定路径
在 window 中不需要指定路径

mask : 词云形状,默认长方形,需要引用imread()
# 友情提醒:imageio是第三方库需安装!
from imageio import imread 
mk= imread("图片名.类型")
mask = mask

background_color :指定词云图片背景颜色,默认黑色
"""

homework 2 选取一篇文章,绘制词云

词云绘制还是很有趣的


import jieba as j
import wordcloud as w
from imageio import imread
mask = imread("公主.jpg") #引用背景图
f = open("三体全集.txt","r",encoding = "utf-16")
# UTF8/UTF16是国际编码,又称万国码。
# UTF8 是一套以8位为一个编码单位的可变长编码,而UTF16就是16位。
t = f.read() #将打开后的阅读文件赋值给t
f.close()
ls = j.lcut(t) # 对t进行分词,返回一个列表
excludes = {"一个","没有","现在","已经","什么",\
            "知道","这个","看到","可能","可以",\
            "就是","这样","不是","那个","这种",\
           "如果","只是","出现","两个","这里"} #排除无用词
txt = " ".join(ls) # 以空格为分隔符,将列表ls所有元素组合成一个长字符串
w = w.WordCloud(font_path = "STSONG.TTF",mask = mask,\
                width = 1000,height = 700,\
                background_color = "white",\
               stopwords = excludes)
#  背景色建议设置成和mask引用的形状图片的背景色一样,建议挑选颜色分明的图片
#  字体可以在C盘中搜索Fonts找到有什么字体,在右键属性复制粘贴过来即可
# 中文的话,字体务必要设置否则就显示不了词云了,只能显示框框
w.generate(txt)
w.to_file("三体词云2.png")

效果如图所示

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 当然,我很乐意为您提供关于Python语言程序设计基础的信息。以下是第七章的答案: 第七章:循环结构 1. 什么是循环结构? 循环结构是指在程序中,多次执行相同或类似的一组指令的结构。在Python中,循环结构主要有两种:for循环和while循环。 2. for循环和while循环的区别是什么? for循环用于遍历一个序列(如列表、元组、字符串等)或其他可迭代对象,每次迭代会取出序列中的一个元素进行处理。while循环则根据条件表达式的真假情况来反复执行代码块,直到条件不再满足为止。 3. for循环的语法是什么? for循环的语法如下: ``` for 变量 in 序列: 代码块 ``` 其中,变量为循环变量,序列为被遍历的对象。每次循环时,变量会被赋值为序列中的一个元素,并执行代码块。 4. while循环的语法是什么? while循环的语法如下: ``` while 条件表达式: 代码块 ``` 其中,条件表达式为一个布尔表达式,每次循环时都会被重新计算,只有在表达式为True时才会执行代码块。 5. 如何使用break和continue控制循环流程? break语句可以在循环内部终止循环,而continue语句可以跳过本次循环,继续执行下一次循环。它们的使用方法如下: ``` # 使用break语句终止循环 for 变量 in 序列: if 条件表达式: break # 其他代码块 # 使用continue语句跳过本次循环 for 变量 in 序列: if 条件表达式: continue # 其他代码块 ``` 6. 如何使用else语句与循环配合使用? 在循环结构中,else语句可以与for和while循环配合使用。它的作用是在循环结束后执行一段代码块,但只有在循环没有被break语句终止时才会执行。具体使用方法如下: ``` # 使用for循环与else语句配合使用 for 变量 in 序列: # 循环代码块 else: # 在循环正常结束后执行的代码块 # 使用while循环与else语句配合使用 while 条件表达式: # 循环代码块 else: # 在循环正常结束后执行的代码块 ``` 希望这些抱歉,您的问题没有完整提出来。请重新提交完整的问题,我将尽力回答。 ### 回答2: 第七章主要讲述了函数的知识。函数是一段可以反复调用的代码块,可以完成特定的功能。函数的使用可以提高代码的复用性和开发效率。 第一题:函数定义语法 函数定义语法如下: ```python def function_name(parameters): """函数文档字符串""" function_body return [expression] ``` 其中,函数名是由字母、数字和下划线组成的标识符。参数可以是位置参数、默认参数、关键字参数和可变参数。函数文档字符串是用来描述函数功能的字符串,可以通过函数的__doc__属性来获取。函数体中包含了具体的实现代码,可以通过return语句返回结果。 第二题:调用函数 调用函数的语法如下: ```python function_name(arguments) ``` 其中,函数名是需要调用的函数名,arguments是函数的参数。函数的返回值可以使用变量来存储,也可以直接使用。 第三题:函数的参数类型 函数的参数类型包括位置参数、默认参数、关键字参数和可变参数。 位置参数:按照参数顺序依次传递参数,调用函数时需要按照函数定义时的参数顺序传递参数。 默认参数:给参数设置默认值,调用函数时可以不传递这些参数,使用默认值。 关键字参数:根据参数名称来传递参数,调用函数时可以不按照函数定义时的参数顺序传递参数,而是按照参数名来传递。 可变参数:传递可变数量的参数,可以使用*args表示不带参数名的可变参数,使用**kwargs表示带参数名的可变参数。 第四题:函数定义中可变参数的用法 函数定义中可变参数的用法是通过*args和**kwargs来定义不定数量的参数。其中,*args表示不带参数名的可变参数,可以使用for循环遍历获取参数值;**kwargs表示带参数名的可变参数,可以使用字典的方式获取参数值。 ```python def func(*args, **kwargs): for i in args: print(i) for key, value in kwargs.items(): print(key, value) ``` 第五题:函数返回值 函数可以使用return语句返回结果,返回值可以是单个值,也可以是列表、元组和字典等数据结构。如果函数没有return语句,则默认返回None。 ```python def add(a, b): return a + b result = add(1, 2) print(result) # 3 ``` 第六题:递归函数的特点 递归函数是指在函数内部调用自身的函数。递归函数的特点如下: 1. 递归函数必须有一个结束条件,否则会无限调用下去导致栈溢出。 2. 递归函数的效率不如循环,因为每次调用函数都需要保存函数的信息,占用内存。 3. 递归函数可以处理一些复杂的问题,尤其是与树、图相关的问题,其代码可读性和简洁性都很好。 第七题:Python中的Lambda表达式 Lambda表达式是一种匿名函数,可以在需要函数对象的任何地方使用,它的语法如下: ```python lambda arguments: expression ``` 其中,arguments为函数的参数,expression为函数的返回结果。Lambda表达式的执行结果为一个函数对象,可以通过调用该函数对象来获取结果。 ```python f = lambda x, y: x + y result = f(1, 2) print(result) # 3 ``` Lambda表达式通常用于函数式编程中的参数传递,可以让我们更方便地定义简单的函数。 ### 回答3: 第七章主要讲解了函数的概念、定义及其常见应用。本章主要包括以下几个方面的内容: 1、函数的定义和调用:函数是一段代码的封装,可以通过函数名来调用这段代码。在Python中,定义一个函数需要用到关键字“def”,然后是函数名和参数列表,最后是函数体。完成函数的定义后,可以通过函数名来调用这个函数。 2、函数的参数传递:Python中函数的参数传递有两种方式,分别是值传递和引用传递。在值传递的情况下,函数内对参数的修改对外界是不可见的;在引用传递的情况下,函数内对参数的修改对外界也是可见的。 3、函数的返回值:函数可以通过return语句来返回一个值,并且可以在调用函数的地方把这个返回值赋给一个变量。如果函数没有显式地指定返回值,则默认返回None。 4、变量的作用域:Python中的变量作用域主要有全局作用域和局部作用域。如果在函数内部定义了一个变量,则它只在函数内部有效,在函数外部不能访问。而全局变量则可以在函数内部和外部都可以访问。 5、内置函数:Python内置了很多函数,它们可以直接使用。常见的内置函数有print、input、len、range等。 除此之外,本章还介绍了常见的高阶函数,包括map、reduce、filter和lambda函数等。这些函数在Python中被广泛应用,在数据处理、函数式编程等方面发挥了重要作用。 此外,在本章的课后习题中,还有一些实践性较强的编程题目,可以帮助读者进一步巩固所学知识。通过掌握本章的内容,读者可以更加深入地理解函数的概念和应用,为以后的Python编程奠定扎实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值