密码游戏#python密码破解算法

要求输入一个数字,输出的数字有以下特点,你有几种方法实现?

每位数字都要加上3再除以9的余数代替该位数字,然后将第1位和第3位数字交换,第2位和第4位数字交换。

例:输入:1234  输出:6745

方法一

通过迭代用户输入的字符串,对每个字符进行数学运算,然后存储结果并按照特定顺序输出

list1=[]
num = input()
for i in num:
    number=(int(i)+3)%9
    list1.append(number)
print("{}{}{}{}".format(list1[2], list1[3], list1[0], list1[1]))

1:首先使用input输入一个值,将其赋给num,类型是字符串(input函数的设计初衷是接收任意形式的文本输入,而不是特定类型的数据)

2:利用for循环对该字符串进行迭代,因为是字符串类型,那么i按顺序接受num的值,例如1234,那么i按照1,2,3,4进行迭代。

3:按照要求对数字进行计算,注意:要先使用int函数将字符串类型转变为数字类型,然后将值赋给number

4:利用append函数依次将处理过的数字加到list1空列表中

5:输出结果,{} 是占位符,用于指示在字符串中插入值的位置。list1[2]list1[3]list1[0]list1[1] 是按照顺序传递给 format 方法的参数。

这些参数按照它们在 format 方法中出现的顺序,依次填充到字符串中的 {} 中。从而达到要求。

方法二

读取用户输入的数字字符串,对每个数字进行加3取余9的操作,然后交换特定位置的数字,最后输出变换后的结果

str=input()
nums=[int(i) for i in str]


for i in range(len(nums)):
    nums[i]+=3
    nums[i]=nums[i]%9
    

nums[0],nums[2]=nums[2],nums[0]
nums[1],nums[3]=nums[3],nums[1]

for num in nums:
    print(num,end='')

1:输入数值,将其赋给str,类型为字符串

2:利用for循环,把字符串类型转换为列表

3:len()查看列表的长度,range ()这个表达式生成一个从0开始到len(nums)-1(不包括len(nums))的整数序列,它允许你遍历列表的所有索引,从第一个元素到最后一个元素,因此可以遍历列表中的所有元素。

4:元组交换(tuple unpacking)
列表 nums 中索引为0的元素和索引为2的元素进行交换

列表 nums 中索引为1的元素和索引为3的元素进行交换

当然nums[2],nums[0]=nums[0],nums[2]

       nums[3],nums[1]=nums[1],nums[3]效果也是一样的。

6:打印每个数字,并且使用 end='' 参数使得打印的数字之间没有空格,也没有换行(因为nums为列表,直接输出将会导致每个数字被打印在新的一行)

方法三:

n = int(input())
a = n // 1000
b = (n // 100) % 10
c = (n // 10) % 10
d = n % 10

t = [a, b, c, d]
for i in range(len(t)):
    t[i] = (t[i] + 3) % 9
t[0], t[2] = t[2], t[0]
t[1], t[3] = t[3], t[1]
for i in t:
    print(i, end="")

从一个整数 n 中提取千位、百位、十位和个位数字,

例:n为1234时,1234//1000结果为1,整数除法返回的是除法运算的整数部分,即除法结果的商,不考虑余数。所以a为该数值的千分位

b = (n // 100) % 10,1234//100结果为12,对12进行除10取余为2,所以b为该数值的百分位

以下类似上面

方法四:

a = input()
b = []
for i in range(len(a)):
    c = (int(a[i]) + 3) % 9
    b.append(c)
b[0],b[1],b[2],b[3] = b[2],b[3],b[0],b[1]
s = "".join(map(str,b))
print(s)

转换为字符串输出

s = "".join(map(str, b))

使用 map(str, b) 将列表 b 中的所有整数转换为字符串。

然后,"".join(...) 将这些字符串连接成一个单一的字符串,元素之间没有分隔符。

方法五:

a = input()
str1= str()
for i in range(len(a)):
    str1 += str((int(a[i])+3)%9)
print(str1[2],str1[3],str1[0],str1[1],sep='')
  • 使用 print() 函数打印 str1 字符串中的特定字符,按照索引2、3、0、1的顺序。
  • sep='' 参数指定在打印时不使用任何分隔符,这意味着输出的数字将连续显示,没有空格或换行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值