python学习之路
一、Hello World的条件输出
获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:
如果输入值是0,直接输出"Hello World"
如果输入值大于0,以两个字符一行方式输出"Hello World"(空格也是字符)
如果输入值小于0,以垂直方式输出"Hello World"
n=eval(input())
if n==0:
print("Hello World")
elif n>0:
print("He\nll\no \nWo\nrl\nd")
else:
for c in "Hello World":
print(c)
二、数值运算
获得用户输入的一个字符串,格式如下:
M OP N
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)
根据OP,输出M OP N的运算结果,统一保存小数点后2位。
注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
s=input()
print("{:.2fx}".format(eval(s)))
三、turtle八边形绘制
使用turtle库,绘制一个八边形。
import turtle as t
t.pensizse(2)
for i in range(8):
t.fd(100)
t.left(45)
四、turtle八角图形绘制
import turtle as t
t.pensize(2)
for i in range(8):
t.fd(150)
t.left(135)
五、平方根格式化
获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。
输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充。
如果结果超过30个字符,则以结果宽度为准。
a=eval(input())
print("{:+>30.3f}".format(pow(a,0.5)))
六、字符串分段组合
获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出。
s=input()
a=s.split('-')
print(a[o]"+"a[1])
七、四位玫瑰数
四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
for i in range(1000,10000):
a=int(i/1000)
b=int((i-1000*a)/100)
c=int((i-1000*a-100*b)/10)
d=int(i-1000*a-100*b-10*c)
if i==pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4):
print(i)
八、100以内素数之和
求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
提示:可以逐一判断100以内每个数是否为素数,然后求和。
i=2
num=0
for i in range(2,100):
j=2
for j in range(2,i):
if i%j==0:
break
else:
num+=i
print(num)
九、随机密码生成
以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。
产生密码采用random.randint()函数。
import random
def genpwd(length):
a=10**(length-1)
b=10**length-1
return "{}".format(random.randint(a,b))
length=eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
十、连续质数计算
获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
注意:用户输入的数字N可能是浮点数,都是正数;最后一个输出后不用逗号。
def prime(m):
for i in range(2,m)
if m%i==0:
return False
return True
n=eval(input())
n_=int(n)
n_=n_+1 if n_ 0:
if prime(n_):
if count>1:
print(n_,end=",")
else:
print(n_,end="")
count - =1
n_+=1
十一、数字不同数之和
获得用户输入的一个整数N,输出N中所出现不同数字的和。
例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为6。
n=input()
ss=set(n)
num=0
for i in ss:
num+=eval(i)
print(num)
十二、人名最多数统计
编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名。
s = ‘’‘双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖
杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙
金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍
鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰
阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰
乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王
忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正
李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复
逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣
洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复
黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄
张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫
洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈
完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱
郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲
谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉
双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏
逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏’’’
ls=s.split()
d={}
for i in ls:
d[i]=d.get(i,0)+1
max_name,max_cnt="",0
for k in d:
if d[k]>max_cnt:
max_name,max_cnt=k,d[k]
print(max_name)
十三、文本的平均列数
打印输出附件文件的平均列数,计算方法如下:
(1)有效行指包含至少一个字符的行,不计算空行;
(2)每行的列数为其有效字符数;
(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。
f=open("latex.log")
s,c=0,0
for line in f:
line=line.strip("\n")
if line=="":
continue
s+=len(line)
c+=1
print(round(s/c))
十四、CSV格式清洗与转换
附件是一个CSV格式文件,提取数据进行如下格式转换:
(1)按行进行倒序排列;
(2)每行数据倒序排列;
(3)使用分号(;)代替逗号(,)分割数据,无空格;
按照上述要求转换后将数据输出。
f=open("data.csv")
ls=f.readlines()
ls=ls[::-1]
lt=[]
for item in ls:
item=item.strip("\n")
item=item.replace(" ","")
lt=item.split(",")
lt=lt[::-1]
print(";".join(lt))
f.close(0
十五、英文字符的鲁棒输入
获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误。
a=[]
for i in range(26):
a.append(chr(ord("a")+i))
a.append(chr(ord("A")+i))
s=input()
for c in s:
if c in a:
print(c,end="")
十六、数字的鲁棒输入
获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。
要求:
(1)无论用户输入何种内容,程序无错误;
(2)如果输入有误,请输出"输入有误"。
s=input()
try:
if complex(s)==complex(eval(s)):
print(eval(s)**2)
except:
print("输入有误")
十七、系统基本信息获取
获取系统的递归深度、当前执行文件路径、系统最大UNICODE编码值等3个信息,并打印输出。
输出格式如下:
RECLIMIT:<深度>, EXEPATH:<文件路径>, UNICODE:<最大编码值>
提示:请在sys标准库中寻找上述功能。
import sys
print("RECLIMIT:{},EXEPATH:{},UNICODE:{}".format(sys.getrecursionlimit(),sys.executable,sys.maxunicode))
十八、二维数据表格输出
tabulate能够对二维数据进行表格输出,是Python优秀的第三方计算生态。
参考编程模板中给定的数据和代码,编写程序,能够输出如下风格效果的表格数据。
from tabulate import tabulate
data =[["北京理工大学", "985", 2000], \
["清华大学", "985", 3000], \
["大连理工大学", "985", 4000], \
["深圳大学", "211", 2000], \
["沈阳大学", "省本", 2000], \
]
print(tabulate(data,tablefmt="grid"))
十九、无空隙回声输出
获得用户输入,去掉其中全部空格,将其他字符按收入顺序打印输出。
s=input()
s=s.replace(" ","")
print(s)
二十、文件关键行数
关键行指一个文件中包含的不重复行。关键行数指一个文件中包含的不重复行的数量。
with open("latex.log","r",encoding="utf-8")as f:
rows_set=set(f.readlines())
print("共{}关键行".format(len(rows_set)))
二十一、字典翻转输出
读入一个字典类型的字符串,反转其中键值对输出。
即,读入字典key:value模式,输出value:key模式。
s=input()
try:
dict_1=eval(s)
dict_2=dict(zip(dict_1.values(),dict_1.keys()))
print(dict_2)
except:
print("输入有误")
二十二、《沉默的羔羊》之最多单词
附件是《沉默的羔羊》中文版内容,请读入内容,分词后输出长度大于2且最多的单词。
如果存在多个单词出现频率一致,请输出按照Unicode排序后最大的单词
import jieba
with open("沉默的羔羊.txt","r",encoding="utf-8")as f:
txt=f.read()
words=jieba.lcut(txt)
counts={}
for word in words:
if len(word)==1: #过滤长度为1的单词
continue
else:
counts[word]=counts.get(word,0)+1
#对词语根据出现的频率进行排序
wordlst=list(counts.items())
wordlst.sort(key=lambda x:x[1] reverse=True)
maxfreq=wordlst[0][1] #确定最大频率的位置
maxfreqwords=[] #创建一个最大频率的单词列表(假设有很多单词最大频率一样)
for i in wordlst:
if i[1]==maxfreq:
maxfreqwords.append(i)
else:
break #一旦遍历到小于最大值,不再便利
maxfreqwords.sort(key=lambda x:x[0] reverse=True) #按照unicode排序
print(maxfreqwords[0][0])