'''
/*
有一个特殊的五键键盘
上面有A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A
A键在屏幕上输出一个字母A
Ctrl-C将当前所选的字母复制到剪贴板
Ctrl-X将当前选择的字母复制到剪贴板并清空所选择的字母
Ctrl-V将当前剪贴板的字母输出到屏幕
Ctrl-A选择当前屏幕中所有字母
注意:
1. 剪贴板初始为空
2. 新的内容复制到剪贴板会覆盖原有内容
3. 当屏幕中没有字母时,Ctrl-A无效
4. 当没有选择字母时Ctrl-C、Ctrl-X无效
5. 当有字母被选择时A和Ctrl-V这两个输出功能的键,
会先清空所选的字母再进行输出
给定一系列键盘输入,
输出最终屏幕上字母的数量
输入描述:
输入为一行
为简化解析用数字12345分别代替A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A的输入
数字用空格分割
输出描述:
输出一个数字为屏幕上字母的总数量
示例一:
输入:
1 1 1
输出:
3
示例二:
输入:
1 1 5 1 5 2 4 4
输出:
2
*/'''
#12345分别代替A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A
# a =input().split()
# a = '1 1 5 1 5 2 4 4'
# a = '55411152341'
#没有全选 进行粘贴 无效
a = '1 1 4 5 4 3 4 2 4'
l = [] #存储屏幕的数据
ll = [] #存储剪切板数据集
flag =False #选中标识 False标识未选中 True表示选中
for i in range(len(a)):
if a[i] == '1':
b = a[i:]
break
b = b.split()
for i in range(len(b)):
if b[i] =='1':
if i ==0:
l.append('A')
else:
if flag:
l.clear()
l.append('A')
flag = False
else:
l.append('A')
elif b[i]=='2':
if len(l)>0 and flag:
ll.clear()
ll.extend(l)
elif b[i]=='3':
if len(l)>0 and flag:
ll.clear()
l3 =l.copy()
ll.extend(l3)
l.clear()
elif b[i]=='4':
if len(ll) > 0 and flag:
if b[i-1] in '23':
l.clear()
l.extend(ll)
elif b[i-1] =='4':
l.extend(ll)
else:
pass
elif b [i] == '5':
if len(l) >0:
flag =True
else:
pass
print(len(l))
#ps 网上我只看到有jave写的答案,看不懂,我也不知道正确与否,欢迎指正
#我又来了 ,经过昨天和一个大神的讨论,借鉴了一下他的代码,删掉了我冗余的代码 精简后的代码如下
while True :
try:
a = input("请输入")
l = [] #存储屏幕的数据
ll = [] #存储剪切板数据集
flag =False #选中标识 False标识未选中 True表示选中
b = a.split()
for i in range(len(b)):
if b[i] =='1':
if flag:
l.clear()
flag = False
l.append('A')
elif b[i]=='2':
if flag:
ll.clear()
ll.extend(l)
elif b[i]=='3':
if flag:
ll.clear()
ll.extend(l)
l.clear()
flag = False
elif b[i]=='4':
if flag:
l.clear()
flag =False
l.extend(ll)
elif b[i] == '5':
flag = True
else:
pass
print(len(l))
except:
break