题解 | #密码游戏#
密码游戏
https://www.nowcoder.com/practice/36641ab168664384aff798ba7ce34bc1
///收获1:获取4位整数中各位的数值(更好的方法)
1
2
3
4
first = a//1000
second = (a//100)%10 # 原来:second = a//100-first*10
third = (a//10) % 10 # 原来:third = a//10-first*100-second*10
fourth = a % 10 # 原来:fourth = a-1000*first-100*second-10*third
收获2(注意点):通过for循环修改数组中每一项的值
使用 for item in list 的方法,无法通过循环中 item=xxx 的方法进行每项内容的替换:
必须使用 for i in range(len(list)) ,然后使用list[i]=xxx的方式
或者:创建一个新的空数组,使用 for item in list 的方法,无法通过循环中 new_list.append(new_item) 的方式进行
收获3:交换数组中两个元素的位置(更好的方法)
1
2
3
4
5
6
7
8
9
10
# 定义数组中i和j位置的元素交换方法
# def swap(list,i,j):
# tmp = list[i]
# list[i] = list[j]
# list[j] = tmp
# 将第1位和第3位数字交换
arr[0],arr[2] = arr[2],arr[0] # swap(arr,0,2)
# 将第2位和第4位数字交换
arr[1],arr[3] = arr[3],arr[1] # swap(arr,1,3)
收获4:拼接打印数组中的每个元素(更好的方法)
1
2
3
4
5
# 原方法:使用字符串数组的join方法,完成数组转换为字符串的操作
# print(''.join(arr))
# print(arr[0],arr[1],arr[2],arr[3]) # 6 7 4 5
print(arr[0],arr[1],arr[2],arr[3],sep='') # 6745
///
a = int(input())
first = a//1000
second = (a//100)%10
third = (a//10)%10
fourth = a%10
arr = [first, second, third, fourth]
for i in range(len(arr)):
arr[i] = (arr[i] +3) % 9
arr[0], arr[2] = arr[2], arr[0]
arr[1], arr[3] = arr[3], arr[1]
print(arr[0], arr[1], arr[2], arr[3], sep = '')