简单代码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)}")
posted @ 2025-04-20 10:32  HeDesongfuqin  阅读(20)  评论(0)    收藏  举报