首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Python) randint if/else error

(Python) randint if/else error
EN

Stack Overflow用户
提问于 2018-02-10 03:32:29
回答 3查看 228关注 0票数 0

我正在运行Python 3.6.4,但在使用randint函数时遇到了问题。尝试创建一段简单的代码来创建一个随机数,并为每个数打印一个不同的响应。我当前的代码如下:

代码语言:javascript
复制
from random import *

test = randint(0, 3)
if test == 0:
        print("Zero")
        if test == 1:
            print("Number One")
            if test == 2:
                print("Number Two")
                if test == 3:
                    print("Number Three")

唯一的问题是,只有当randint创建数字0时,它才会打印一些东西。因此,它有1/4的机会打印"Zero",其余的则不打印。

我显然是个傻子错过了一些非常简单的东西但是..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-10 03:34:46

代码语言:javascript
复制
from random import *

test = randint(0, 3)
if test == 0:
        print("Zero")
elif test == 1:
          print("Number One")
elif test == 2:
          print("Number Two")
elif test == 3:
          print("Number Three")

所有的if语句都是嵌套的,所以如果数字不是0,它们将永远不会到达!

此外,虽然不是必需的,但您可以将后续的if语句更改为elif语句。您的代码将检查每个if语句,即使您满足第一个条件。使用elif将使代码在满足任何条件后/是否满足任何条件时停止检查!

票数 2
EN

Stack Overflow用户

发布于 2018-02-10 03:36:41

Yuu希望删除这些额外的缩进,并使所有的if语句处于相同的缩进级别。使用"elif“而不是if也会更好。

代码语言:javascript
复制
if test == 0:
    print(0)
elif test == 2:
    print(2)
......
......
else:
    print("junk")
票数 0
EN

Stack Overflow用户

发布于 2018-02-10 03:39:31

问题是如果没有绘制0,剩下的代码将不会运行;包括其他检查。想想看:

代码语言:javascript
复制
test = randint(0, 3)
#Everything under this, including the other checks
#  will only run if test == 0. 
if test == 0:
    print("Zero") 

    if test == 1:
        print("Number One")

您需要使用elif

代码语言:javascript
复制
if test == 0:
    print("Zero") 

elif test == 1: # This is checked if the first check fails
    print("Number One")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48712889

复制
相关文章

相似问题

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