题目1:基础练习 矩形面积交
解题思路:
找相交处,矩形的点坐标
代码
list1 = list(map(float, input().split()))
list2 = list(map(float, input().split()))
x1 = max(min(list1[0], list1[2]), min(list2[0], list2[2]))
x2 = min(max(list1[0], list1[2]), max(list2[0], list2[2]))
y1 = max(min(list1[1], list1[3]), min(list2[1], list2[3]))
y2 = min(max(list1[1], list1[3]), max(list2[1], list2[3]))
if x2 > x1 and y2 > y1:
area = (x2-x1)*(y2-y1)
print('{:.2f}'.format(area))
else:
print('%.2f' % 0.00)
题目2:基础练习 数的读法
解题思路:
太痛苦了,就是各种情况 进行不同的处理
代码
n = input()
pin_yin = {'0': 'ling', '1': 'yi', '2': 'er', '3': 'san', '4': 'si', '5': 'wu',
'6': 'liu', '7': 'qi', '8': 'ba', '9': 'jiu'}
pin_yin_2 = {0: '', 1: '', 2: 'shi', 3: 'bai', 4: 'qian', 5: 'wan', 6: 'shi',
7: 'bai', 8: 'qian', 9: 'yi', 10: 'shi'}
n = n + ' ' # 后面判断 会越界
l = len(n) - 1
for i in range(l):
j = int(n[i])
if j != 0: # 不为0
# 处理 1
# 十、十万、十亿 位置且位于开的头的 1 不读
if j == 1 and (l - i == 2 or l - i == 6 or l - i == 10):
if i != 0: # 第一个1不输出1, 若不添加此条件,12会读出 yi shi er
print(pin_yin['1'], end=' ')
print(pin_yin_2[2], end=' ')
continue
print(pin_yin[n[i]], end=' ')
print(pin_yin_2[l - i], end=' ')
else:
if l - i == 5 or l - i == 9: # 万 和 忆 位
print(pin_yin_2[l - i], end=' ')
if n[i + 1] == '0' or i == l - 1: # 后面仍有 0 或者 最后一位
continue # 不读
print(pin_yin['0'], end=' ') # 读 0
题目3:基础练习 Sine之舞
解题思路:
没意思,这题找规律(不是自己敲的代码)
代码
def Sine_An(n, k):
if n == k: # 边界
return
print('sin(%d' % (n+1), end='')
if n + 1 != k: # 当n小于输入的值,即后面还有式子
if n % 2 == 1: # 如果n是奇数 输出+号
print('+', end='')
else: # 如果n是偶数 输出-号
print('-', end='')
else: # 如果后面没有式子输出右括号
print(')', end='')
Sine_An(n+1, k)
def Sine_Sn(n):
k = t = 1
if n == 0:
return
for i in range(n-1): # 补全左边括号
print('(', end='')
while n != 0:
Sine_An(0, k)
for i in range(t - 1):
print(')', end='') # 补全An的右括号
print('+%d' % n, end='')
if n != 1:
print(')', end='')
k += 1
t += 1
n -= 1
n = int(input())
Sine_Sn(n)
题目4:基础练习 FJ的字符串
解题思路:
ASCII 计算,找规律对称后,中间加 ABCD…
代码
N = int(input())
str = ''
for i in range(1, N+1):
str = str + chr(i+64) + str
print(str)