由于篇幅限制,以下是一些Python练手题及其解决方案的摘要。完整的解决方案可以在文末的GitHub仓库中找到。
- 判断年份是否为闰年
def is_leap_year(year):
return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
- 计算阶乘
def factorial(n):
return 1 if n < 2 else n * factorial(n - 1)
- 计算斐波那契数列
def fibonacci(n):
return n if n < 2 else fibonacci(n-1) + fibonacci(n-2)
- 判断一个数是否是素数
def is_prime(n):
return n > 1 and all(n % i for i in range(2, int(n ** 0.5) + 1))
- 生成随机验证码
import random
def generate_captcha(length=4):
digits = [str(i) for i in range(10)]
captcha = ''.join(random.choice(digits) for _ in range(length))
return captcha
- 计算最大公约数
def gcd(x, y):
while y:
x, y = y, x % y
return x
- 计算最小公倍数
def lcm(x, y):
return x * y // gcd(x, y)
- 字符串反转
def reverse_string(s):
return s[::-1]
- 判断是否是回文字符串
def is_palindrome(s):
return s == s[::-1]
- 计算字符串的字节长度
def byte_length(s):
return len(s.encode('utf-8'))
- 判断是否是完全平方数
import math
def is_perfect_square(n):
if n < 0:
return False
sqrt = int(math.sqrt(n))
return sqrt * sqrt == n
- 计算斐波那契数列的前N项
def fibonacci_sequence(n):
a, b = 0, 1
result = [0]
for i in range(n):
result.append(b)
a, b = b, a + b
return result
- 计算斐波那契数列第N项的位数
def fibonacci_digit_count(n):
a, b, count = 0, 1, 0
for i in range(n):
a, b = b, a + b
count += len(str(b)) - len(str(a))
return count
- 计算斐波那契数列第N项的和
def sum_of_fibonacci(n):
a, b, sum = 0, 1, 1
for i in range(n-1):
a, b = b, a + b
sum += b
return sum
- 计算斐波那契数列第N项的平方根的位数
import math
def fibonacci_square_root_digit_count(n):
a, b, count = 0, 1, 0
for i in range(n):
a, b = b, a + b
sqrt = int(math.sqrt(b))
if sqrt ** 2 == b:
count += 1
return count