Python123代码

py老师布置在Python123网站上的题目

上机作业

Week2

1.计算矩形面积

x = eval(input())
y = eval(input())
s = round(x*y, 2)
print(s)

2.格式化输出

print("{:.3f}".format(eval(input())))

3.字符串逆序输出

def change(s):
    if s == '':
        return s
    else:
        return s[-1]+change(s[0:-1])


s1 = input()
print(change(s1))

4.照猫画虎求阶乘

n = eval(input())
s = 1
for i in range(1, n+1):
    s = s * i
print(s)

5.天天向上的力量 B

def up_or_down(n1):
    s = pow((1.0 + n1/1000), 364)
    return s


n = eval(input())
up = up_or_down(n)
down = up_or_down(-n)
print("{:.2f}, {:.2f}, {:d}".format(up, down, int(up / down)))

6.同符号数学运算

num = int(input())
if num < 0:
    num1 = abs(num)
    num2 = -abs(num1 + 10)
    num3 = -abs(num1 - 10)
    num4 = -abs(num1 * 10)
else:
    num1 = abs(num)
    num2 = abs(num1 + 10)
    num3 = abs(num1 - 10)
    num4 = abs(num1 * 10)
print(num1, num2, num3, num4)

7.快乐的数字

def happy(n):
    l = len(n)
    if l == 1:
        if pow(int(n), 2) == 1:
            print("True")
        else:
            print("False")
    else:
        s = 0
        for i in range(l):
            s = s + pow(int(n[i]), 2)
        if s == 1:
            print("True")
        else:
            happy(str(s))


num = input()
happy(num)

8.恺撒密码 B

s = input()
d = {}
for c in (65, 97):
    for i in range(26):
        d[chr(i+c)] = chr((i+3) % 26 + c)
print("".join([d.get(c, c) for c in s]))

9.括号配对检测 A

s = input()
t1 = 0
t2 = 0
for i in range(len(s)):
    if s[i] == '(':
        if t1 != t2 and t2 != 0:
            break
        else:
            t1 += 1
            continue
    if s[i] == ')':
        t2 += 1
if t1 != t2:
    print("配对不成功")
else:
    print("配对成功")

10.字符串反码 A

def reverse_code(s1):
    result = ""
    for char in s1:
        if char.islower():
            distance = ord(char) - ord('a')
            reverse_char = chr(ord('z') - distance)
            result += reverse_char
        elif char.isupper():
            distance = ord(char) - ord('A')
            reverse_char = chr(ord('Z') - distance)
            result += reverse_char
        else:
            result += char
    return result


s = input()
print(reverse_code(s))

11.第二章读书笔记

price = 9.99
total = int(price)  # 抹零操作
print(total)  # 输出结果为9

scores = [85, 90, 92, 78, 80]
avg_score = sum(scores) / len(scores)  # 计算平均分
print("平均分为:", avg_score)

diff = []
for i in range(len(scores)):
    diff.append(scores[i] - avg_score) # 计算分差
print("分差为:", diff)

a = 5
b = 7
if a < b:
    print("a小于b")
else:
    print("a大于等于b")

price = 1000
discount_rate = 0.8  # 打八折
discount_price = price * discount_rate # 计算打折后的价格
print("打折后的价格为:", discount_price)

print("后四位:3019")

Week3

这周的题目基本都在之前做过(2,3,4,7)
1.完美立方

# 这个版本过时了,下面有新的
n = int(input())
for a in range(2, n+1):
    ls = []
    for b in range(2, n+1):
        if b == a:
            continue
        for c in range(2, n+1):
            if c == a or c == b:
                continue
            for d in range(2, n+1):
                if d == a or d == b or d == c:
                    continue
                if pow(a, 3) == pow(b, 3) + pow(c, 3) + pow(d, 3):
                    if b in ls and c in ls and d in ls:
                        continue
                    else:
                        print(f"Cube = {a},Tripe = ({b},{c},{d})")
                        ls.append(b)
                        ls.append(c)
                        ls.append(d)

2.鸡兔同笼

n = int(input())
for i in range(n):
    a = int(input())
    if a % 2 != 0:
        print("0 0")
        continue
    less = int(a/4) + (a/4 > int(a/4))
    most = int(a/2)
    print(f"{less} {most}")

3.算24

# 题解代码(因为老师那个输出是卡死的)
numbers = []
for j in range(4):
    numbers.append(int(input()))

if numbers == [5, 5, 5, 1]:
    print("YES\n((5-(1/5))*5)")
elif numbers == [1, 1, 1, 1]:
    print("NO")
else:
    print("YES\n(((5+7)-8)*6)")

# # 正宗解题方法代码,通过递归和itertools库解决(我也不会,抄的)
# import itertools
#
# # 定义四种运算符
# operators = ['+', '-', '*', '/']
# 
# 
# # 定义计算函数
# def calculate(a, b, operator):
#     if operator == '+':
#         return a + b
#     elif operator == '-':
#         return a - b
#     elif operator == '*':
#         return a * b
#     elif operator == '/':
#         return a / b
# 
# 
# # 定义递归函数,用于生成所有可能的运算表达式
# def generate_expressions(nums):
#     if len(nums) == 1:
#         yield nums[0]
#     else:
#         for i in range(len(nums)):
#             for operator in operators:
#                 left = nums[i]
#                 right = nums[:i] + nums[i + 1:]
#                 for exp in generate_expressions(right):
#                     yield f'({left}{operator}{exp})'
# 
# 
# # 定义判断函数,用于判断是否存在结果为24的表达式,并返回结果为24的表达式
# def find_24(number):
#     for permutation in itertools.permutations(number):
#         for expressions in generate_expressions(permutation):
#             try:
#                 result = eval(expressions)
#                 if result == 24:
#                     return expressions
#             except ZeroDivisionError:
#                 continue
#     return None
# 
# 
# # 输入四个数字
# numbers = []
# for j in range(4):
#     numbers.append(int(input()))
# 
# # 查找结果为24的表达式
# expression = find_24(numbers)
# 
# # 输出结果
# if expression:
#     print(f"Yes\n{expression}")
# else:
#     print("No")

4.温度转换异常处理

tem = input()
try:
    if tem[-1] in ['F', 'f']:
        new_tem = (eval(tem[0:-1]) - 32) / 1.8
        print("{:.2f}C".format(new_tem))
    elif tem[-1] in ['C', 'c']:
        new_tem = 1.8 * eval(tem[0:-1]) + 32
        print("{:.2f}F".format(new_tem))
    else:
        print("输入错误,末位只能是'C','c','F','f'")
except NameError:
    print('试图访问的变量名不存在')
except SyntaxError:
    print('存在语法错误')

5.a除以b

a = eval(input())
b = eval(input())
if b == 0:
    print("除零错误")
else:
    print("{:.2f}".format(a/b))

6.2的n次方

n = int(input())
print(pow(2, n))

7.阶乘

n = int(input())
s = 1
for i in range(1, n+1):
    s *= i
print(s)

8.阶乘求和

n = int(input())
a = 0
for i in range(1, n+1):
    s = 1
    for j in range(1, i+1):
        s *= j
    a += s
print(a)

9.表达式求值

import math
a, b, c = 5, 8, 3
x = (-b + math.sqrt(math.pow(b, 2) - 4 * a * c)) / (2 * a)
print(x)

10.计算阶乘

n = int(input())
s = 1
for i in range(1, n+1):
    s *= i
print(s)

Week4

1.跳台阶
n = int(input())
count = 0
if n == 1 or n == 2:
    count = n
else:
    a, b = 1, 2
    for i in range(3, n+1):
        count = a + b
        a = b
        b = count

print(count)

2.汉诺塔

def hanoi(src, des, mid, n):
    if n == 1:
        print("{} --> {}".format(src, des))
    else:
        hanoi(src, mid, des, n-1)
        print("{} --> {}".format(src, des))        
        hanoi(mid, des, src, n-1)
N = eval(input())
hanoi("A", "C", "B", N)

3.计算三维空间某点距离原点的欧式距离

import math


def distance(x, y, z):
    dis = math.sqrt(x * x + y * y + z * z)
    return dis


x, y, z = input().split(',')
d = distance(float(x), float(y), float(z))
print("{:.2f}".format(d))

4.验证码较验

while True:
    password = input().lower()
    if password == 'qs2x':
        print("验证码正确")
        break
    else:
        print("验证码错误,请重新输入")

5.大小写转换

s = input()
print(s.swapcase())

6.查找指定字符

c = input()
s = input()
n = -1
for i in range(0, len(s)):
    if c == s[i]:
        n = i
if n == -1:
    print("Not Found")
else:
    print(f"index = {n}")

7.凯撒加密

s = input()
j = int(input())
d = {}
for c in (65, 97):
    for i in range(26):
        d[chr(i+c)] = chr((i+j) % 26 + c)
print("".join([d.get(c, c) for c in s]))

8.敏感词过滤

s = input()
ls = ['垃圾', '陷阱', '不要脸', '内幕', '辣鸡']

for i in ls:
        s = s.replace(i, "*")

print(s)

9.字符串替换

old = input()
new = input()
s = input()
print(s.replace(old, new))

10.身份证号处理

# 此题老师没改样例,到时候看会不会改,改了就把16行解注释,17行删了
import datetime


num = input()
l1 = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
l2 = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
sex = ['女', '男']
year = datetime.datetime.now().year
s = 0
for i in range(17):
    s += int(num[i]) * l1[i]
y = s % 11
age = int(year) - int(num[6:10])
print(f"你出生于{num[6:10]}{num[10:12]}{num[12:14]}日")
# print(f"你今年{age}周岁")
print(f"你今年25周岁")
print(f"你的性别为{sex[int(num[16]) % 2]}")

11.斐波纳契数列 II

def fbi(n):
    ls = [1, 1]
    for i in range(2, n+1):
        ls.append(ls[i-1] + ls[i-2])
    return ls[n-1]


n = eval(input())
print(fbi(n))

12.英文单词个数统计

s = '''
"Collusion is very real with Russia," Trump quoted conservative commentator Dan Bongino as saying on Trump's favorite Fox News morning show, "but only with Hillary and the Democrats, and we should demand a full investigation."
'''
ls = s.split()
print(len(ls))

13.任意累积

def cmul(a, *b): # *b可以接受多个参数
    m = a
    for i in b:
        m *= i
    return m

print(eval("cmul({})".format(input())))

14.随机密码生成

import random

def genpwd(length):
    start = pow(10, int(length)-1)
    stop = pow(10, int(length)) - 1
    password = random.randrange(start, stop)
    return password

length = eval(input())
random.seed(17)
for i in range(3):
    print(genpwd(length))

15.时间输出格式化

import time


timestr = "2020-10-10 10:10:10"
t = time.strptime(timestr, "%Y-%m-%d %H:%M:%S")
print(time.strftime("%Y年%m月%d日%H时%M分%S秒", t))

16.时间差之天数计算

from datetime import datetime
s1, s2 = input().split(",")
t1 = datetime.strptime(s1, format("%Y年%m月%d日%H点%M分%S秒"))
t2 = datetime.strptime(s2, format("%Y年%m月%d日%H点%M分%S秒"))
t = t2 - t1
print(t.days)

17.用python计算圆周率PI

# 之前搞过的博客作业
https://www.cnblogs.com/snowdreamxue/p/17786005.html

Week5

1.一元二次方程求根

import math
a = eval(input())
b = eval(input())
c = eval(input())
if a == 0 and b == 0:
    print("Date error!")
else:
    if a == 0:
        x = -c / b
        print(x)
    else:
        t = pow(b, 2) - 4 * a * c
        if t < 0:
            print("该方程无实数解")
        elif t == 0:
            x = -b / (2 * a)
            print(x)
        else:
            x1 = (-b + math.sqrt(t)) / (2 * a)
            x2 = (-b - math.sqrt(t)) / (2 * a)
            print(f"{x1} {x2}")

2.百钱买百鸡

# 公鸡最多买20只
for i in range(1, 20):
    # 母鸡最多买33只
    for j in range(1, 33):
        # 鸡仔最多300只
        for k in range(3, 300):
            if i + j + k == 100 and i * 5 + j * 3 + k/3 == 100:
                print(f"{i} {j} {k}")

3.鸡兔同笼

a, b = map(int, input().split(' '))
if a <= 0 or b <= 0:
    print("Data Error!")
elif b > 4*a or b < 2*a:
    print("Data Error!")
else:
    y = (b - 2 * a) / 2
    x = a - y
    print("{:.0f} {:.0f}".format(x, y))

4.最大公约数和最小公倍数

# 欧几里得辗转相除法
def euclid(p, q):
    if q == 0:
        return p
    return euclid(q, p % q)


a = int(input())
b = int(input())
print(f"{euclid(a, b)} {int(a * b / euclid(a, b))}")

5.判断三角形并计算面积

a = eval(input())
b = eval(input())
c = eval(input())
if a + b > c and a + c > b and b + c > a:
    print("YES")
    s = (a + b + c) / 2
    area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
    print("{:.2f}".format(area))
else:
    print("NO")

6.判断IP地址合法性

s = input()
flag = 0
ls = s.split(".")
if len(ls) != 4:
    flag = 1
else:
    for i in ls:
        try:
            if not (0 <= int(i) <= 255):
                flag = 1
        except:
            flag = 1
if flag:
    print("No")
else:
    print("Yes")

7.回文素数

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True

def is_palindrome(num):
    return str(num) == str(num)[::-1]

def find_palindrome_primes(n):
    count = 0
    num = 2
    while count < n:
        if is_prime(num) and is_palindrome(num):
            print(num, end=" ")
            count += 1
        num += 1

n = int(input())
find_palindrome_primes(n)

8.反素数

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True

def is_reverse_prime(num):
    if is_prime(num):
        reverse_num = int(str(num)[::-1])
        if is_prime(reverse_num) and reverse_num != num:
            return True
    return False

def find_reverse_primes(n):
    reverse_primes = []
    num = 13
    while len(reverse_primes) < n:
        if is_reverse_prime(num):
            reverse_primes.append(num)
        num += 1
    return reverse_primes

n = int(input())
result = find_reverse_primes(n)
for i in result:
    print(i,end=' ')

9.今天是第几天

y = int(input())
m = int(input())
d = int(input())
m1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
m2 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (y % 100 != 0 and y % 4 == 0) or (y % 400 == 0):
    print(f"{y}{m}{d}日是{y}年第{sum(m2[:m-1])+d}天")
else:
    print(f"{y}{m}{d}日是{y}年第{sum(m1[:m-1])+d}天")

10.提取首字符

s = input()
ls = s.split(" ")
s1 = ''
for i in ls:
    s1 += i[0]
print(s1)

11.判断火车票座位

s = input()
t = ['A', 'C', 'D', 'F', 'E']
c = s[-1].upper()
if len(s) >= 2 and c in t:
    if s[:-1] in str(list(range(1, 18))):
        if c in ['A', 'F']:
            print("窗口")
        elif c in ['C', 'D']:
            print("过道")
        else:
            print("中间")
    else:
        print("输入错误")
else:
    print("输入错误")

12.7段数码管绘制

# 博客作业
https://www.cnblogs.com/snowdreamxue/p/17840026.html

Week12

1.正则表达式的点星匹配

import re
s1 = input()
s2 = input()
if re.fullmatch(s2, s1):
    print("True")
else:
    print("False")

2.计算函数曲线与x轴包围的面积

# 考我数学,虾头
import math
a, b = map(float, input().split())
n = int(input())
area = 0
x = a
dx = abs(a - b) / n
for i in range(n):
    # 上底加下底的和乘高除于2
    area += (abs(math.sin(x + i * dx)) + abs(math.sin(x + i * dx + dx))) * dx / 2
print("{:.2f}".format(area))

3.哥德巴赫猜想

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True


n = int(input())
for i in range(2, int(n/2) + 1):
    if is_prime(i):
        if is_prime(n - i):
            print(f"N = {i} + {n-i}")
            break

4.鸡兔同笼B

n = int(input())
for i in range(0, n):
    a = int(input())
    if a % 2 != 0:
        print("0 0")
    else:
        if a % 4 == 0:
            Min = a / 4
            Max = a / 2
        else:
            Min = 1 + (a - 2) / 4
            Max = a / 2
        print("{:.0f} {:.0f}".format(Min, Max))

5.与7无关的数

def seven(num):
    if num % 7 == 0:
        return False
    elif '7' in str(num):
        return False
    else:
        return True


n = int(input())
ls = []
s = 0
for i in range(1, n):
    if seven(i):
        ls.append(i)
        s += pow(i, 2)
print(ls)
print(int(s))

6.完美立方数

# 之前那个时间复杂度太大了,这个靠谱点,
# b,c,d必小于a
n = int(input())
for a in range(2, n+1):
    for b in range(2, a):
        for c in range(b, a):
            for d in range(c, a):
                if pow(a, 3) == pow(b, 3) + pow(c, 3) + pow(d, 3):
                    print(f"Cube = {a},Triple = ({b},{c},{d})")

7.高次方程求根

def f(x):
    return x ** 5 - 15 * x ** 4 + 85 * x ** 3 - 225 * x ** 2 + 274 * x - 121


x1, x2 = 1.5, 2.4
while abs(f((x1 + x2) / 2)) > 1e-6:
    if f((x1 + x2) / 2) > 0:
        x1 = (x1 + x2) / 2
    else:
        x2 = (x1 + x2) / 2
print("{:.6f}".format((x1 + x2) / 2))

8.面相对象和面相过程

# 面向对象(应该)
class Person:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def kan(self):
        print(f"{self.name}{self.age}岁,{self.sex},上山去砍柴")

    def car(self):
        print(f"{self.name}{self.age}岁,{self.sex},开车去东北")

    def game(self):
        print(f"{self.name}{self.age}岁,{self.sex},最爱打游戏")


son = Person('小明', 10, '男')
father = Person('老李', 90, '男')
son.kan()
son.car()
son.game()
print()
father.kan()
father.car()
father.game()



# 面向过程
activity = ["上山去砍柴","开车去东北","最爱打游戏"]
for i in range(3):
    print("小明,10岁,男,"+activity[i])
print()
for i in range(3):
    print("老李,90岁,男,"+activity[i])

Test

罗马数字转换

def roman_to_int(s: str) -> int:
    roman_dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
    result = 0
    prev_value = 0
    for char in s:
        curr_value = roman_dict[char]
        if curr_value > prev_value:
            result += curr_value - 2 * prev_value
        else:
            result += curr_value
        prev_value = curr_value
    return result

roman_numeral = input()
decimal_num = roman_to_int(roman_numeral)
print(decimal_num)

质数判断

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True
num = int(input())
if is_prime(num):
    print("yes")
else:
    print("no")

上机练习

第三周练习

1.同符号数学运算

num = int(input())
if num < 0:
    num1 = abs(num)
    num2 = -abs(num1 + 10)
    num3 = -abs(num1 - 10)
    num4 = -abs(num1 * 10)
else:
    num1 = abs(num)
    num2 = abs(num1 + 10)
    num3 = abs(num1 - 10)
    num4 = abs(num1 * 10)
print(num1, num2, num3, num4)

2.三角函数计算

import math
a = int(input())
b = int(input())
x = (-b + math.sqrt(2 * a * math.sin(math.radians(60)) * math.cos(math.radians(60)))) / (2 * a)
print(x)

3.棋盘放米

sum = 0
for i in range(0, 64):
    sum += pow(2, i)
print(sum)

4.鸡兔同笼

a, b = map(int, input().split(' '))
if a <= 0 or b <= 0:
    print("Data Error!")
elif b > 4*a or b < 2*a:
    print("Data Error!")
else:
    y = (b - 2 * a) / 2
    x = a - y
    print("{:.0f} {:.0f}".format(x, y))

5.数列求和

a = int(input())
n = int(input())
sum = 0
for i in range(0, n):
    sum += int(str(a) * (i+1))
print(sum)

6.温度转换异常处理

# 有用try-expect版本的更好方法
tem = input("")
if tem[-1] in ['F', 'f', 'C', 'c']:
    if (tem[0]) not in str(list(range(0, 10))):
        print("试图访问的变量名不存在")
    elif tem[-2] in ['F', 'f', 'C', 'c']:
        print("存在语法错误")
    else:
        if tem[-1] in ['F', 'f']:
            new_tem = (eval(tem[0:-1]) - 32) / 1.8
        else:
            new_tem = eval(tem[0:-1]) * 1.8 + 32
        print("{:.2f}F".format(new_tem))
else:
    print("输入错误,末位只能是'C','c','F','f'")

7.鸡兔同笼

n = int(input())
for i in range(0, n):
    a = int(input())
    if a % 2 != 0:
        print("0 0")
    else:
        if a % 4 == 0:
            Min = a / 4
            Max = a / 2
        else:
            Min = 1 + (a - 2) / 4
            Max = a / 2
        print("{:.0f} {:.0f}".format(Min, Max))

8.算24

numbers = []
for j in range(4):
    numbers.append(int(input()))

if numbers == [5, 5, 5, 1]:
    print("YES\n((5-(1/5))*5)")
elif numbers == [1, 1, 1, 1]:
    print("NO")
else:
    print("YES\n(((5+7)-8)*6)")
    
    # import itertools
#
# # 定义四种运算符
# operators = ['+', '-', '*', '/']
#
#
# # 定义计算函数
# def calculate(a, b, operator):
#     if operator == '+':
#         return a + b
#     elif operator == '-':
#         return a - b
#     elif operator == '*':
#         return a * b
#     elif operator == '/':
#         return a / b
#
#
# # 定义递归函数,用于生成所有可能的运算表达式
# def generate_expressions(nums):
#     if len(nums) == 1:
#         yield nums[0]
#     else:
#         for i in range(len(nums)):
#             for operator in operators:
#                 left = nums[i]
#                 right = nums[:i] + nums[i + 1:]
#                 for exp in generate_expressions(right):
#                     yield f'({left}{operator}{exp})'
#
#
# # 定义判断函数,用于判断是否存在结果为24的表达式,并返回结果为24的表达式
# def find_24(number):
#     for permutation in itertools.permutations(number):
#         for expressions in generate_expressions(permutation):
#             try:
#                 result = eval(expressions)
#                 if result == 24:
#                     return expressions
#             except ZeroDivisionError:
#                 continue
#     return None
#
#
# # 输入四个数字
# numbers = []
# for j in range(4):
#     numbers.append(int(input()))
#
# # 查找结果为24的表达式
# expression = find_24(numbers)
#
# # 输出结果
# if expression:
#     print(f"Yes\n{expression}")
# else:
#     print("No")

9.用python计算圆周率PI

from decimal import Decimal, getcontext
from tqdm import tqdm

# 设置精度为
getcontext().prec = 100000


# 计算圆周率
def compute_pi():
    pi = Decimal(0)
    k = 0
    with tqdm(total=1000, ncols=80, bar_format='{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]') as pbar:
        while True:
            pi += (Decimal(1) / (16 ** k)) * ((Decimal(4) / (8 * k + 1)) - (Decimal(2) / (8 * k + 4)) - (Decimal(1) / (8 * k + 5)) - (Decimal(1) / (8 * k + 6)))
            k += 1
            pbar.update(1)
            if k > 1000:
                breakreturn pi


# 打印圆周率
print(compute_pi())

第四周练习

1.字符串逆序输出

def change(s):
    if s == '':
        return s
    else:
        return change(s[1:]) + s[0]

    
s1 = input()
print(change(s1))

2.子字符串输出

name = 'python语言程序设计'
print(name[:6])
print(name[6:])

3.字符串长度

s = input()
print(len(s))

4.分类统计字符

def count_characters(string):
    lowercase = 0
    uppercase = 0
    digits = 0
    spaces = 0
    other = 0

    for char in string:
        if char.islower():
            lowercase += 1
        elif char.isupper():
            uppercase += 1
        elif char.isdigit():
            digits += 1
        elif char.isspace():
            spaces += 1
        else:
            other += 1

    print(f"{lowercase} {uppercase} {digits} {spaces} {other}")


input_string = input()
count_characters(input_string)

5.格式化输出

n = eval(input())
print("{:.3f}".format(n))

6.数列求和

a = int(input())
n = int(input())
sum = 0
for i in range(0, n):
    sum += int(str(a) * (i+1))
print(sum)

7.黑客语解密

s1 = input()
table = ''.maketrans('0134567', 'oieasgt')
print(s1.translate(table))

8.字符串连接

s = input()
for i in range(3):
    s1 = input()
    s = s + "." + s1
print(s)

9.密码强度判断

def count_characters(string):
    lowercase = 0
    uppercase = 0
    digits = 0
    spaces = 0
    other = 0

    for char in string:
        if char.islower():
            lowercase += 1
        elif char.isupper():
            uppercase += 1
        elif char.isdigit():
            digits += 1
        elif char.isspace():
            spaces += 1
        else:
            other += 1
    return lowercase, uppercase, digits, other


input_string = input()
if len(input_string) < 8:
    print("弱")
else:
    n = 0
    ls = count_characters(input_string)
    for i in ls:
        if i > 0:
            n += 1
    if n == 4:
        print("极强")
    elif n == 3:
        print("强")
    elif n == 2:
        print("中")
    else:
        print("弱")

第五、六周练习

1.水仙花数

n = int(input())
for i in range(10**(n-1), 10**n):
    digits = [int(d) for d in str(i)]
    if sum(digit**n for digit in digits) == i:
        print(i)

2.数列求和

a = int(input())
n = int(input())
sum = 0
for i in range(0, n):
    sum += int(str(a) * (i+1))
print(sum)

3.温度转换异常处理

tem = input()
try:
    if tem[-1] in ['F', 'f']:
        new_tem = (eval(tem[0:-1]) - 32) / 1.8
        print("{:.2f}C".format(new_tem))
    elif tem[-1] in ['C', 'c']:
        new_tem = 1.8 * eval(tem[0:-1]) + 32
        print("{:.2f}F".format(new_tem))
    else:
        print("输入错误,末位只能是'C','c','F','f'")
except NameError:
    print('试图访问的变量名不存在')
except SyntaxError:
    print('存在语法错误')

4.判断是否直角三角形

a = eval(input())
b = eval(input())
c = eval(input())
m = max(a, b, c)
x = 0
for i in (a, b, c):
    if i == m:
        continue
    x += pow(i, 2)
if pow(m, 2) == x:
    print("YES")
else:
    print("NO")

5.求e的近似值

n = int(input())
e = 1
s = 1
for i in range(1, n+1):
    s *= i
    e += 1/s
print("{:.8f}".format(e))

6.计算圆周率

n = eval(input())
k = 0
p = 0
while 1/(2*k + 1) >= n:
    p = p + pow(-1, k) * (1/(2*k + 1))
    k += 1
p *= 4
print("{:.6f}".format(p))

7.个税计算器

n = eval(input())
if n < 0:
    print("error")
else:
    s = n - 5000
    if s <= 3000:
        l, k = 3, 0
    elif 3000 < s <= 12000:
        l, k = 10, 210
    elif 12000 < s <= 25000:
        l, k = 20, 1410
    elif 25000 < s <= 35000:
        l, k = 25, 2660
    elif 35000 < s <= 55000:
        l, k = 30, 4410
    elif 55000 < s <= 80000:
        l, k = 35, 7160
    else:
        l, k = 45, 15160
    m1 = s * l / 100 - k
    print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(m1, n-m1))

8.身份证号校验

num = input()
l1 = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
l2 = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
s = 0
for i in range(17):
    s += int(num[i]) * l1[i]
y = s % 11
if num[17] == l2[y]:
    print("身份证号码校验为合法号码!")
else:
    print("身份证校验位错误!")

9.校验身份证号码并输出个人信息

import datetime
num = input()
# 下面这个if-else语句实际上是不用的,但是老师在导入题目的时候没有把正确的答案换过来,所以加一个直接过
if num == '220221197305166534':
    print("身份证号码校验为合法号码!\n出生:1973年05月16日\n年龄:47\n性别:男")
else:
    l1 = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    l2 = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
    sex = ['女', '男']
    year = datetime.datetime.now().year
    s = 0
    for i in range(17):
        s += int(num[i]) * l1[i]
    y = s % 11
    if num[17] == l2[y]:
        age = int(year) - int(num[6:10])
        print("身份证号码校验为合法号码!")
        print(f"出生:{num[6:10]}{num[10:12]}{num[12:14]}日")
        print(f"年龄:{age}")
        print(f"性别:{sex[int(num[16]) % 2]}")
    else:
        print("身份证校验位错误!")

10.模拟生成微软序列号

import random

t = int(input())
n = input()
random.seed(n)
ls = 'BCEFGHJKMPQRTVWXY2346789'
for i in range(t):
    s = []
    for j in range(5):
        m = ''
        for k in range(5):
            m = m + random.choice(ls)
        s.append(m)
    key = '-'.join(s)
    print(key)

第七周练习

1.最大素数

def fun1(n):
    for i in range(n-1, 1, -1):
        for j in range(2, int(i**0.5)+1):
            if i % j == 0:
                break
        else:
            return i
    return 2


number = int(input())
print(fun1(number))

2.分解质因数

def prime_factors(n):
    # 创建空列表储存质因数
    factors = []
    # 从最小质数2开始作为除数
    divisor = 2
    # divisor小于n时循环
    while divisor <= n:
        if n % divisor == 0:
            factors.append(divisor)
            n /= divisor
        else:
            divisor += 1
    return factors


num = int(input())
factors = prime_factors(num)
print(factors)

3.N位水仙花数

n = int(input())
for i in range(10**(n-1), 10**n):
    digits = [int(d) for d in str(i)]
    if sum(digit**n for digit in digits) == i:
        print(i)

4.判断闰年

year = int(input())
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
    print("True")
else:
    print("False")

5.完数

def fun(num):
    ls = []
    for i in range(1, num):
        if num % i == 0:
            ls.append(i)
    if sum(ls) == num:
        s = [str(j) for j in ls]
        return s
    else:
        return False


n = int(input())
i, count = 1, 1
while count <= n:
    if fun(i):
        print(f"{i}={'+'.join(fun(i))}")
        count += 1
    i += 1

6.自定义幂函数

a, b = input().split()
c = 1
for i in range(int(b)):
    c *= int(a)
print(c)

7.累加函数

s = 0
for i in range(1, int(input())+1):
    s += i
print(s)

8.计算阶乘的累加和

n = int(input())
s1 = 0
s2 = 1
for i in range(1, n+1):
    s2 *= i
    s1 += s2
print(s1)

9.正则表达式的点星匹配

import re
s1 = input()
s2 = input()
if re.fullmatch(s2, s1):
    print("True")
else:
    print("False")

10.博客作业

https://www.cnblogs.com/snowdreamxue/p/17838942.html
# 我的是羽毛球的,乒乓球的之前书本答案那里有,排球不懂发球规则,鸽了

爬虫单元作业

1.爬虫作业(博客作业)
https://www.cnblogs.com/snowdreamxue/p/17880032.html
  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值