Python:如何将移位输入打印为整数?

Python: How does one print bitshifted inputs as an integer?

我正在尝试创建一个移位教程脚本,它接受用户输入并打印结果,但它一直返回以下错误

DATASET NUMBER: 0
Traceback (most recent call last):
  File "./prog.py", line 21, in <module>
TypeError: unsupported operand type(s) for >>: 'str' and 'int'

这是我目前使用的代码:

import sys

input = []
for line in sys.stdin:
    input.append(line)
a = input[0]
b = input[1]
c = input[2]

a >> 4
print(a)

b << 2
print(b)

c << 1
print(c) 

是打印部分工作不正常。我认为这要么是语法错误,要么是整数转换错误,我对此没有 100% 的信心。是我的语法错误还是我遗漏了一些简单的东西?

input = []
for line in sys.stdin:
    input.append(line)

所以 input 包含 str 类型的变量,对吗?您不能对 string 进行字节移位,您必须先将其转换为整数:

input = list(map(int, input)) # This converts all the elements to integers

我建议使用结束下划线来防止您的程序覆盖 built-in 函数 input


您还应注意,您并未将移位后的值重新分配给变量,因此您 print输入的是与输入中相同的值。

a = a >> 4 # Do this...
a >>= 4 # ...maybe this...
a >> 4 # ...but for sure not this