一、简答题
1、36.统计单词
小明想编写一个程序来统计一段文字中每个单词出现的次数,这样可以方便他更好的记忆文章内容。他希望能够输入一段文字后,程序就输出每个单词及其出现的次数。
请在下面程序段空白处填上正确内容以实现程序功能。
要求:
输入一段文字,程序将统计每个单词出现的次数并输出每个单词及其出现的次数。
样例:
请输入一段文字:the quick brown fox jumps over the lazy dog
文字中每个单词出现的次数如下:
the: 2
quick: 1
brown: 1
fox: 1
jumps: 1
over: 1
lazy: 1
dog: 1
程序如下:
text = input("请输入一段文字:")
word_count = {}
words = text.split()
for word in ① :
if word in word_count:
②
else:
③
print("文字中每个单词出现的次数如下:")
for word, count in word_count.items():
print("{}: {}". ④ (word, count))
解析:
小明想要编写一个程序来统计一段文字中每个单词出现的次数。根据题目描述和提供的程序框架,我们可以按照以下步骤来完成程序:
- 首先,通过
input()
函数获取用户输入的文本。 - 创建一个空字典
word_count
来存储单词及其出现的次数。 - 使用
split()
函数将文本分割成单词列表words
。 - 遍历
words
列表中的每个单词word
。 - 检查
word
是否已经在word_count
字典中。- 如果在,则将对应的计数加1。
- 如果不在,则将该单词及其计数1添加到字典中。
- 使用循环遍历字典中的每个单词及其计数,并打印出来。为了格式化输出,使用字符串的
format()
方法。
根据上述逻辑,我们可以填充空白处的代码:
- ①处应填写
words
,因为我们正在遍历单词列表。 - ②处应填写
word_count[word] += 1
,用于增加已存在单词的计数。 - ③处应填写
word_count[word] = 1
,用于为新的单词设置计数为1。 - ④处应填写
format
,因为我们需要格式化输出单词和计数的字符串。具体地,应该使用"{}: {}".format(word, count)
来进行格式化。
2、37.Base64 编码
小王在学习信息技术时,对编码产生了浓厚的兴趣,她听老师说Base64 编码是计算机常见的一种编码方式,于是她决定尝试自己编写一个简单的Base64 编码工具。经过她的研究,发现Base64 编码规则是把 3 个字节(24 位)的数据按 6 位一组分成4组(24÷6=4),然后将每组数据分别转换为十进制,根据图 1 将这些十进制数所对应的字符连接,即为 Base64 编码。
编写一个 Python 程序,实现上述功能。程序运行时,输入若干个字符(个数必须是 3 的倍数),输出 Base64 编码。实现上述功能的 Python 代码如下,请在划线处填入合适的代码。
s1=input("请输入编码字符:")
tmp=0
s=""
ans=""
Base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for x in s1:
①
t=""
for i in range(8): #将十进制数 n 转换为 8 位二进制
r=n%2
②
n=n//2
s=s+t
for i in range(len(s)): #6位二进制一组转换成十进制,查找 Base64 对应字符
③
if i%6==5:
ans=ans+Base64[tmp]
④
print("Base64编码:",ans)
解析:
这是一个关于Base64编码的Python程序填空题目。根据题目描述和提供的代码框架,我们需要完成以下几个步骤来实现Base64编码的功能。
- 获取输入字符的ASCII值。在Python中,我们可以使用内置的
ord()
函数来获取字符的ASCII值。因此,在①处应填写n=ord(x)
。 - 将每个字符的ASCII值转换为二进制数,并将这些二进制数添加到字符串中。我们可以使用循环和取余操作来实现这一功能。在②处应填写将二进制数添加到字符串中的代码,如
t=t+str(r)
。 - 将每6位二进制数转换为十进制数,并查找Base64对应字符。我们可以使用Python的
int()
函数和二进制数的特性来完成这一转换。在③处应填写将二进制数转换为十进制数的代码,如tmp=int(s[i:i+6],2)
。同时,要注意处理最后一个字符如果不足6位的情况。 - 根据转换得到的十进制数,在Base64字符串中找到对应的字符,并拼接成最终的Base64编码结果。在④处应填写拼接编码结果的代码,如
ans=ans+Base64[tmp]
,注意这里的方括号应为英文输入法下的方括号。
完成以上步骤后,程序就能实现将输入的字符按照Base64编码规则进行编码,并输出Base64编码结果的功能。
3、38.找缺失数
在一个学校的年度校园活动中,组织者需要为参与者分配不同的编号,以便进行抽奖和其他活动。他们决定使用长度为n-1的列表a来存储参与者的编号,这些编号是从1到n的整数,且没有重复。现在,他们需要找出在区间[1,n]范围内没有出现在列表a中的那个整数,以便为这个编号进行特别的奖励。如当n=5时,a[0]=3,a[1]=4,a[2]=1,a[3]=5时,列表a中缺失的数为2。
python代码如下,请在划线处填上合适的代码.
from random import randint
n=int(input("请输入一个整数n:"))
a=[]
c=1
while c<n:
x=randint(1,n)
if ① :
a.append(x)
②
s=n*(n+1)//2 #s得到1~n的累加和
for i in range(n-1):
③
print(a)
print("列表中缺失的数为:",s)
解析:
这是一个找缺失数的问题。首先,我们需要生成从1到n的随机数并存储在列表a中,但我们要确保每个数只出现一次。然后,我们计算从1到n的累加和s。接下来,我们需要找到在列表a中未出现的数字,即缺失的数字。
对于划线处①,我们需要检查随机数x是否已经在列表a中,如果不在,则将其添加到列表a中。这可以通过简单的条件判断实现:if x not in a:
。
对于划线处②,我们在循环中需要逐步增加c的值以确保我们生成n个随机数。因此,这里应该填写:c += 1
。
对于划线处③,我们需要找到缺失的数字。一种方法是计算从1到n的累加和s,然后减去列表a中所有数字的总和。这可以通过missing_num = s - sum(a)
来实现。另一种方法是通过集合的差集运算来找到缺失的数字:missing_num = set(range(1, n+1)) - set(a)
。这两种方法都可以得到正确的结果。
所以,完整的代码应该是这样的:
from random import randint
n=int(input("请输入一个整数n:"))
a=[]
c=1
while c<n:
x=randint(1,n)
if x not in a: # 检查随机数x是否已经在列表a中
a.append(x)
c += 1 # 逐步增加c的值
s=n*(n+1)//2 #s得到1~n的累加和
missing_num = s - sum(a) # 或者使用集合set求差集的方式:missing_num = set(range(1, n+1)) - set(a)
print(a)
print("列表中缺失的数为:", missing_num)
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!