请问我要怎么修改这个代码,我一直运行不出不出来,谢谢
from math import log2
from random import randint
def ever_step(n):
num = n - (2 ** int(log2(n)) - 1)
half = n // 2
if num <= half:
return num
return randint(1,half)
n=randint(1,101)
print(smart(n))
def smart(n):
while n > 1:
print("你的回合,还剩下{}物品".format(n))
while True:
try:
num = int(input("你要拿走的数量:"))
1 <= num <= n // 2
break
except:
pass
n = n-num
if n == 1:
return "我输了"
n = n- every_step(n)
if n==0:
return "电脑输了"
你这个代码结构和逻辑有点问题,我帮你改了一下,你看看:
from math import log2
from random import randint
def ever_step(n):
num = n - (2 ** int(log2(n)) - 1)
half = n // 2
if num <= half:
return num
return randint(1,half)
def smart(n):
while n > 1:
print("你的回合,还剩下{}物品".format(n))
while True:
try:
num = int(input("你要拿走的数量:"))
except:
pass
if 1 <= num <= n // 2:
n = n-num
if n == 1:
return "你输了"
pcn = ever_step(n)
print(f'电脑拿走{pcn}个')
n = n - pcn
if n==0:
return "电脑输了"
break
else:
print('最多只能拿走一半物品')
print("你的回合,还剩下{}物品".format(n))
return "你输了"
n=randint(1,101)
print(smart(n))
1 <= num <= n // 2
这是要干啥,不得if判断么,直接break啊