打印九九乘法表
使用双重 for 循环,学习 print 打印函数的使用。
In [1]:
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}X{i}={i*j}", end="\t")
print()
打印三角形和菱形
In [2]:
def print_triangle(num):
for i in range(1, num + 1):
print(" " * (num - i), end="")
print("*" * (2 * i - 1))
In [3]:
print_triangle(10)
In [4]:
def print_diamond(num):
print_triangle(num)
for i in range(num - 1, 0, -1):
print(" " * (num - i), end="")
print("*" * (2 * i - 1))
In [5]:
print_diamond(7)
完数
一个数如果恰好等于它的因数之和,这个数就称为“完数”,例如 6=1+2+3。
In [6]:
def is_perfect_number(num):
sum = 1
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
sum += i
sum += num / i
return sum == num
In [7]:
perfect_numbers = [num for num in range(2, 101) if is_perfect_number(num)]
print(f"100 以内的所有完数:{perfect_numbers}")
阶乘
自然数 n 的阶乘 n!,是指 1, 2, …, n 这 n 个数的连乘积。
In [8]:
def factorial(num):
a = 1
for i in range(2, num + 1):
a *= i
return a
In [9]:
factorial(4)
Out[9]:
In [10]:
import math
In [11]:
math.factorial(4)
Out[11]:
判断闰年
闰年的判断条件 (如下两个条件满足任意一个就是闰年):
- 能被 4 整除,且不能被 100 整除
- 能被 400 整除
In [12]:
def is_leap_year(year):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
else:
return False
In [13]:
is_leap_year(2000)
Out[13]:
In [14]:
is_leap_year(2100)
Out[14]:
In [15]:
is_leap_year(2104)
Out[15]:
今天是一年中的第几天
判断一个日期是该年份中的第几天。
In [16]:
def count_day(year, month, day):
day_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if is_leap_year(year):
day_list[1] = 29
return sum(day_list[0 : month - 1]) + day
In [17]:
count_day(2024, 3, 1)
Out[17]:
乘法原理
用 0、1、2、3、4 这五个数字,能组成多少个互不相同且无重复数字的三位数,并输出这些三位数。简单分析一下,百位上可以是 1、2、3、4 这四种可能;十位上,除去百位上已用的数字,还有四种可能;个位上,还有三种可能。根据乘法原理,一共有 种情况。
In [18]:
import itertools
In [19]:
nums = []
for x, y, z in itertools.product(range(1, 5), range(5), range(5)):
if x != y and x != z and y != z:
nums.append(100 * x + 10 * y + z)
print(nums)
In [20]:
len(nums)
Out[20]: