1.编写程序,逐个读入N个整数 (以读入“.”表示输入结束),求这组数值的算术和、算术平均值和标准差。标准差的计算公式为σ = √[ Σ (xi - μ)² / N ],其中,N 为数值的个数,μ为这组数值的算术平均值。¶
import math
# 输入整数,以'.'结束输入
a = []
while True:
try:
num = input("请输入一个整数 (输入'.'结束输入): ")
if num == '.':
break
a.append(int(num))
except ValueError:
print("请输入有效整数!")
# 计算算术和
sum_data = sum(a)
# 计算算术平均值
mean = sum_data / len(a)
# 计算标准差
v = sum((x - mean) ** 2 for x in a) / len(a)
s = math.sqrt(v)
print(f"算术和: {sum_data}")
print(f"算术平均值: {mean}")
print(f"标准差: {s}")
2.编写程序,输入一串正整数,并使用折半递归的方法求它们的和。例如:输入一串正整数:3,4,5,2,3,1,4,2,1,2,4,9,3 和为:43
def a(s, l, r): # a 代表自定义的函数,s 代表 arr,l 代表 start,r 代表 end
if l == r: # 如果 l 和 r 相等,表示只有一个元素需要求和
return s[l]
m = (l + r) // 2 # 计算中间索引,将列表拆分为两半
left = a(s, l, m) # 递归计算左半部分的和
right = a(s, m + 1, r) # 递归计算右半部分的和
return left + right # 返回左半部分和右半部分的和
i = input("输入一串正整数,用逗号分隔:") # 接受输入的一串正整数
n = [int(x) for x in i.split(",")] # 将输入的字符串分割成整数列表
if n: # 如果输入了整数
t = a(n, 0, len(n) - 1) # 调用 a 函数计算整数列表的总和,从索引 0 到 len(n) - 1
print("和为:", t) # 打印计算出的和
else:
print("没有输入任何整数。") # 如果没有输入整数,打印提示信息
2.1 若使用迭代的方法:¶
# 输入一串正整数,以逗号分隔
string = input("请输入一串正整数,以逗号分隔:")
a = [int(x) for x in string.split(',')] # 将输入的字符串分割成整数列表。
#使用split(',')方法将输入的字符串根据逗号分隔成多个部分,然后使用列表推导式将这些部分转换为整数,并将它们存储在名为a的列表中。
if len(a) == 0: # 检查是否没有输入任何数字
print("没有输入任何数字")
else:
total = 0 # 初始化一个变量来存储总和
# 遍历整数列表,将它们逐个累加到总和
for i in a: # 遍历整数列表a中的每个整数,并将当前整数存储在变量i中。
total += i # 在每次迭代中,将当前整数i添加到total变量中,以累积它们的和。
print("和为:", total)
3.编写一个revString(s) 函数,将一串英文句子反序输出。其中参数s为原字符串,函数返回反序后的字符串。例如:
输入: There's only one corner of the universe you can be sure of improving, and that's your own self.
输出: .fles nwo ruoy s'taht dna , gnivorpmi fo erus eb nac uoy esrevinu eht fo renroc enoylno s'erehT¶
def revString(s):
# 使用字符串切片来实现反转
reversed = s[::-1]
return reversed
input = "There's only one corner of the universe you can be sure of improving, and that's your own self."
output = revString(input)
print(output)
4.编写程序,根据给定的调查统计结果:¶
编号 | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
---|
喝茶 | √ | √ | √ | | | | √ | √ | √ | √ | √ | | | | | | | | | | | | | √ | √ | |
喝咖啡 | √ | | √ | √ | | √ | | | √ | | | √ | √ | | | √ | √ | | | √ | √ | | | √ | √ | √ |
计算并输出如下所示的喝茶和喝咖啡样本统计相依表。 |¶
# 定义调查统计结果 定义字典s
s = {
'a': 'tea', 'b': 'tea', 'c': 'tea', 'd': 'tea', 'e': 'tea', 'f': 'tea', 'g': 'tea',
'h': 'tea', 'i': 'tea', 'j': 'tea', 'k': 'tea', 'l': 'tea', 'm': 'tea', 'n': 'tea',
'o': 'tea', 'p': 'tea', 'q': 'tea', 'r': 'tea', 's': 'tea', 't': 'tea', 'u': 'tea',
'v': 'tea', 'w': 'tea', 'x': 'tea', 'y': 'tea', 'z': 'tea',
'a': 'coffee', 'c': 'coffee', 'e': 'coffee', 'g': 'coffee', 'i': 'coffee', 'k': 'coffee',
'm': 'coffee', 'o': 'coffee', 'q': 'coffee', 's': 'coffee', 'u': 'coffee', 'w': 'coffee',
'y': 'coffee'
}
# 初始化统计表 a,是一个嵌套字典,用于存储不同饮品('tea' 或 'coffee')之间的关系。
a = {
'tea': {'coffee': 0, '/coffee': 0},
'/tea': {'coffee': 0, '/coffee': 0}
}
# 统计样本。
for t,c in s.items(): #遍历字典s中的每个字母('a' 到 'z'),并根据它们对应的饮品('tea' 或 'coffee')更新统计表a。
if t.isalpha(): #如果字母是字母字符(.isalpha()用于检查),则根据饮品类型将相应的统计值递增。
if c == 'tea': #检查饮品类型 c 是否为 'tea'。如果 c 是 'tea',则执行下面的代码块。
a['tea']['coffee'] += 1 #这一行代码会将统计表 a 中的 'tea' 行与 'coffee' 列的计数加一,表示在喝茶的情况下也喝了咖啡。
elif c == 'coffee': #检查c是不是‘coffee’
a['/tea']['coffee'] += 1 #这一行代码会将统计表 a 中的 '/tea' 行与 'coffee' 列的计数加一,表示在喝咖啡的情况下也喝了茶。
# 输出统计表。 {}中的变量表示从统计表中提取的数据,| 和 - 用于绘制表格边框
print("| coffee|/coffee|")
print("----------------------")
print(f" tea| {a['tea']['coffee']}| {a['tea']['/coffee']}| {a['tea']['coffee'] + a['tea']['/coffee']}")
print(f"/tea| {a['/tea']['coffee']}| {a['/tea']['/coffee']}| {a['/tea']['coffee'] + a['/tea']['/coffee']}")
print("----------------------")
print(f" | {a['tea']['coffee'] + a['/tea']['coffee']}| {a['tea']['/coffee'] + a['/tea']['/coffee']}| {a['tea']['coffee'] + a['tea']['/coffee'] + a['/tea']['coffee'] + a['/tea']['/coffee']}")
5.编写程序,输人一个整数,输出其对应的中文数字串。例如: 输入整数:-2653 ; 中文数字串:负贰陆伍叁¶
def a(n):
chinese = {
0: "零", 1: "壹", 2: "贰", 3: "叁", 4: "肆", 5: "伍",
6: "陆", 7: "柒", 8: "捌", 9: "玖", '-': "负"
}
if n < 0:
s = str(n)[1:] # 移除负号,取绝对值
result = chinese['-']
else:
s = str(n)
result = ""
for i in s:
result += chinese[int(i)]
return result
input_n = int(input("输入整数: "))
c = a(input_n)
print(f"中文数字串: {c}")
6.编写程序,实现输人省份,能够输出该省份的城市列表;给出城市,能够反查所属省份。可以使用表3-8中所列的部分省市列表来完成。
表3-8部分省份城市列表:¶
省份 | 城市 |
---|
广东省 | 广州市 东莞市 中山市 深圳市 |
河南省 | 郑州市 南阳市 新乡市 周口市 |
江苏省 | 苏州市 徐州市 盐城市 无锡市 南京市 镇江市 |
山东省 | 济南市 青岛市 临沂市 |
例如,输入:山东省 输出:济南市 青岛市 临沂市
再例如,输入:南京市 输出:江苏省
# 创建省份和城市的映射字典
c = { # c:省份对应的城市
"广东省": ["广州市", "东莞市", "深圳市", "中山市"],
"河南省": ["郑州市", "南阳市", "新乡市"],
"江苏省": ["苏州市", "徐州市", "无锡市", "南京市", "镇江市"],
"山东省": ["济南市", "青岛市", "临沂市"],
}
s = {} # s:城市对应的省份
for province, cities in c.items():
for city in cities:
s[city] = province
# 用户输入
user_input = input("请输入省份或城市: ")
if user_input in c: # 如果输入是一个省份,输出该省份的城市列表
cities = c[user_input]
print("城市: ", " ".join(cities))
elif user_input in s: # 如果输入是一个城市,输出所属省份
province = s[user_input]
print("所属省份: ", province)
else:
print("找不到相关信息。")
7.编写程序,完成以下内容。
(1)将字符串“k1:1| k2:2| k3:3| k4:4”,处理成 Python 字典。
>>> d
{'kl': 1, 'k2': 2, 'k3': 3, 'k4': 4}
(2)将由(1)得到的字典,组织成索引名为“value”的1行的DataFrame数据df。
>>> df
kl k2 k3 k4
value 1 2 3 4
(3)求由(2)得到的df数据 value 序列的均值,得2.5。
import pandas as pd
# (1) 将字符串处理成 Python 字典
data = "k1:1| k2:2| k3:3| k4:4"
data = data.replace("|", "").split() # 将字符串处理成一个列表
dictionary = {} # 创建一个空字典
# 将处理后的列表转换为字典
for i in data:
key, value = i.split(":") # 使用 ":" 分割键和值
dictionary[key] = int(value) # 将键值对添加到字典中,注意将值转换为整数类型
# (2) 将字典组织成 DataFrame
df = pd.DataFrame([dictionary]) # 使用 Pandas 创建一个包含字典数据的 DataFrame
# (3) 求 DataFrame 数据的均值
mean_value = df.mean(axis=1) # 计算 DataFrame 中每行的均值。 mean_value 包含了每行的均值,即每个键对应的均值。
print(mean_value)
8.编写程序,生成一个包含50个在0到 100之间的随机整数的列表(提示:可使用numpy.random.randint()函数来产生),然后删除其中所有奇数(提示:可考虑从后向前删除)
import numpy as np
# 生成包含50个在0到100之间的随机整数的列表
a = np.random.randint(0, 101, 50)
# 使用列表推导删除所有奇数:使用列表推导式创建一个新的列表s,其中包含了a中的所有偶数。
s = [x for x in a if x % 2 == 0] #检查每个元素是否是偶数(余数为0),如果是偶数,则将其包含在s列表中
# 输出删除奇数后的列表
print("随机偶数列表:", s)
9.找一段英文,编写程序,对文中所出现单词的频次进行统计,并按照单词频次从高到低输出频次统计表。统计时,需区分大小写。
text = "This is a sample text. This text is just a sample. Sample text is important."
# 分割文本为单词
words = text.split()
# 创建一个空字典用于存储单词频次
a = {}
# 统计单词频次
for word in words:
# 去除标点符号
word = word.strip('.,!?"\'')
# 更新字典中的频次,区分大小写
if word in a:
a[word] += 1
else:
a[word] = 1
# 按频次从高到低排序
s = dict(sorted(a.items(), key=lambda item: item[1], reverse=True))
# 输出频次统计表
print("单词频次统计表:")
for word, count in s.items():
print(f"{word}: {count}")
9.1 按首次出现开始算,不按频次排序
# 不按频次,而按首次出现
from collections import Counter
text = "This is a sample text. This text is just a sample. Sample text is important."
# 分割文本为单词并统计频次
words = text.split()
word_count = Counter(words)
# 输出频次统计表
print("单词频次统计表:")
for word, count in word_count.items():
print(f"{word}: {count}")
9.2 不排除标点符号,也统计标点
#法一:
from collections import Counter
# 输入英文文本
text = "This is a sample text . This text is just a sample . Sample text is important ."
# 分词并统计单词频次
words = text.split()
a = Counter(words)
# 按照频次从高到低排序
s = dict(sorted(a.items(), key=lambda item: item[1], reverse=True))
# 输出频次统计表
print("单词频次统计表:")
for word, count in s.items():
print(f"{word}: {count}")