基本编程题
1.从键盘输入一个整数和一个字符,以逗号隔开,在屏慕上显示输出一条信息。
示例如下:
输入:
10,@
输出:
@@@@@@@@@@10@@@@@@@@@@
s = input("请输入一个整数和一个字符,用逗号隔开:")
l = s.split(",")
num = int(l[0])
char = l[1]
char_output = char * num
print(char_output,num,char_output,sep="")
# sep 参数的作用是定义多个打印对象之间的分隔符。
2.从键盘输入一个由1和0组成的二进制字符串S,转换为八进制数输出显示在屏幕上。
s = input("请输入一个由1和0组成的二进制字符串:")
s = int(s,2) # int(s, 2)将 s 视为二进制字符串进行解析
print("将二进制数{0:b}转换为八进制数为{0:o},十六进制数为{0:x},十进制数为{0}".format(s))
3.文件data.txt文件中有多行数据,打开文件,读取数据,并将其转化为列表。统计读取的数据,计算每一行的总和、平均值,在屏幕上输出结果。
data.txt内容:
Chinese:80,Math:85,English:92,Physical:81,Art:85,Chemical:88
Chinese:80,Math:85,English:92,Physical:81,Art:85,Chemical:88
Chinese:80,Math:85,English:92,Physical:81,Art:85,Chemical:88
Chinese:80,Math:85,English:92,Physical:81,Art:85,Chemical:88
Chinese:80,Math:85,English:92,Physical:81,Art:85,Chemical:88
Chinese:80,Math:85,English:92,Physical:81,Art:85,Chemical:88
data = open("data.txt","r")
for d in data:
course = d.split(',')
sum = 0
for c in course:
num = c.split(':')
sum += float(num[1])
sum2 = sum / len(course)
print('总和为{},平均数为{:.2f}'.format(sum,sum2))
输出:
总和为511.0,平均数为85.17
在 Python 中保留小数点后两位可以使用字符串格式化: "{:.2f}".format(num)
注意在打开文件open("data.txt","r")
后直接打印的话打印出来的是文件对象,而不是文件中的内容。要打印文件中的内容,需要使用文件对象的读取方法如read()
,readline()
或readlines()
。如下:
data = open("data.txt","r")
print(data.read()) # 读取整个文件内容并打印
data.close() # 记得关闭文件
或者通过for循环遍历文件对象,可以逐行读取并打印文件的内容。
简单应用题
4.使用turtle库的turtle.seth()函数绘制同心圆套圈,最小的圆圈半径为10像素,不同圆圈之间的半径差是40像素,效果如下图所示。
import turtle
r = 10
d = 40
head = 90
for i in range(4):
turtle.pendown()
turtle.circle(r)
r += d
turtle.penup()
turtle.seth(-head)
turtle.fd(d)
turtle.seth(0)
turtle.done()
5.分词并统计中文词语的出现次数,并输出出现最多的词以及其出现次数.
首先将标点符号都替换掉,
然后,将被去掉了标点符号的字符串 使用jieba.lcut(s)
进行分词,用列表words
存储所有分词。
创建空字典all_words
存储所有词语及其出现次数。
max
存储最大次数。
high_words
,用来存储出现次数最大的词语。
使用for循环在列表words
中遍历,每一次遍历时,都在词语后面加上一个“/”,并在字典all_words
存入当时的词语(i),并且使得词语i对应的值加1(也就是出现次数加一)。
第一个for循环后打印输出词语总数,也就是words
列表长度。
再使用for循环在字典all_words
中遍历, all_words[key]
即词语出现的次数。
如果词语出现次数大于最大次数max
,那么max
就等于词语出现次数,并且在high_words
内存入该次数(值)所对应的词语(键);
如果词语出现次数和最大次数相等,那么将出现次数最多的词语(即出现次数最多的键)连接到 high_words
中。如有多个词语出现的次数相同,那么它们会被连接到同一个字符串中,用空格隔开。这样做是为了将所有出现次数最多的词语记录下来。
之后再将all_words
中所有的键值打印出来,也就是打印词语及其出现次数。
最后将出现最多的词以及其出现次数输出。
import jieba
s = "工业互联网实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。"
s = s.replace(',','').replace('、','').replace('。','')
words = jieba.lcut(s)
all_words = {}
max = 0
high_words = ""
for i in words:
print(i,end = '/')
all_words[i] = all_words.get(i,0) + 1
print('\n中文词语数是:{}'.format(len(words)))
for key in all_words:
if max < all_words[key]:
max = all_words[key]
high_words = key
elif max == all_words[key]:
high_words += '' + key
print("{}:{}".format(key,all_words[key]))
print("出现最多的词是({}):{}次".format(high_words,max))