首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(Python 2.7.5)

(Python 2.7.5)
EN

Stack Overflow用户
提问于 2013-11-07 20:17:37
回答 3查看 2.9K关注 0票数 2

我正在尝试做一个函数,要求3-8之间的整数,并将继续询问,直到用户输入一个3-8之间的整数。因此,如果您输入0、-1、9或"rabbits“,它将再次询问。

到目前为止,我有这样的想法:

代码语言:javascript
运行
复制
def GetNumberOfColours():
    NumberOfColours = None
    while type(NumberOfColours) != int or int(NumberOfColours) < 3 or int(NumberOfColours) > 8:
        print "Please enter the amount of colours you would like to play with (min 3, max 8)."
        NumberOfColours = raw_input()
    NumberOfColours = int(NumberOfColours)

但这段代码目前不能工作,因为它接受原始输入,如果是整数,也不会将其视为整数。但是,如果我使用input(),那么它将不会接受可以输入的字符串,并停止代码。我怎么才能让它工作呢?

EN

回答 3

Stack Overflow用户

发布于 2013-11-07 20:22:41

type(NumberOfColours)将始终为str (或在第一次运行时为NoneType ),因为raw_input()返回一个字符串。

你应该这样做:

代码语言:javascript
运行
复制
def get_number_of_colours():
    while True:
        print "Please enter the amount of colours you would like to play with (min 3, max 8):",
        try:
            num_colours = int(raw_input())
        except ValueError:  # gets thrown on any input except an integer value
            continue
        if 3 <= num_colours <= 8:
            return num_colours
票数 2
EN

Stack Overflow用户

发布于 2013-11-07 20:22:46

您需要缩进最后一行,让脚本重复地将输入转换为整数。

然后您会发现,由于int()不能将其转换为数字,因此输入"rabbits“将生成一个ValueError。这可以使用try/except来处理

代码语言:javascript
运行
复制
def GetNumberOfColours():
    NumberOfColours = None
    while type(NumberOfColours) != int or int(NumberOfColours) < 3 or int(NumberOfColours) > 8:
        print "Please enter the amount of colours you would like to play with (min 3, max 8)."
        NumberOfColours = raw_input()
        try:
            NumberOfColours = int(NumberOfColours)
        except ValueError:
            NumberOfColours = None
票数 1
EN

Stack Overflow用户

发布于 2013-11-07 20:24:40

在您的while行中使用以下代码:

代码语言:javascript
运行
复制
while !NumberOfColors.isDigit() or int(NumberOfColours) < 3 or int(NumberOfColours) > 8:
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19835723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档