繁体   English   中英

python中的这个旋转程序怎么了?

[英]what is wrong with this rotation program in python?

上下文:(谜题机器)我想做的是让这段代码运行,以便每次序列经过第一个轮子时第一个轮子都会旋转。

问题是,我从互联网上找到了如何使用下面的this序列进行旋转的操作,但是当我更改变量周围的位置以便自动进行更多操作时,旋转不起作用。 if函数后会显示错误消息。 我已经检查并更改了变量的名称,以使它们更简单且更间距。 并且无法找出代码中不起作用的内容。 是因为rotate函数不能使用变量还是什么?

import collections

theinput=raw_input('enter letter')
x=0



w=collections.ww=([1,2,3,4,5])


if theinput == 'a':
    w.rotate(x)
    a = w[0]
    x= x+1
    w.rotate(x)
 print a

谢谢

据我所知,您可能要使用的容器是deque ,据我所知,collections模块中没有ww这样的变量。

为了说明背景,双端队列与列表非常相似,但是对双端队列进行了优化,您可以轻松地(高效地)在两端添加和删除项目,这比内置列表的效率略高。 此外,双端队列还提供了列表中找不到的一些其他方法,例如旋转。 使用结合了基本操作的列表来完成相同的事情确实很容易,但对于双端队列,并没有针对此类事情进行优化。 但是对于像Enigma机器模拟这样的简单操作,坚持使用列表无论如何都不会改变性能。

我想您正在尝试执行以下操作:

import collections
w = collections.deque([1, 2, 3, 4, 5])
print "Deque state is ", w
print "First item in deque is", w[0]
w.rotate(1)
print "Deque state after rotation is ", w
print "First item in deque is", w[0]

这应该打印

Deque state is  deque([1, 2, 3, 4, 5])
First item in deque is 1 Deque
state after rotation is  deque([5, 1, 2, 3, 4])
First item in deque is 5

使用负数作为旋转的参数以反过来

以下是仅使用内置列表的替代实现

w = [1, 2, 3, 4, 5]
print "List state is ", w
print "First item in list is", w[0]
x = 1 # x is rotation
w0 = w[:-x]
w = w[-x:]
w.extend(w0)
print "List state after rotation is ", w
print "First item in list is", w[0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM