我的大作业

给定一个十进制数N。N满足:除了最高位是2,其余都是3,且3的个数大于0。求N在K进制的表示。
输入:
输入一行两个整数N, K
输出:
一个K进制数。

手机短号
题目描述:大家都知道,手机号是一个 11 位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是 6+手机号的后 5 位,比如号码为 13512345678 的手机,对应的短号就是 645678。现在,如果给你一个手机号码,你能找出对应的短号吗? 注意,这个手机号码可能并不是 11 位的,这个时候你需要输出 “Halation - I can’t join it!”
输入:
输入数据的第一行是一个N(N <= 200),表示有N个数据,接下来的N行每一行为一个多位的手机号码,但是长度不会超过 50。
输出:
输出应包括 N 行,每行包括原输入好,一个对应的短号或者提示信息。

统计工龄
题目描述:给定公司 N 名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。
输入:
输入首先给出正整数N(<=105),即员工总人数;随后给出N个整数,即每个员工的工龄。
输出:
按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。

列表排序
题目描述:给你一些正整数,请你将这些数插入到列表中,并将这些数按从小到大的顺序进行排序。排完序后,我想知道这个列表的一些位置上的数字,请你告诉我这些数分别是什么。
输入:
第一行一个正整数 n,表示你需要对 n 个数进行排序;
接下来 n 行一行一个整数 L[i] ,表示这个列表第 i 个整数; (0 ≤ i < n)
接下来一行,一个正整数 q 表示我的询问次数;
接下来 q 行,一行一个整数表示询问第 i 位的值是多少。 (0 ≤ i < n)
输出:
q 行,一行一个数表示对应询问的 L[i] 值。

查验身份证,题目描述:一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
输入:
输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。
输出:
按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。

凯撒密码
题目描述:凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I G K L M N O P Q R S T U V W X Y Z
密文:D E F G H I G K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+x)mod26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-x)mod26
其中x为偏移量。
假设用户可能使用的输入包含大小写字母azAZ、空格和特殊符号,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格和特殊符号不用进行加密处理。
输入:
输入两行,第一行是凯撒密码字符串,第二行表示偏移量。
保证偏移量>0,字符串长度在100以内。
输出:
输出一行,表示最终得到的字符串。

从一篇文章中取出 N 个字符串,这 N 个字符串构成一个数组(列表) A,假设每个字符串只包含小写字母,返回由数组 A 中每个字符串都包含的字符构成的字符串,字符串中的字母都按照字母序排列。
输入:输入一个列表,每个字符串都是由引号括起来的。
输出:输出一个符合题意的字符串,注意这个字符串包含双引号"。

题目描述:请将很小的数从输入重写到输出。当读到数字 42 时停止处理输入。注意所有输入的数字都只有 1 或 2 位数。
输入:
多行输入,输入满足题意。
输出:
多行输出,输出满足题意要求的字符串。

6翻了
题目描述:“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是3个“9”!
本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。
输入:
输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。
输出:
从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。
10.
编写一个函数,求10000以内所有的完数。所谓完数是指一个数正好是它的所有约数之和。例如,6就是一个完数,因为6的因子有1,2,3,并且6=1+2+3。
11.
如果有两个数,每一个数的所有约数(除它本身以外)的和正好等于对方,则称这两个数为互满数。求出10000以内所有的互满数,并显示输出,并使用函数实现求一个数和它的所有约数(除它本身)的和。
12.
用递归函数求s=1+2+3+…+n的值
实验方案的设计

k 进制:
n,k=map(int,(input("").split()))
a=[]
while n!=0:
x=n%k
n=n//k
a.append(x)
a.reverse()#反转列表
for i in range(len(a)):
print(a[i],end=’’)

这道题的思路主要是来自十进制转换为二进制的方法:
即对整数部分除以2取余对小数部分乘以2取整(此处只考虑整数)
所以我对n除以k取余然后存在一个列表里最后反转该列表,将列表元素逐个输出,即为n的k进制数(运行结果如下,为了测试它可不可以运行,今天截的图)

手机短号
n=int(input(""))
for m in range(n):
a=input()
if len(a)==11:
print(“6”,end=’’)
for i in range(6,11):
if i!=10:
print(a[i],end=’’)
else:
print(a[i])
if len(a)!=11:
print(“Halation -I can’t join it”)
该题思路为:首先输入n来决定输入手机号码的个数,然后输入手机号码并默认将其存为字符串,判断字符串的长度是否为11,如果不是,输出Halation - I can’t join it!如果是11输出6和后面的五位数字,最后一位输出时加上换行,以便下一个手机号码的输入。运行结果如下:

统计工龄
n=int(input())
e=[]
y=[]
for i in range(0,n):
e.append(int(input()))
y=set(e)
y=sorted(y)
for i in y:
m=0
for j in range(0, n):
if(i==e[j]):
m+=1
print("%d:%d"%(i,m))
该题思路为先输入人数然后进行n次循环将每次输入的工龄添加到列表e里面然后y把e转为集合,也就是对e去重,再将y进行升序排序,然后再通过循环用m表示出y中每个元素在e中出现的次数,最后用相应格式输出(因为是之前敲的,刚刚接触列表,所以用的方法可能比较复杂,不过还是达到目的了)。运行结果如下:

列表排序
n=int(input())
l=[]
for i in range(0,n):
l.append(int(input()))
l.sort()
i=int(input())
for j in range(0,i):
m=int(input())
print(l[m-1])
该题思路为先输入n表示对n个数字进行排序,然后用一个for循环将下面的n个数存在列表l中,对l进行排序,然后再输入查询次数i,进行i次循环分别查询l中的各位元素。运行结果如下:

查验身份证号
n=int(input())
y=1
x=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
m=[‘1’,‘0’,‘x’,‘9’,‘8’,‘7’,‘6’,‘5’,‘4’,‘3’,‘2’]
for i in range(n):
s=input()
sum=0
for j in range(17):
sum+=x[j]*int(s[j])
c=sum%11
if m[c]!=s[17]:
y=0
print(s)
if y==1:
print(“All right!”)

此题的思路为先输入n决定需要判断的身份证号码的个数,给y赋初值1,将身份证号码当作字符串输入,将各个字符转换为整型然后与对应的比重相乘然后相加,得到最后的和sum然后对sum关于11取余得到c,然后判断m[c]是否等于s[17],如果不相等则该身份证号不是正确的,就将0赋给y,且输出此时的s,如果n次循环后y还是1则输出“All right!”。运行结果如下:

凯撒密码
s=input().split()
n=int(input())
c=s
for i in range(len(s)):
s[i]=ord(s[i])
for i in range(len(s)):
if (s[i]>123-n):
c[i]=97+(s[i]-122+n)
if (s[i]<97 and s[i]>90-n):
c[i]=65+(s[i]-91+n)
else:
c[i]=s[i]+n
for i in range(len(s)):
c[i]=chr(c[i])
print(c[i],end=’ ')
该题的思路为先将密文输入并以字符串的形式储存在s中然后将s中的每个元素转换为它的ASCII值然后存在列表中,然后判断该列表中的元素是否是后面的n个字符如果是从A或a开始加i,如果不是就用该元素值加n
最后将ASCII值转换为字符输出。运行结果如下:

a=[]
b=input()
c=[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘i’,‘j’,‘k’,‘l’,‘m’,‘n’,‘o’,‘p’,‘q’,‘r’,‘s’,‘t’,‘u’,‘v’,‘w’,‘y’,‘z’]
for i in range(26):
if c[i] in b:
a.append(c[i])
print(’"’,end=’’)
for j in range(len(a)):
print(str(a),end=’’)
print(’"’)
该题的思路为,将字母表中的字母存在c中,如果字符串中有c中的字母就输出,该题的运行结果为:

a = []
def s():
b = int(input())
if b != 42:
a.append(b)
s()
else:
a.append(b)
s()
for i in a:
print(i)
此题的思路为以42为一个判断,递归的思路,如果b不等于42的话再次执行前面的操作,如果等于42不再执行,然后输出刚刚输入的数字。运行结果如下:

def six(g):
g = str(g)
p = g
count = 0
for i in range(len(g)):
if g[i] == str(6):
count += 1
if i <= len(g)-2:
if 3 <= count < 9 and g[i+1] != str(6):
p = p.replace(str(6) * count, str(9), 1)
if count >= 9 and g[i+1] != str(6):
p = p.replace(str(6)*count, str(27),)
if i == len(g)-1:
if 3 <= count < 9:
p = p.replace(str(6) * count, str(9),1 )
if count >= 9:
p = p.replace(str(6) * count, str(27),)
if g[i] != str(6):
count = 0
return p
s = input()
print(six(s))
该题的思路是先在字符串里面找到是否有连续的三个六如果有就进行相关替换,如果没有连续的三个6,就不进行处理。代码运行情况如下:

def f(x):
for i in range(2,x):
m=0
for j in range(1,i):
if i%j0:
m+=j
if m
i:
print(i)
f(10000)
我编写了一个函数f(x),其作用是求x以内的所有的完数并输出。然后f(x)即表示10000以内的所有完数。该函数用了两个for循环逐个判断j是否为i的因数,并把满足条件的j加起来判断是否等于i,如果相等,则输出i。

def f(x):
a=0
for i in range(1,x):
if x%i0:
a+=i
return a
for m in range(1,10001):
b=f(m)#m的约数和为b
c=f(b)#b的约数和为c
if m
c and m!=b and m<b:
print(m,b)
该题的思路为,设函数求x的约数和,取m的约数和b然后取b的约数和c只要m等于c即可确定m,b互为互满数(当然m不等于b,且一对互满数只能出现一次),该程序的运行结果如下:

def f(x):
if x==1:
return 1
else:
return f(x-1)+x
n=int(input())
print(f(n))
该题的思路为:用了递归的方法,编写了一个函数,来求1+2+3+…+n的值.运行结果如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值