获取范围内的整数输入

2024-05-13 16:51:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取原始输入并检测它是否在范围内。
这是我的密码。

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    if next == int in range(50):
        how_much = int(next)
    else:
        dead("Man, learn how to type a number.")

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")

当我输入一个数字时,它会给我另一个:“伙计,学习如何键入一个数字。”
我猜行不通的是“如果next==in t在范围(50):
有人能帮我吗?
提前谢谢!
编辑:
我是个笨蛋,所以那条线简直就是我的停车场。
我想它会检查下一步,看看它是否是一个0-50范围内的整数。


Tags: inyou密码if数字elsehownext
3条回答

因为raw_input返回一个字符串,所以需要首先转换为int。尝试用以下内容替换行:

if int(next) in range(50):

raw_input()的结果将是一个字符串,因此首先需要检查next是否都是数字。有几种方法可以做到这一点,最简单的方法是使用^{}函数:

next = raw_input("> ")
if next.isdigit():
    how_much = int(next)
else:
    dead("Man, learn how to type a number.")

注意,不需要检查next的值是否在0到50的范围内,因为下一个if语句已经检查该值是否小于50,并且next.isdigit()将排除负数。

如果你想“在一个范围内得到一个整数输入”,你需要两件事:

  1. 检查输入是否为int
  2. 检查它是否在你的范围内

检查输入是否为int

try/except在这里将是完美的:

n = raw_input('> ')
try:
    n = int(n)
except ValueError:
    dead() # or what you want

为什么这么好?
因为如果nint,您将让它将其转换为整数,如果它不是异常,您可以调用您的dead()函数。

检查它是否在您的范围内

如果达到这一点,则意味着未引发异常之前,n已转换为整数。

所以你只需要:

if 0 <= n <= 50:
    print 'You win'
else:
    print 'You lose'

不要这样做:

if n in range(50):
    # ...

因为它将免费建立一个50个数字的列表。

注意:不要使用next作为变量,因为它会隐藏内置的^{}

相关问题 更多 >