一会儿if漏洞

Loophole of an if inside a while

我制作了这个程序,要求用户输入 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()
       

你好像没有调用方法upper,那么cambio的值是<function str.upper>,执行的条件none让你一直在无限循环。

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

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

我在 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()