Python-实验四

  • 进制转换

从键盘输入一个由1和0组成的二进制字符串s,转换为八进制数输出在屏幕上。

n=input()
print(str(oct(int(n,2)))[2:])
  • 非等位移位凯撒密码

移位加密是一种古典的替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。而非等位移位的加密则在此基础上修改。如明文“IWASLEANINGPYTHON”,第一个字母I,向后移动一位替换为密文J;第二个字母W,向后移动2位替换为密文Y;第三个字母A,向后移动3位替换为密文D;依此类推,第17个字母N,向后移动17位(14+17)%26=5替换为密文E。如果明文是小写字母,则转换为大写字母加密;如果明文是26个英文字母之外的字符则不做替换,原样输出。

p=input("")
p=p.upper()
for i in range(len(p)):
    if ord("A")<=ord(p[i])<=ord("Z"):
        print(chr(ord("A")+(ord(p[i])-ord("A")+i+1)%26),end='')
    else:
        print(p[i],end='')
  • 字符串查询

编写一段程序,用于查询用户输入的区号。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

区号和城市保存在字符串(注意:字符串中的标点是中文逗号):021上海,022天津,023重庆,024沈阳市,025南京‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

当用户输入区号时,程序输出对应的城市。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

如输入:021,输出:上海‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

可多次查询。当输入"000"时结束程序‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

当输入的区号不在字符串中,输出”没找到"‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

如输入:21,输出:没找到

s = "021上海,022天津,023重庆,024沈阳市,025南京"
s=s.split(',')
a,b,n=[],[],input()
for i in s:
    a.append(i[3:])
    b.append(i[0:3])
while True:
    if n in b:
        print(a[b.index(n)])
        break
    elif n=="000":
        break
    else:
        print("没找到")
        break
  • 羊车门问题

有3扇关闭的门,一扇门后面停放汽车,其余门后面是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后面的山羊,然后允许参数者更换自己的选择。请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的机率。

from random import *
list=['羊','羊','车']
datas=1000
c,n=0,0
for i in range(1,datas+1):
    a=randint(0,2)
    if list[a]=='车':
        n=n+1
    else:
        c=c+1
print("改变选择获胜的机率{0:}".format(c/datas))
print("坚持选择获胜的机率{0:}".format(n/datas)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值