有没有办法进一步缩小这段代码?
Is there any way to minify this code further?
这里我有一段 python 脚本。这是一个简单的猜谜游戏。我在想,我能把它归结到什么程度?除了导入模块之外,我还能使用其他技巧来删除一些无关代码吗?
from random import randint
n = randint(1,20)
print("I'm thinking of a number 1-20. Keep guessing until you get it!")
while True:
try:
g = int(input(""))
except(ValueError):
print("INPUT MUST BE AN INTEGER!")
else:
if g == n:
print("YOU WIN!")
exit()
if g > n:
print("Too high!")
else:
print("Too low!")
看起来不错。您不能真正让它更短,但可以使用处理获取用户输入的 get_number
函数使其更具可读性。此外,您可以 break
您的循环而不是使用 exit
。
一旦 Assignment Expressions 命中 Python 3.8,你甚至可以摆脱那个 break
:
from random import randint
def get_number():
'ask for an integer until user provides an integer'
while True:
try:
g = int(input('enter integer: '))
return g
except ValueError:
print('INPUT MUST BE AN INTEGER!')
secret = random.randint(1, 20)
while (g := get_number()) != secret:
if g > n:
print('too high!')
else:
print('too low!')
print('YOU WIN!')
这里我有一段 python 脚本。这是一个简单的猜谜游戏。我在想,我能把它归结到什么程度?除了导入模块之外,我还能使用其他技巧来删除一些无关代码吗?
from random import randint
n = randint(1,20)
print("I'm thinking of a number 1-20. Keep guessing until you get it!")
while True:
try:
g = int(input(""))
except(ValueError):
print("INPUT MUST BE AN INTEGER!")
else:
if g == n:
print("YOU WIN!")
exit()
if g > n:
print("Too high!")
else:
print("Too low!")
看起来不错。您不能真正让它更短,但可以使用处理获取用户输入的 get_number
函数使其更具可读性。此外,您可以 break
您的循环而不是使用 exit
。
一旦 Assignment Expressions 命中 Python 3.8,你甚至可以摆脱那个 break
:
from random import randint
def get_number():
'ask for an integer until user provides an integer'
while True:
try:
g = int(input('enter integer: '))
return g
except ValueError:
print('INPUT MUST BE AN INTEGER!')
secret = random.randint(1, 20)
while (g := get_number()) != secret:
if g > n:
print('too high!')
else:
print('too low!')
print('YOU WIN!')