要求输入一个数字,输出的数字有以下特点,你有几种方法实现?
每位数字都要加上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=''
参数指定在打印时不使用任何分隔符,这意味着输出的数字将连续显示,没有空格或换行。