Files
Python-Programming-Exercise/20210726-第6章.py
2025-09-25 21:23:34 +08:00

204 lines
7.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ==============================================================================
# 通过 D:\文档\电子文档\个人\脚本库\PythonScript\第6章.py + 题号 运行
# 程序名:
# 第6章习题
# 目的:
#
# 修订记录:
# 日期 编程者 改动描述
# =================== ============= =====================================
# 2021-07-26 13:52:58 Sola 6-1 打印歌曲“Old MacDonald”的歌词
# 2021-07-26 16:21:07 Sola 6-2 略
# 2021-07-26 16:21:16 Sola 6-3 给定球体半径,求表面积和体积
# 2021-07-26 16:28:27 Sola 6-4 计算前N个自然数的和、立方和
# 2021-07-26 16:35:53 Sola 6-5 披萨饼单价
# 2021-07-26 18:32:19 Sola 6-6 三角形面积
# 2021-07-26 18:32:42 Sola 6-7 斐波纳契数
# 2021-07-26 18:35:29 Sola 6-8 平方根估计
# 2021-07-26 18:42:07 Sola 6-9 返回分数字母等级
# 2021-07-26 18:47:48 Sola 6-10 返回首字母缩略词
# 2021-07-26 18:55:52 Sola 6-11 返回列表数字平方
# 2021-07-26 21:42:06 Sola 6-12 返回数字列表的和
# 2021-07-26 18:56:18 Sola 6-13 将字符串列表转化为数字
# 2021-07-26 21:44:27 Sola 6-14 从文件读取数字计算平方和
# 2021-07-27 00:52:48 Sola 6-15 显示简单笑脸
# 2021-07-27 00:53:05 Sola 6-16 给图片点选加笑脸
# 2021-07-27 00:53:21 Sola 6-17 移动图形到点选位置
from graphics import GraphWin
def test6_1():
def print_Old_MacDonald(animal, barking):
print("Old MacDonald had a farm, Ee-igh, Ee-igh, Oh!\n" +
"And on that farm he had a {0}, Ee-igh, Ee-igh, Oh!\n".format(animal) +
"With a {0}, {0} here and a {0}, {0} there.\n".format(barking) +
"Here a {0}, there a {0}, everywhere a {0}, {0}.\n".format(barking) +
"Old MacDonald had a farm, Ee-igh, Ee-igh, Oh!\n")
print_Old_MacDonald("bee", "buzz")
print_Old_MacDonald("bird", "tweet")
print_Old_MacDonald("cat", "meow")
print_Old_MacDonald("hen", "cluck")
print_Old_MacDonald("cuckoo", "cuckoo")
def test6_3():
from math import pi
def sphereArea(radius):
return 4 * pi * radius ** 2
def sphereVolume(radius):
return 4 / 3 * pi * radius ** 3
radius=1
print("半径为{0}的球体,其表面积为{1:5.3f},体积为{2:5.3f}"
.format(radius, sphereArea(radius), sphereVolume(radius)))
def test6_4():
def sumN(n):
result = 0
for i in range(n + 1):
result = result + i
return result
def sumNCubes(n):
result = 0
for i in range(n + 1):
result = result + i ** 3
return result
n = 10
print("{0}位自然数的和为{1},立方和为{2}"
.format(n, sumN(n), sumNCubes(n)))
def test6_5():
def pizzaUnitPrise(r, prise):
from math import pi
return prise / (4 * pi * r ** 2)
def test6_6():
def triangleArea(a, b, c):
from math import sqrt
s = (a + b + c) / 2
return sqrt(s * (s - a) * (s - b) * (s - c))
def test6_7():
def Fibonacci(n):
temp = 0
result = 1
for i in range(n - 1):
temp, result = result, temp + result
return result
print("斐波那契数列第", 10, "项为:", Fibonacci(10))
def test6_8():
def nextGuess(guess,x):
result = guess / 2
for i in range(x):
result = (result + guess / result) / 2
return result
print("{0}的平方根迭代{1}次的估计值为{2:5.3f}".format(10, 10, nextGuess(10, 10)))
def test6_9():
def grade(score):
grade = ["F", "F", "F", "F", "F", "F", "D", "C", "B", "A", "A"]
return grade[int(score / 10)]
score = float(input("请输入你的分数:"))
print("你的分数对应的等级为:{0}".format(grade(score)))
def test6_10():
def acronym(phrase):
shortName = ""
for i in phrase.split():
shortName = shortName + i[0].upper()
return shortName
inputStr = input("请输入一个短语:")
print("'{0}' 的缩写为:{1}".format(inputStr, acronym(inputStr)))
def test6_11():
def squareEach(nums):
for num in range(len(nums)):
nums[num] = nums[num] ** 2
nums = list(range(10))
squareEach(nums)
print(nums)
def test6_12():
def sumList(nums):
result = 0
for num in range(len(nums)):
result = result + nums[num]
return result
nums = list(range(10))
print("列表数字的和为:{0}".format(sumList(nums)))
def test6_13():
def toNumbers(strList):
for i in range(len(strList)):
strList[i] = float(strList[i])
convertList = ["2021", "2020", "2019", "2018"]
print("这是转换之前的列表:{0}".format(convertList))
toNumbers(convertList)
print("这是转换之后的列表:{0}".format(convertList))
def test6_14():
from tkinter.filedialog import askopenfilename
def sumSquare(nums):
result = 0
for num in range(len(nums)):
result = result + float(nums[num]) ** 2
return result
print("请选择需要打开的文件:")
nums = open(askopenfilename(), 'r').readlines()
print("打开文件中数字的平方和为:{0}".format(sumSquare(nums)))
def test6_15():
from graphics import GraphWin, Text, Point
def drawFace(center, size, win):
face = Text(center, "笑脸")
face.setSize(size)
face.clone().draw(win)
win = GraphWin("显示笑脸")
drawFace(Point(10, 10), 10, win)
drawFace(Point(100, 100), 36, win)
drawFace(Point(160, 30), 30, win)
win.getMouse()
def test6_16():
from graphics import GraphWin, Point, Circle, Line, Image
from tkinter.filedialog import askopenfilename
def drawFace(center, size, win):
Face = Circle(center, size)
Face.setFill('yellow')
Face.clone().draw(win)
Line(Point(center.getX() + size * 0.2, center.getY() + size * 0.3),
Point(center.getX() + size * 0.5, center.getY() + size * 0.3)).draw(win)
Line(Point(center.getX() - size * 0.2, center.getY() + size * 0.3),
Point(center.getX() - size * 0.5, center.getY() + size * 0.3)).draw(win)
def clickDrawFace(win):
center = win.getMouse()
side = win.getMouse()
size = ((center.getX() - side.getX()) ** 2 + (center.getY() - side.getY()) ** 2) ** 0.5
drawFace(center, size, win)
print("请选择需要遮挡的图片注意只支持GIF格式!")
imageDir = askopenfilename()
imageFile = Image(Point(0, 0), imageDir)
imageHeight, imageWidth = imageFile.getHeight(), imageFile.getWidth()
win = GraphWin("没脸见人系列", width=imageWidth, height=imageHeight)
win.setCoords(-imageWidth / 2, -imageHeight / 2, imageWidth / 2, imageHeight / 2)
imageFile.draw(win)
times = int(input("请问需要遮挡的次数:"))
for i in range(times):
clickDrawFace(win)
win.getMouse()
def test6_17():
from graphics import GraphWin, Point, Circle
def moveTo(shape, newCenter):
oldCenter = shape.getCenter()
shape.move(newCenter.getX() - oldCenter.getX(), newCenter.getY() - oldCenter.getY())
win = GraphWin("移动图形", width=800, height=600)
draw = Circle(Point(100, 100), 100)
draw.draw(win)
for i in range(10):
moveTo(draw, win.getMouse())
win.getMouse()
import sys
def run(num):
eval("test6_" + num + "()")
run(sys.argv[1])