趣学python编程答案_《趣学Python编程》习题总结

上周买了本书叫《趣学Python编程》(英文名:Python for kids),昨天看完后把书后面的题都做了下。由于第1、2章没有习题,第13章及之后都是描写实例的章节,因此这个总结性的文章中只包含了第3-12章的习题答案。

1.我的调试环境

我分别在我的Win7上和RedHat上调试过Python:

1)Win7的IDE可以从Python的官网上下载:

点击链接Python 3.4.2→Download Windows x86 MSI installer,可以下载到文件Python-3.4.2.msi

2)在RedHat上可以用yum命令直接安装python,需要用到turtle的地方,还需要用yum安装tkinter

另外,在RedHat上,turtle弹出的窗口会在运行后立即消失,因此我用time.sleep()函数来拖延一些时间方便观察结果

2.关于python脚本的运行

1)win7中下载后的IDLE(Python 3.4 GUI - 32 bit),通过File→New打开一个编辑器,输入代码后按F5可以运行

2)RedHat中直接输入命令“python xxx.py”就可以运行脚本xxx.py了

3.第三章:字符串、列表、元组和字典

1)用列表games列出爱好,用列表foods列出你喜欢的食物,把这两个列表连在一起并把结果命名为favorites并打印之

games = [‘game0‘, ‘game1‘, ‘game2‘, ‘game3‘]

foods = [‘food0‘, ‘food1‘, ‘food2‘, ‘food3‘]

favorites = games + foods

print(favorites)

2)有三座建筑,每座藏了25个忍者,有两个地道,每个藏了40个武士,问一共有多少人可以投入战斗?

building = 3

ninja_per_building = 25

tunnel = 2

samurai_per_tunnel = 40

total = building * ninja_per_building + tunnel * samurai_per_tunnel

print(total)

3)创建两个变量:一个姓和一个名,创建一个字符串,用占位符使用这两个变量打印你名字的信息

namemap = {

‘Tsybius‘ : ‘A‘,

‘Galatea‘ : ‘B‘,

‘Gaius‘ : ‘C‘,

‘Flavia‘ : ‘D‘ }

text = "Name %s %s"

print(text % (‘Tsybius‘, namemap[‘Tsybius‘]))

print(text % (‘Galatea‘, namemap[‘Galatea‘]))

print(text % (‘Gaius‘, namemap[‘Gaius‘]))

print(text % (‘Flavia‘, namemap[‘Flavia‘]))

4.第四章:用海龟画图

1)用turtle的Pen函数创建一个画布,然后画一个长方形

import time

import turtle

width = 40

height = 30

t = turtle.Pen()

t.forward(width)

t.left(90)

t.forward(height)

t.left(90)

t.forward(width)

t.left(90)

t.forward(height)

time.sleep(5)

2)用turtle的Pen函数创建一个画布,然后画一个三角形

import math

import time

import turtle

t = turtle.Pen()

#画一个等边三角形

t.forward(50)

t.left(120)

t.forward(50)

t.left(120)

t.forward(50)

t.left(120)

#把坐标换到另一个位置

t.up()

t.right(90)

t.forward(200)

t.left(90)

t.down()

#画一个内角分别为30°、30°、120°的三角形

t.forward(80 * math.sqrt(3))

t.left(150)

t.forward(80)

t.left(60)

t.forward(80)

t.left(150)

time.sleep(5)

3)画一个没有角的方格

import time

import turtle

t = turtle.Pen()

#下

t.forward(100)

t.up()

t.forward(50)

t.left(90)

t.forward(50)

t.down()

#右

t.forward(100)

t.up()

t.forward(50)

t.left(90)

t.forward(50)

t.down()

#上

t.forward(100)

t.up()

t.forward(50)

t.left(90)

t.forward(50)

t.down()

#左

t.forward(100)

time.sleep(5)

L3Byb3h5L2h0dHAvc3RhdGljLm9zY2hpbmEubmV0L3VwbG9hZHMvc3BhY2UvMjAxNC8xMjAxLzIyNTczMF92alREXzE0MjU3NjIucG5n.jpg

5.用if和else来提问

1)输入代码验证答案

原代码

money = 2000

if money > 1000:

print("I‘m rich!!")

else:

print("I‘m not rich")

print("But I might be later...")

这个代码是错误的,第五行和第六行的开头应该处于同一列,如下:

money = 2000

if money > 1000:

print("I‘m rich!!")

else:

print("I‘m not rich")

print("But I might be later...")

2)用if语句判断一个数是否少于100或大于500,如果这个条件为真则打印“不是太少就是太多”

#twinkies = 50

#twinkies = 300

twinkies = 550

if twinkies < 100 or twinkies > 500:

print("Too less or too more")

3)用一个if语句检查变量money是否在100到500之间,或是1000到5000之间

#money = 250

#money = 2500

money = 9999

if (money >= 100 and money <= 500) or (money >= 1000 and money <= 5000):

print("money in [100, 500] or in [1000, 5000]")

else:

print("Neither in [100, 500] nor in [1000, 5000]")

4)创建一组if语句,在变量ninja小于10时打印“我能打过”、小于30时打印“有点难”、小于50时打印“太多了”

ninjas = 5

#ninjas = 10

#ninjas = 30

if ninjas < 10:

print("I can beat them")

elif ninjas < 30:

print("It‘s a little difficult but I can deal with it")

elif ninjas < 50:

print("Too more ninjas there!")

6.循环

1)解释下面的代码会发生什么

for x in range(0, 20):

print(‘hello %s‘ % x)

if x < 9:

break

第一次循环时就因x<9触发了break,因此只能打印一次 hello 0

2)如果你的年龄是偶数,从2开始打印知道你的年龄为止,如果是你的年龄是奇数,从1开始

age = 23

start = 2

if age % 2 != 0:

start = 1

for x in range(start, age + 2, 2):

print(x)

3)创建一个列表,包含5种不同的三明治制作材料,创建一个循环,按顺序打印这个列表并写出顺序号

ingredients = [‘snails‘, ‘leeches‘, ‘gorilla belly-button lint‘,

‘caterpillar eyebrows‘, ‘centipede toes‘]

for x in range(0, 5):

print("%d %s" % (x + 1, ingredients[x]))

4)月球上你的体重是在地球上的16.5%,假设你每年增长1公斤,打印未来15年你的体重状况

weight = 9999 #体重

increment = 1 #体重年增量

coefficient = 0.165 #体重转换系数

for x in range(1, 16):

print("%d years later: %f" % (x, (weight + increment * x) * coefficient))

7.第七章:使用函数和模块来重用你的代码

1)用函数计算题目6.4中你的体重(参数为当前体重和体重的年增量)

def func_MoonWeight(weight, increment):

coefficient = 0.165 #体重转换系数

for x in range(1, 16):

print("%d years later: %f" % (x, (weight + increment * x) * coefficient))

func_MoonWeight(30, 0.25)

2)用函数计算题目6.4中你的体重(参数为当前体重、体重的年增量和统计的年数)

def func_MoonWeight(weight, increment, deadline):

coefficient = 0.165 #体重转换系数

for x in range(1, deadline + 1):

print("%d years later: %f" % (x, (weight + increment * x) * coefficient))

func_MoonWeight(90, 0.25, 5)

3)用函数计算6.4中你的体重,当前体重、体重的年增量和统计年数都由输入给出

import sys

def func_MoonWeight(weight, increment, deadline):

coefficient = 0.165 #体重转换系数

for x in range(1, deadline + 1):

print("%d years later: %f" % (x, (weight + increment * x) * coefficient))

#读取信息并调用函数

print("Please enter your current Earth weight")

para1 = int(sys.stdin.readline())

print("Please enter the amount your weight might increase each year")

para2 = float(sys.stdin.readline())

print("Please enter the number of years")

para3 = int(sys.stdin.readline())

func_MoonWeight(para1, para2, para3)

8.第八章:如何使用类和对象

1)给Giraffes类增加函数让长颈鹿左、右、前、后四只脚移动,通过dance函数打印一整套舞步

class Giraffes():

#函数:左脚向前

def funcLeftFootForward(self):

print(‘left foot forward‘)

#函数:右脚向前

def funcRightFootForward(self):

print(‘right foot forward‘)

#函数:左脚向后

def funcLeftFootBack(self):

print(‘left foot back‘)

#函数:右脚向后

def funcRightFootBack(self):

print(‘right foot back‘)

#函数:原地不动

def funcStand(self):

print()

#函数:跳舞

def funcDance(self):

self.funcLeftFootForward()

self.funcLeftFootBack()

self.funcRightFootForward()

self.funcRightFootBack()

self.funcLeftFootBack()

self.funcStand()

self.funcRightFootBack()

self.funcRightFootForward()

self.funcLeftFootForward()

reginald = Giraffes()

reginald.funcDance()

2)使用4只Pen对象的turtle画出一个叉子

import time

import turtle

#线1

t1 = turtle.Pen()

t1.forward(100)

t1.left(90)

t1.forward(50)

t1.right(90)

t1.forward(50)

#线2

t2 = turtle.Pen()

t2.forward(100)

t2.right(90)

t2.forward(50)

t2.left(90)

t2.forward(50)

#线3

t3 = turtle.Pen()

t3.forward(120)

t3.left(90)

t3.forward(25)

t3.right(90)

t3.forward(20)

#线4

t4 = turtle.Pen()

t4.forward(120)

t4.right(90)

t4.forward(25)

t4.left(90)

t4.forward(20)

time.sleep(5)

L3Byb3h5L2h0dHAvc3RhdGljLm9zY2hpbmEubmV0L3VwbG9hZHMvc3BhY2UvMjAxNC8xMjAxLzIyMzgzOF9FQVllXzE0MjU3NjIucG5n.jpg

9.第九章:Python的内建函数

1)运行代码,解释结果

a = abs(10) + abs(-10)

print(a)

b = abs(-10) + -10

print(b)

a是数学算式“10+|-10|=10+10”,结果为20

b是数学算式“|-10|+(-10)=10-10”,结果为0

2)尝试用dir和help找出如何把字符串拆成单词

dir函数可以返回关于任何值的相关信息

help函数可以返回关于其参数中描述函数的帮助信息

L3Byb3h5L2h0dHAvc3RhdGljLm9zY2hpbmEubmV0L3VwbG9hZHMvc3BhY2UvMjAxNC8xMjAxLzIyNDEzNF9UbUpkXzE0MjU3NjIucG5n.jpg

经过dir和help函数最后确定的代码为:

string = ‘‘‘this if is you not are a reading very this good then way

to you to have hide done a it message wrong‘‘‘

for x in string.split():

print(x)

3)拷贝文件,这里采用先读取信息再写入到新文件的方式

#读取文件内容

test_file1 = open("d:\\input.txt")

text = test_file1.read()

test_file1.close()

#将读取到的内容写入到一个新文件

test_file2 = open("d:\\output.txt", ‘w‘)

test_file2.write(text)

test_file2.close()

10.第十章,常用的Python模块

1)解释下面代码会打印出什么

import copy

class Car:

pass

car1 = Car()

car1.wheels = 4

car2 = car1

car2.wheels = 3

print(car1.wheels) #这里打印什么? (3)

car3 = copy.copy(car1)

car3.wheels = 6

print(car1.wheels) #这里打印什么? (3)

第一个print打印3,因为car1和car2是同一个对象,改一个另一个也会改

第二个print打印3,因为car3是从car1通过copy得到的,和car1不是一个对象,修改car3不会同时改变car1

2)将一个信息用pickle序列化并保存到一个*.dat文件中,再从该文件中读取信息反序列化并打印

import pickle

info = {

‘Name‘ : ‘Tsybius‘,

‘Age‘ : 23,

‘hobby‘ : [‘hobby1‘, ‘hobby2‘, ‘hobby3‘]

}

#序列化写入文件

outputfile = open(‘d:\\save.dat‘, ‘wb‘)

pickle.dump(info, outputfile)

outputfile.close()

#反序列化读取文件

inputfile = open(‘d:\\save.dat‘, ‘rb‘)

info2 = pickle.load(inputfile)

inputfile.close

print(info2)

11.第十一章:高级海龟作图

1)画八边形

import time

import turtle

t = turtle.Pen()

for x in range(1, 9):

t.forward(100)

t.left(45)

time.sleep(5)

L3Byb3h5L2h0dHAvc3RhdGljLm9zY2hpbmEubmV0L3VwbG9hZHMvc3BhY2UvMjAxNC8xMjAxLzIyNDgzNF9PUU5iXzE0MjU3NjIucG5n.jpg

2)画一个填好色的带轮廓的八边形

import time

import turtle

t = turtle.Pen()

#绘制实心八边形(红色)

t.color(1, 0, 0)

t.begin_fill()

for x in range(1, 9):

t.forward(100)

t.left(45)

t.end_fill()

#为八边形描边(黑色)

t.color(0, 0, 0)

for x in range(1, 9):

t.forward(100)

t.left(45)

time.sleep(5)

L3Byb3h5L2h0dHAvc3RhdGljLm9zY2hpbmEubmV0L3VwbG9hZHMvc3BhY2UvMjAxNC8xMjAxLzIyNDkzN193a2ttXzE0MjU3NjIucG5n.jpg

3)给出大小size和星星的角数,绘制一个星星

import time

import turtle

#x边形内角和180*(x-3)

#函数:给出大小和顶点数绘制星星

#size:星星的核心是个等边多边形,这是该多边形的顶点到其中心的距离

#point:顶点数

def funcDrawStar(size, point):

t = turtle.Pen()

#调校坐标位置

t.up()

t.backward(200)

t.right(90)

t.forward(100)

t.left(90)

t.down()

#开始画图

t.color(1, 0, 0)

t.begin_fill()

for x in range(1, point * 2 + 1):

t.forward(size)

if x % 2 == 0:

t.left(120)

else:

t.right(180 * (point - 2) / point - 60)

t.end_fill()

#funcDrawStar(100, 6)

funcDrawStar(100, 9)

time.sleep(5)

L3Byb3h5L2h0dHAvc3RhdGljLm9zY2hpbmEubmV0L3VwbG9hZHMvc3BhY2UvMjAxNC8xMjAxLzIyNTAzNF9tMENPXzE0MjU3NjIucG5n.jpg

12.第十二章:用tkinter画高级图形

1)在屏幕上画满三角形,位置随机、颜色随机

from tkinter import *

import random

color = ["green", "red", "blue", "orange", "yellow",

"pink", "purple", "violet", "magenta", "cyan"]

tk = Tk()

canvas = Canvas(tk, width = 400, height = 400)

canvas.pack()

#函数:创建随机位置、随机颜色的三角形

def funcRandomTriangle():

x1 = random.randrange(400)

y1 = random.randrange(400)

x2 = random.randrange(400)

y2 = random.randrange(400)

x3 = random.randrange(400)

y3 = random.randrange(400)

fillcolor = random.randrange(10)

canvas.create_polygon(x1, y1, x2, y2, x3, y3,

fill = color[fillcolor], outline = "black")

for x in range(0, 15):

funcRandomTriangle()

L3Byb3h5L2h0dHAvc3RhdGljLm9zY2hpbmEubmV0L3VwbG9hZHMvc3BhY2UvMjAxNC8xMjAxLzIyNTIzNl9IbWo4XzE0MjU3NjIucG5n.jpg

2)移动三角形,先向右,再向下,再向左,再向上回到原来位置

import time

from tkinter import *

tk = Tk()

canvas = Canvas(tk, width = 400, height = 400)

canvas.pack()

#创建一个三角形

canvas.create_polygon(10, 10, 10, 60, 50, 35)

#向右移动

for x in range(0, 60):

canvas.move(1, 5, 0)

tk.update()

time.sleep(0.05)

#向下移动

for x in range(0, 60):

canvas.move(1, 0, 5)

tk.update()

time.sleep(0.05)

#向左移动

for x in range(0, 60):

canvas.move(1, -5, 0)

tk.update()

time.sleep(0.05)

#向上移动

for x in range(0, 60):

canvas.move(1, 0, -5)

tk.update()

time.sleep(0.05)

3)移动照片(gif格式)

import time

from tkinter import *

tk = Tk()

canvas = Canvas(tk, width = 400, height = 400)

canvas.pack()

myimg = PhotoImage(file = "d:\\temp.gif")

canvas.create_image(0, 0, anchor = NW, image = myimg)

#向右移动

for x in range(0, 25):

canvas.move(1, 5, 0)

tk.update()

time.sleep(0.05)

END

时间: 11-29

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70320.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小鹅通课程下载(一)

【需求】 花钱买了小鹅通付费课程&#xff0c;想要下载到本地观看或者存档&#xff1f; 【问题】 直接下载视频会有aes-256加密&#xff0c;要自己通过m3u8找密钥用openssl解码 【解决方案】 &#xff08;仅用于windows系统&#xff09; 小鹅通exe运行工具&#xff0c;双击打…

GPT4官方联网功能和插件功能

chatgpt免费入口 http://chat.xutongbao.top https://mbd.baidu.com/newspage/data/landingsuper?context%7B%22nid%22%3A%22news_9764161741531547244%22%7D&n_type-1&p_from-1

mac微信备份位置macos手机微信备份的文件迁移走

mac微信备份位置 如果你没有更改过mac版微信的备份文件夹的位置的话&#xff0c;那么mac版微信备份的聊天记录被保存在电脑的【/User/用户/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/】 一个叫【Backup】的文件夹当…

One Chat for Mac(多功能聊天软件)

One Chat for Mac版,这款软件并不能直接进行聊天服务&#xff0c;但是One Chat Mac可以将一系列的聊天软件进行整合并拥有易于使用的用户界面和用户体验&#xff0c;并且提示通知全部都可以自定义。 测试系统&#xff1a; Macos10.14.6系统 One Chat for Mac版教程 下载完成…

这款应用,让Windows软件也能在Mac上使用起来

伴随着苹果秋季发布会的结束&#xff0c;苹果电脑近期也有了一些降级促销活动&#xff0c;我趁机入手了一台iMac台式&#xff0c;准备从Windows系统转投到Mac系统的怀抱中。 兴致勃勃用了几天后&#xff0c;我发现了一个大问题&#xff01;公司使用的财务统计软件&#xff0c;没…

拿去吧!27款MacBook软件推荐给你

1、ClipboardManager 历史剪粘板管理工具 一个能记录你的剪贴板的软件 人类的本质就是 ctrl c和ctrl v&#xff0c;当复制粘贴多了&#xff0c;自然而然需要一款管理工具 2、自动切换输入法 一个能根据打开应用&#xff0c;自动切换输入法的软件 以我举例&#xff1a;敲代…

Mac上超实用的6款软件,老用户都知道!

今天为大家带来的是6款超实用的Mac软件&#xff0c;让你不再走弯路。 第一款&#xff1a;Amphetamine 防休眠的利器 Amphetamine for mac是应用在Mac上的一款防休眠工具&#xff0c;可以自定义哪些程序运行时不休眠&#xff0c;做到自定义Mac睡眠时间&#xff0c;可以通过超级简…

Mac电脑到底该用什么下载软件?Folx苹果电脑专用

Mac电脑到底该用什么下载软件&#xff1f;我用过的下载管理器中,Folx可以说是数一数二的了&#xff0c;它简洁的界面具有非常浓烈的Mac风格。标签管理、BT搜索、Music集成等功能也是非常的实用。 而 Folx 5对于我&#xff0c;值得说道的就是它的下载管理功能。它能够帮助我非常…

Linux terminal 终端快捷键

Linux terminal 终端快捷键 文章目录 Linux terminal 终端快捷键1. 常用快捷键2. 移动光标3. 编辑命令3. Bang(!)命令4. 控制命令 1. 常用快捷键 ctrl左右键: 在单词之间跳转ctrla: 跳到本行的行首ctrle: 跳到页尾Ctrlu&#xff1a;删除当前光标前面的文字 &#xff08;还有剪…

Windows Terminal 常用快捷键

Windows Terminal 常用快捷键 快捷键使用CtrlShift数字打开新控制台CtrlAlt数字切换控制台ShiftAlt/横向打开新控制台ShiftAlt_/-纵向打开新控制台ShiftAlt方向键控制控制台字体大小CtrlShiftw关闭当前控制台Alt方向键在本标签内切换控制台

Android 桌面快捷方式

Android 快捷方式 使用方式 ShortcutUtils.getInstance().addShortcut(this, MainActivity2.class, liveBundle, "live_Id", "看直播", "看直播", R.drawable.live).addShortcut(this, MainActivity2.class,vodBundle, "vod_Id", &qu…

快捷方式管理软件推荐

文章目录 前言一、Rolan1、简介&#xff1a;2、功能&#xff1a;3、使用&#xff1a; 二、Maye1、简介&#xff1a;2、界面&#xff1a; 三、Lily1、简介&#xff1a;2、功能&#xff1a;3、界面&#xff1a; 四、音速启动一、简介&#xff1a;二、界面&#xff1a; 五、Luink一…

如何在Linux桌面上创建快捷方式?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一般而言&#xff0c;Linux环境下在命令行上通过软件包管理工具安装软件&#xff0c;或者从网站直接下载已经编译好的二进制软件包&#xff0c;软件安装好之后不会在桌面上创建快捷方式。接下来如果想要在桌…

Android桌面图标快捷方式

一、背景 长按桌面图标实现快捷方式最早是iOS提供的功能,而Android最早在Android 7.1版本也提供了对这方面的支持,于是在短时间内,像微信,支付宝,头条等流量级应用都提供了这方面的支持,如下图。 现在,长按桌面图标快捷方式已经是很成熟的功能,实现上也比较简单,主…

神州数码与神州控股、神州信息共同主办首届技术年会,透露出什么信号?

11 月 8 日&#xff0c;神州控股、神州数码集团、神州信息共同主办“数字中国 2019 技术年会”&#xff0c;聚焦云计算、大数据、人工智能、区块链、5G 等前沿技术创新与应用实践&#xff0c;众多领域的技术专家展开了深度交流&#xff0c;共同探讨数字时代的技术创新与协同发展…

微软英伟达领投2万张H100打造全球最强超算一跃成为OpenAI强劲敌

OpenAI六大劲敌之一Inflection AI&#xff0c;最新融资13亿美元&#xff01; 这家由DeepMind创始人之一创立的人工智能初创公司&#xff0c;从微软、英伟达、和3位亿万富翁&#xff08;Reid Hoffman、盖茨和Eric Schmidt&#xff09;获得了融资。 Inflection AI发文称&#xf…

中庸(全集) 读后感

中庸&#xff08;全集&#xff09; 读后感 作者&#xff1a;唐品主编 《中庸》原为记载古代典章制度的书籍——《礼记》中的一篇&#xff0c;相传为战国子思所作。它是古代儒家典籍名篇&#xff0c;被南宋理学家朱熹列为“四书”之一。它作为平民哲学&#xff0c;其核心是修…

项目组织战略管理及组织结构

项目管理是战略管理的实施与细化。了解项目组织战略管理&#xff0c;才能更好地理解各级项目管理。 组织战略是组织实施各级项目管理&#xff0c;包括项目组合管理、项目集管理和项目管理的基础。只有从组织战略的高度来思考&#xff0c;思考各个层次项目管理在组织中的位置&a…