1
def f(n):
# 根据n的值分类讨论
if n < 1:
return n
elif 1 <= n < 10:
return 2*n-1
else:
return 3*n-11
print(f(5))
2
def is_palindrome(s):
# i循环字符串s的一半
for i in range(len(s)//2):
# i与len(s) - i - 1对称,判断回文
if s[i] != s[len(s) - i - 1]:
return False
return True
print(is_palindrome("abc"))
print(is_palindrome("abccba"))
print(is_palindrome("abcba"))
print(is_palindrome("雾锁山头山锁雾"))
3
def string_count(s: str, sub: str, start: int = 0, end: int = None) -> int:
"""
返回给定字符串内包含的待搜索字符串的个数
参数说明
s: 给定字符串
sub: 待搜索字符串
start: 从哪里开始搜索,为字符串索引。如果不传入则为0
end: 在哪里终止搜索,为字符串索引。如果不传入或者传入的数值超过给定字符串长度,则默认等于给定字符串长度
返回值说明
返回一个int型正整数
"""
count = 0
# find函数如果找不到则返回-1
index = s.find(sub, start, end)
while index != -1:
count += 1
# 使用find函数从index + len(sub)到end里查找sub
index = s.find(sub, index + len(sub), end)
return count
help(string_count)
print(string_count.__doc__)
print(string_count('aaaaaaa', 'aa'))
print(string_count('aaaaaaa', 'aa', 0, 2))
print(string_count('aaaaaaab', 'aab'))
4
def f(n):
# 返回一个元组
return max(n), min(n), len(n)
s1 = [9, 8, 7, 3, 2, 1, 55, 6]
s2 = ["apple", "pear", "melon", "kiwi"]
s3 = "TheQuickBrownFox"
x, y, z = f(s1)
print(f"最大值是{x}\n最小值是{y}\n元素个数是{z}")
print(f(s1))
x, y, z = f(s2)
print(f"最大值是{x}\n最小值是{y}\n元素个数是{z}")
print(f(s2))
x, y, z = f(s3)
print(f"最大值是{x}\n最小值是{y}\n元素个数是{z}")
print(f(s3))
5
def is_prime(x):
# 传入的x小于等于一,不是素数
if x <= 1:
return False
# x**5是为了减少循环次数
for i in range(2, int(x**0.5) + 1):
# 如果能被除尽则不是素数,返回False
if x % i == 0:
return False
return True
m, n = map(int, input("请输入m和n:").split())
prime_sum = 0
for num in range(m, n + 1):
if is_prime(num):
prime_sum += num
print(f"{m}到{n}之间所有素数的和为:{prime_sum}")
6
def sum_int(*args):
total = 0
for arg in args:
# isinstance用于检查参数是否为整数
if isinstance(arg, int):
total += arg
return total
result = sum_int(5, 10, 20, "23", "abc", 30)
print(result)
7
def akeman(m, n):
# 根据m和n的值判断,依照akeman函数的规则进行递归
if m == 0:
return n+1
elif m > 0 and n == 0:
return akeman(m-1, 1)
elif m > 0 and n > 0:
return akeman(m-1, akeman(m, n-1))
print(akeman(2, 3))
8
persons = [{"name": "SmallBamboo, "age": 19},
{"name": "SmallBambop", "age": 18},
{"name": "SSmallBamboo", "age": 17},
{"name": "SmallBambooo", "age": 16}]
# key=lambda x: (x["name"], -x["age"])是自定义排序规则
# 其中lambda匿名函数,"name"升序排序,并且如果"name"键的值相同时,根据"age"降序排序
sorted_persons = sorted(persons, key=lambda x: (x["name"], -x["age"]))
print(sorted_persons)
9
# time_formatter.py
from datetime import datetime # 导入 datetime 模块
def format_time_difference(show_time_str, current_time_str):
# 将传入的时间字符串转换为 datetime 对象
show_time = datetime.strptime(show_time_str, "%Y-%m-%d %H:%M:%S")
current_time = datetime.strptime(current_time_str, "%Y-%m-%d %H:%M:%S")
# 计算时间差
time_diff = current_time - show_time
# 如果显示时间在当前时间之后,返回"未来时间"
if current_time < show_time:
return "未来时间"
# 如果时间差大于一年,返回年月格式的字符串
elif time_diff.days > 365:
return "{:%Y年%#m月}".format(show_time)
# 如果时间差大于一个月,返回年月日格式的字符串
elif time_diff.days > 30:
return "{:%Y年%#m月%#d日}".format(show_time)
# 如果时间差大于一天,返回几天前
elif time_diff.days > 1:
return f"{time_diff.days}天前"
# 如果时间差大于一小时,返回几小时前
elif time_diff.seconds > 3600:
return f"{time_diff.seconds // 3600}小时前"
# 如果时间差大于一分钟,返回几分钟前
elif time_diff.seconds > 60:
return f"{time_diff.seconds // 60}分钟前"
# 否则返回几秒前
else:
return f"{time_diff.seconds}秒前"
from time_formatter import format_time_difference
print(f"2018-03-01 09:00:00->2020-02-29 09:30:30: "
f"{format_time_difference('2018-03-01 09:00:00', '2020-02-29 09:30:30')}")
print(f"2020-01-01 09:00:00->2020-02-29 09:30:30: "
f"{format_time_difference('2020-01-01 09:00:00', '2020-02-29 09:30:30')}")
print(f"2020-02-01 09:00:00->2020-02-29 09:30:30: "
f"{format_time_difference('2020-02-01 09:00:00', '2020-02-29 09:30:30')}")
print(f"2020-02-29 08:00:00->2020-02-29 09:30:30: "
f"{format_time_difference('2020-02-29 08:00:00', '2020-02-29 09:30:30')}")
print(f"2020-02-29 09:29:20->2020-02-29 09:30:30: "
f"{format_time_difference('2020-02-29 09:29:20', '2020-02-29 09:30:30')}")
print(f"2020-02-29 09:29:50->2020-02-29 09:30:30: "
f"{format_time_difference('2020-02-29 09:29:50', '2020-02-29 09:30:30')}")
print(f"2020-02-29 09:30:40->2020-02-29 09:30:30: "
f"{format_time_difference('2020-02-29 09:30:40', '2020-02-29 09:30:30')}")
10
import numpy as np
# 使用np.array创建numpy数组
a1 = np.array([1, 2, 3])
b1 = np.array([14, 5, 6])
a2 = np.array([[1, 2], [3, 4]])
b2 = np.array([[5, 6], [7, 8]])
# 使用np.dot进行按位置相乘
print(np.dot(a1, b1))
print(np.dot(a2, b2))
实验总结
在本次实验中我学到了一些新东西,例如在实验3中,可以使用 函数名.__doc__查看函数的说明,也可以用 help(函数名)查看。
在实验9中我对datetime模块不是很了解,一开始不知道怎么处理时间的计算,在实验中主要用到了datetime.datetime,对于datetime模块还可以使用datetime.timedelta进行日期的计算(加减),在实验中只简单的使用datetime的加减进行判断,输出 timedelta类的days,seconds属性可以查看时间差(时间差为timedelta类)的天数和秒数。
在实验10中我学会了使用conda命令安装numpy,之前一直都是用pip install安装的,现在可以先用conda切换到目前的环境:conda activate pystu36,然后使用conda install numpy安装numpy
© 版权声明
若无特殊说明,文章版权归作者所有,请勿转载至任何平台。
THE END
暂无评论内容