首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python While/for/if语句

Python While/for/if语句
EN

Stack Overflow用户
提问于 2017-03-30 06:05:15
回答 2查看 239关注 0票数 0

我写了一个将输入数字乘以127的程序。输入既不接受alpha也不接受数字9。

除了数字9之外,它不允许任何包含9的数字,例如99,19等等。我们能克服这一点吗?

另外,如果我输入"99",它会打印两次"Banned number"。这与第一个陈述有关联吗?

代码语言:javascript
复制
banned_number = "9"
while True:
    number = input("number ")

    for items in number:
        if items in banned_number:
            print ("Banned number.")
        elif number.isalpha():
            print ("Sorry, numbers only.")
        elif number.isdigit():
            a = int(number)
            print(a* 127)

我知道这个程序是无用的,它显然是无用的--我在练习循环时偏离了轨道,这就是最终的形状。有没有办法让这段代码变得更短?我们能用一个简单的代码让elif和elif都过时吗?

感谢您的耐心等待,因为我上周才开始使用Python,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-03-30 06:30:47

首先,词法比较将以字符串形式获取不正确的数字结果。

因此,如果您对要检查的特定类型感兴趣,则需要将intintstrstr进行比较,以获得正确的结果。

您可以使用isinstance(a,type)检查值的数据类型,这是执行此操作的canonical way。你可以这样做:

代码语言:javascript
复制
banned_number = [9, 1]

while True:
    input_num = input("number ")
    # This will work for both Python 2.x and Python 3.x
    try : 
        number = int(input_num)
    except :
        number = input_num

    if number in banned_number:
        print ("Banned number.")
    elif isinstance(number, str):
        print ("Sorry, numbers only.")
    elif (isinstance(number, int) or isinstance(number, float)):
        a = int(number)
        print(a* 127)

这将导致:

代码语言:javascript
复制
# for input 9
Banned number. 

# for input 'a'
Sorry, numbers only.

# for input 99
12573

另外,它打印两次输入'99'的原因是因为这将被视为两个字符的字符串'9' and '9',因此在循环时打印Banned number.两次。

票数 2
EN

Stack Overflow用户

发布于 2017-03-30 06:08:00

将逻辑从循环中去掉,并反转成员检查:

代码语言:javascript
复制
banned_number = "9"
while True:
    number = input("number ")
    if banned_number in number:
        print ("Banned number.")
    elif number.isalpha():
        print ("Sorry, numbers only.")
    elif number.isdigit():
        a = int(number)
        print(a* 127)
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43105005

复制
相关文章

相似问题

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