使用Python进行调试,混合输出

我需要处理用户输入,以便用户仅输入4个唯一数字,并用空格分隔,否则,将显示错误消息。我能够弄清楚该怎么做,但面临一个特殊的问题。如您在屏幕快照中所见,我的输入第一次是1 2 3 4时,我得到了预期的输出,然后我输入了1 1 1 1并再次得到了预期的输出,但是随后,我再次输入了1 2 3 4。这是我得到意外结果的时候。想知道您是否可以帮助我调试此代码。谢谢。

代码也可以在这里找到:https://pastebin.com/mMucpBPd

我提供了一些打印命令,只是为了查看问题出在哪里以及每一步的结果。

 var body: some View {
    VStack {
        Button(action: {
            withAnimation{
                self.showSlider.toggle()}

        }) {
            Text("Show Slider")
        }
        Spacer()

        if showSlider {
            JustTheSlider(val: $val)
                .padding()
                .transition(.move(edge: .bottom))

        }
    }
}
szd00789 回答:使用Python进行调试,混合输出

现在编写代码的方式是,您递归调用user_guess_validation函数,以使用户在输入无效内容时输入新的输入。这是大禁忌。您的main函数也可以使用循环。如果用户输入的内容有效,但与密码不匹配,则您将继续要求他们重试,而不仅仅是询问一次。

def user_guess_validation():
    message = "Enter your guess: "
    while True:
        user_input = input(message)
        message = "Input invalid. Try again: "
        numbers = user_input.split()
        if len(set(numbers)) != 4:
            continue
        all_digits = True
        all_in_range = True
        for number in numbers:
            if not number.isdigit():
                all_digits = False
                break
            elif int(number) not in range(1,10):
                all_in_range = False
                break

        if not all_digits or not all_in_range:
            continue
        return list(map(int,numbers))

def main():
    from random import sample

    secret_code = sample(range(1,10),k=4)

    while True:
        validated_guess = user_guess_validation()

        if validated_guess == secret_code:
            print("Correct!")
            break
        print("Wrong! Try again.")

main()
本文链接:https://www.f2er.com/3163273.html

大家都在问