【问题标题】:Loophole of an if inside a while [closed]一段时间内的if漏洞[关闭]
【发布时间】:2020-07-09 16:53:10
【问题描述】:

我制作了这个程序,要求用户输入 6 个不同的数字,所以如果对数字不满意,他可以更改它们。问题是我设置了这个条件,所以它会重新编辑数字,但它似乎在检查它是否对数字满意的输入“cambio”的 var 中存在漏洞。

import random

def ingreso_numeros():
    
    while len(nums_usuario) < 6:

        num = int(input("Ingrese un número del 0 al 15: "))
        
        if num in range(0,15) and num not in nums_usuario:
            nums_usuario.append(num)
            
        elif num not in range(0,15) and num not in nums_usuario:
            print("El número ingresado no está entre 0 y 15")
                              
        elif num in range(0,15) and num in nums_usuario:
            print("El número ya fue ingresado")

        else:
            ("Machine Broke, contact supervisor")

    print("Sus números ingresados son:",nums_usuario)

def quini_numeros():

    while len(nums_quini) < 6:
        x = randint(0,15)
        
        if x not in nums_quini:
            nums_quini.append(x)
            conteo+=1

        else:
            pass
        
    #testeo#
    print(nums_quini)
    #testeo#
    
## ------------ main -----------------------------------------
            
nums_quini = []
nums_usuario = []
opcion = True

ingreso_numeros()


while opcion == True:

    cambio = input("¿Desea cambiar sus números? Sí(S)/No(N): ").upper
    
    if cambio == "S":
        nums_usuario.clear()
        ingreso_numeros()

    elif cambio == "N":
        opcion = False
        quini_numeros()
       

【问题讨论】:

  • 您能否提供一个运行示例来说明您想要实现的目标?
  • 是的,但是我在 while 循环中做了 if 语句,所以如果用户输入“S”它应该清除列表并激活函数来重写它,如果用户写“N”,打破通过将 cambio 的状态更改为 False 来循环
  • 完成,我以为我已经点击了它(顺便说一句:昆卡美丽的地方,我在 3 月份在那里待了 2 个月)

标签: python python-3.x boolean


【解决方案1】:

您似乎没有调用方法upper,那么cambio 的值是&lt;function str.upper&gt;,并且没有执行任何条件使您处于无限循环中。

cambio = input("¿Desea cambiar sus números? Sí(S)/No(N): ").upper() # use ()

【讨论】:

    【解决方案2】:

    我认为查看您的代码,我想您正在检查随机整数是否与用户输入的相同。

    我在 python3 中尝试了您的代码,发现了一些我修复的问题。希望这可以帮助您进步。

    import random
    from random import randint
    
    def ingreso_numeros():
        while len(nums_usuario) < 6:
            num = int(input("Ingrese un numero del 0 al 15: "))
            if num in range(0,15) and num not in nums_usuario:
                nums_usuario.append(num)
            elif num not in range(0,15) and num not in nums_usuario:
                print("El numero ingresado no esta entre 0 y 15")
            elif num in range(0,15) and num in nums_usuario:
                print("El numero ya fue ingresado")
    
            else:
                ("Machine Broke, contact supervisor")
    
        print("Sus numeros ingresados son:",nums_usuario)
    
    def quini_numeros():
    
        # you should declare before using a var
        conteo = 0
        while len(nums_quini) < 6:
            x = randint(0,15)
            if x not in nums_quini:
                nums_quini.append(x)
                conteo+=1
    
            else:
                pass
        #testeo#
        print(nums_quini)
        #testeo#
    ## ------------ main -----------------------------------------
    nums_quini = []
    nums_usuario = []
    opcion = True
    
    ingreso_numeros()
    
    
    while opcion == True:
    
        cambio = input("enter your numbers? Yes(S)/No(N): ").upper()
        print (cambio)
        if cambio == "S":
            print(nums_usuario)
            nums_usuario.clear()
            ingreso_numeros()
    
        elif cambio == "N":
            opcion = False
            quini_numeros()
    

    【讨论】:

    • 是的,在(非)漏洞问题之后,我看到了他们并解决了所有问题,非常感谢
    猜你喜欢
    • 2010-09-13
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多