python判断一年的某一天 密码爆破 两数之和 数据解密

一、 输入某年某月某日,判断这一天是这一年的第几天?
month_day = [31,28,31,30,31,30,31,31,30,31,30,31]
total_day = [31,59,90,120,151,181,212,243,273,304,334,365]
print("Enter q to quit at any time.")

while True:
    year = input("Please enter a year: ")
    if year == 'q':
        break
    month = input("Please enter a month: ")
    if month == 'q':
        break
    day = input("Please enter a day: ")
    if day == 'q':
        break
    try:
        # 确保是数字
        year = int(year)
        month = int(month)
        day = int(day)

        if year < 0:
            print("请输入正确的年份!")  
        elif month > 12 or month < 1:
            print("请输入正确的月份!")  
        elif day > month_day[month-1] or day < 1:
            print("请输入正确的日期!")
        else:
            if month == 1:
                print("这是今年的第%d天" % day)
            else:
                if year %4 == 0 and year % 100 != 0 or year % 400 == 0:
                    print("这是今年的第%d天" % (total_day[month-2]+day+1))
                else:
                    print("这是今年的第%d天" % (total_day[month-2]+day))       
    except:
        print("请输入正整数或q!")

代码有以下几个功能:

  1. 程序可以循环运行,一直输入计算。可以随时输入 q ,结束程序。运行结果如图。
    在这里插入图片描述
  2. 提示不规范的输入:
    (1)输入的年、月、日不是数字,提示输入正整数或q
    (2)输入的年是负数,提示 请输入正确的年份!
    (3)输入的月不在区间 [1,12] 内,提示“请输入正确的月份!
    (4)输入的日期范围不在该月份的范围内,提示请输入正确的日期!
    运行结果如图:
    在这里插入图片描述
二、求s=a+aa+aaa+aaaa+aa …a n 个 a) 的值,其中 a 、 n 均是正整数。例如2+22+222+2222+22222(此时 a=2,n=5) 。请输入 a 、 n 的值,并得到结果。
a = int(input("输入a: "))
n = int(input("输入n: "))
count = 0
b = 0
for i in range(0,n):
    for m in range(0,i+1):
        b += a*(10**m)
    count = count + b
    b = 0

print(count)

三、 实现一个用户登陆程序 : 要求输入用户名和密码 ; 2. 判断用户名和密码是否 正确 ?(name=‘zjc’, passwd=’ 固化在程序里,也可以通过配置文件 读入 3. 为了防止暴力破解,登陆仅有三次机会, 如果超过三次机会, 报错提示并退出程序。
time = 1
name = 'zjc'
passwd = 'buaasem'
while time < 4:
    username = input("用户名:")
    psw = input("密码: ")   
    if username != name or psw != passwd:
        print("用户名或密码错误!还有%d次登录机会" % (3-time))
        time += 1
    else:
        print("登录成功")
        break

在这里插入图片描述

四、 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上 5, 然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。请实现加解密函数并测试。
num = int(input("输入一个四位数"))
a = int(num / 1000) 
b = int((num - a*1000)/100)
c = int((num - a*1000 - b*100)/10)
d = int(num - a*1000 - b*100 - c*10)

"""加密过程"""
a = (a+5) % 10
b = (b+5) % 10
c = (c+5) % 10
d = (d+5) % 10

list_int = [d, c, b, a]
list_str = [str(i) for i in list_int]
num_str = ' '.join(list_str)

print("加密的数字为%s " % num_str)

# 解密过程
new_int = [int(i) for i in list_str]
new_list_int = [new_int[3], new_int[2], new_int[1], new_int[0]]

for m in range(0,4):
    if new_list_int[m] >= 5:
        new_list_int[m] -=5
    else:
         new_list_int[m] +=5

new_list_str = [str(i) for i in new_list_int]
previous_num = ' '.join(new_list_str)
print('原来的数字为%s ' % previous_num)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值