是否可以在不使用任何类型的赋值运算符(=
,=+
等)的情况下使python从1计数到无穷大?也无法导入或调用任何包含赋值运算符的代码。
我设法找到了解决方案,但它仅适用于IDLE,因为它使用_
:
if 1:
1
while 1:
for x in range(_+1, _*3):
x
您能想到一个始终有效的解决方案吗? (没有使用_
)
答案 0 :(得分:1)
以下是一种可能的解决方案:
for x in [0]:
while 1:
for x in [x+1]:
print x
它的工作原因是:
for var in [value]: pass
与
相同var = val
因此,您可以在不使用=
运算符的情况下编写所需内容!但请记住,python显然是在幕后执行任务。
name = raw_input('Whats your name?') #With = operator
for name in [raw_input('Whats your name?')]: pass #Without = operator
您也可以使用此功能:
def assign(lval, val):
globals().update({lval:val})
答案 1 :(得分:0)
听起来像是一个可怕的任务定义。一切都存储在某个地方的内存中,因此必须将所有内容分配到某处,即使它是CPU上的寄存器。如果字面意思是您不能使用包含=
的运算符,那么locals().__setitem__("varname", varname+1)
可以正常工作,或locals().update({"varname": varname+1})
如果__setitem__
已用完。在某种程度上,以下是存储一个数不胜数的数字,我们无法访问它。
def ones():
while True:
yield 1
sum(ones())
答案 2 :(得分:0)
count = bytearray()
unit = ord(b'|')
while len(count) < 10: # replace with True to continue indefinitely
print("Decimal: {}; Unary: {}".format(len(count), count.decode()))
count.append(unit)
打印
Decimal: 0; Unary:
Decimal: 1; Unary: |
Decimal: 2; Unary: ||
Decimal: 3; Unary: |||
Decimal: 4; Unary: ||||
Decimal: 5; Unary: |||||
Decimal: 6; Unary: ||||||
Decimal: 7; Unary: |||||||
Decimal: 8; Unary: ||||||||
Decimal: 9; Unary: |||||||||