(1)编写程序,通过调用函数,能够打印出n行n列的方格矩阵。(例如,4行4列的方格矩阵如下图所示。)
def fn():
print('+--+--+--+--+')
print('| | | | |')
print('+--|--+--+--+')
print('| | | | |')
print('+--+--+--+--+')
print('| | | | |')
print('+--+--+--+--+')
print('| | | | |')
print('+--+--+--+--+')
fn()
(2)使用函数绘制满天星(100颗)。
import turtle
import random
def fn():
# 设置画笔速度
turtle.speed(0)
# 设置画笔的宽度
turtle.width(3)
# 设置画布背景颜色为黑色
turtle.bgcolor("black")
# 循环绘制100颗五角星
for _ in range(100):
# 生成随机的五角星颜色
r = random.random()
g = random.random()
b = random.random()
color = (r, g, b)
# 设置画笔颜色为随机颜色
turtle.color(color)
# 随机生成五角星的大小和位置
size = 10
x = random.randint(-400, 400)
y = random.randint(-400, 400)
# 将画笔移动到指定位置
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
# 绘制五角星
turtle.begin_fill()
for _ in range(5):
turtle.forward(size)
turtle.right(144)
turtle.end_fill()
# 隐藏画笔
turtle.hideturtle()
# 等待用户关闭窗口
turtle.done()
fn()
(3)实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。
def isNum(s):
try:
complex(s) # 尝试将字符串转换为复数类型
return True
except ValueError:
try:
float(s) # 尝试将字符串转换为浮点数类型
return True
except ValueError:
try:
int(s) # 尝试将字符串转换为整数类型
return True
except ValueError:
return False
# 测试
print(isNum("123")) # True
print(isNum("3.14")) # True
print(isNum("1+2j")) # True
print(isNum("abc")) # False
(4)定义一个判别素数的函数,在主程序或者main函数中输入一个整数(要有异常处理),程序输出该数是否素数的判定消息。
说明:本程序测试数据:17、88、2、1、0、a。分别运行结果是否正确。
1)输入程序,调试和运行程序,分析结果。
2)保留判别素数的函数,修改主程序或者main函数,要求实现输出100~200之间的素数。
import math
def isPrime(num):
if num < 2:
return False
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
def fn(start, end):
for i in range(start, end +1):
try:
if(isPrime((i))):
print(i)
except ValueError:
print("输入错误:输入必须为大于1的整数")
# def fun():
# try:
# num = int(input("请输入一个整数:"))
# if not isinstance(num, int) or num <= 1:
# raise ValueError
# except ValueError:
# print("输入错误:输入必须为大于1的整数")
# else:
# if isPrime(num):
# print(f"{num}是素数")
# else:
# print(f"{num}不是素数")
fn(100, 200)
(5)哥德巴赫猜想。1742年,哥德巴赫给欧拉的信中提出了以下猜想"任一大于2的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于2的偶数都可写成两个素数之和,亦称为”强哥德巴赫猜想”或”关于偶数的哥德巴赫猜想”。比如: 24=5+19,其中5和19都是素数。
要求:输入一个正整数N,当输入为偶数时,分行按照格式“N = p + q”输出N的所有素数分解,其中p、q均为素数且p ≤ q。当输入为奇数或N<4时,输出’Data error!’ 。
测试示例 输入 输出
示例1 88 88=5+83
88=17+71
88=29+59
88=41+47
4 4=2+2
101 Data error!
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def goldbach_conjecture(n):
if n < 4 or n % 2 != 0:
return 'Data error!'
results = []
for p in range(2, n//2 + 1):
q = n - p
if is_prime(p) and is_prime(q):
results.append((p, q))
return results
# 测试
n = int(input("请输入一个正整数N:"))
results = goldbach_conjecture(n)
if type(results) == str:
print(results)
else:
for result in results:
print("{} = {} + {}".format(n, result[0], result[1]))