简单代码6.0
字符田字格的绘制
def draw_field(width):
"""
绘制字符田字格
参数:
width -- 田字格的宽度(格子的大小)
"""
if width < 1:
print("宽度必须大于等于1")
return
# 计算总行数和列数(每个格子有2行2列字符)
size = width * 2 + 1
for i in range(size):
for j in range(size):
# 判断边界位置
if i % (width * 2) == 0: # 顶部和底部边框
if j % (width * 2) == 0:
print("+", end="")
else:
if j % 2 == 0:
print("-", end="")
else:
print("-", end="")
else:
if i % width == 0 and i % (width * 2) != 0: # 中间水平线
if j % (width * 2) == 0:
print("+", end="")
else:
if j % 2 == 0:
print("-", end="")
else:
print("-", end="")
else: # 垂直线或空白
if j % (width * 2) == 0:
print("|", end="")
elif j % width == 0 and j % (width * 2) != 0: # 中间垂直线
print("|", end="")
else:
print(" ", end="")
print() # 换行
测试代码
if name == "main":
draw_field(3)
奇数的判断
def isOdd(number):
if isinstance(number, int) or (isinstance(number, float) and number.is_integer()):
# 检查是否为整数(包括类似5.0的浮点数)
integer = int(number)
return integer % 2 != 0
return False
print(isOdd(3))
print(isOdd(4))
print(isOdd(-5))
print(isOdd(0))
print(isOdd(5.0))
print(isOdd(5.5))
print(isOdd("abc"))
质数判断
def isPrime(n):
# 首先检查输入是否为整数
if not isinstance(n, int) or isinstance(n, bool):
return False
# 处理小于2的情况
if n < 2:
return False
# 处理2的情况(唯一的偶质数)
if n == 2:
return True
# 排除偶数
if n % 2 == 0:
return False
# 检查从3到sqrt(n)的奇数因子
max_divisor = int(n**0.5) + 1
for i in range(3, max_divisor, 2):
if n % i == 0:
return False
return True
if name == "main":
test_cases = [
2, 3, 5, 7, 11,
4, 6, 8, 9, 10,
1, 0, -1, -2, -3,
2.0, 3.0, 4.0,
"2", "3", "hello",
True, False,
None
]
for num in test_cases:
print(f"isPrime({num}) = {isPrime(num)}")
质数列表
def PrimeList(N):
if N <= 2:
return ""
# 初始化一个布尔数组,初始时都认为是素数
is_prime = [True] * N
is_prime[0] = is_prime[1] = False # 0和1不是素数
# 埃拉托斯特尼筛法
for i in range(2, int(N ** 0.5) + 1):
if is_prime[i]:
# 将i的倍数标记为非素数
for j in range(i*i, N, i):
is_prime[j] = False
# 收集所有素数
primes = [str(i) for i, prime in enumerate(is_prime) if prime]
return " ".join(primes)
if name == "main":
N = int(input("请输入一个正整数N: "))
print(f"小于{N}的所有素数为:")
print(PrimeList(N))
字符数字判断
def isNum(s):
try:
# 尝试转换为复数
complex(s)
except ValueError:
return False
# 进一步检查是否为纯虚数(如"3j")的情况
if 'j' in s.lower():
# 复数检查
try:
# 确保虚部有数字(排除"j"或"+j"等情况)
if s.lower().replace('j', '').replace('+', '').replace('-', '') == '':
return False
complex(s)
return True
except ValueError:
return False
# 检查是否是整数或浮点数
try:
float(s)
return True
except ValueError:
return False
if name == "main":
test_cases = [
"123", # 整数
"-45", # 负整数
"3.14", # 浮点数
"-0.5", # 负浮点数
".5", # 浮点数
"5.", # 浮点数
"1e3", # 科学计数法
"-2.5e-4", # 科学计数法
"3+4j", # 复数
"-5j", # 纯虚数
"2.3-7.8j", # 复数
"abc", # 非数字
"1.2.3", # 非法数字
"--5", # 非法数字
"j", # 非法复数
"+j" # 非法复数
]
for test in test_cases:
print(f"'{test}': {isNum(test)}")
数字积运算
def multi(*args):
if not args:
return 0
product = 1
for num in args:
product *= num
return product
if name == "main":
print(multi()) # 无参数,返回0
print(multi(5)) # 单个参数,返回5
print(multi(2, 3)) # 两个参数,返回6
print(multi(1, 2, 3, 4)) # 多个参数,返回24
print(multi(2.5, 4)) # 浮点数,返回10.0
print(multi(-2, 3, -4)) # 包含负数,返回24
斐波那契数列的计算
def FabN(n):
if not isinstance(n, int) or n <= 0:
raise ValueError("输入必须为正整数")
# 基本情况
if n == 1:
return 0
elif n == 2:
return 1
# 递归情况
else:
return FabN(n-1) + FabN(n-2)
if name == "main":
# 测试前10个斐波那契数
for i in range(1, 11):
print(f"FabN({i}) = {FabN(i)}")
# 测试异常情况
try:
print(FabN(0))
except ValueError as e:
print(f"错误: {e}")
try:
print(FabN(3.5))
except ValueError as e:
print(f"错误: {e}")
数据类型的判断
def isType(value):
data_type = type(value)
if data_type == int:
return "整数"
elif data_type == float:
return "小数"
elif data_type == complex:
return "复数"
elif data_type == str:
return "字符串"
elif data_type == list:
return "列表"
elif data_type == dict:
return "字典"
elif data_type == set:
return "集合"
elif data_type == tuple:
return "元组"
else:
return "未知类型"
测试示例
if name == "main":
test_values = [
42, # 整数
3.14, # 小数
1 + 2j, # 复数
"Hello, World!", # 字符串
[1, 2, 3], # 列表
{"name": "Alice"}, # 字典
{1, 2, 3}, # 集合
(1, 2, 3), # 元组
True # 布尔值(将返回未知类型)
]
for value in test_values:
print(f"值: {value}, 类型: {isType(value)}")