在Python 3中使用清单和if语句针对begginer进行While循环

时间:2019-04-01 08:31:56

标签: python python-3.x

我是编码(Python)的新手,正在尝试学习循环。我在使用while和for循环时遇到了一些困难。在这里,我试图创建一个函数并使用while循环。我可以对如何解决此代码有一些想法,并对我做错了什么得到一些解释吗?

我想用这段代码来实现的是,我将一些数字存储在一个秘密的列表中。直到用户没有输入这些数字之一,循环才会继续询问。用户键入数字之一后,循环将优先退出而无需使用sys中的exit()。

def hell_hole():
 print("You have just fallen through the hell hole.")
 print("You must guess the right number to stop falling otherwise this program will keep repeating.")
 print("The right numbers are between 1 - 10 ")
 password = [4,9,8]

  while True:
    typed_in = input("What is the passing code?\n> ")
    if typed_in != password:
        print("Wrong, try again!")
    elif typed_in == password:
        print("Well done! You have stopped falling.")
    else:
        print("Say what?")

我知道,如果我将if语句更改为此,则可以解决此问题:

  while True:
    typed_in = input("\nWhat is the passing code?\n> ")

    if "4" in typed_in or "8" in typed_in or "9" in typed_in:
        print("Well done! You have stopped falling.")
        exit()
    else:
        print("Wrong, try again!")

但我想尝试修复可能的初始代码。

5 个答案:

答案 0 :(得分:0)

您可以使用sys.exit()而不是break来中断循环(此处为while循环),也可以使用将从函数返回的return

请注意,您可以通过使用return yourValue从函数中返回一个值以在其中使用它,但对您而言这是没有用的。

另外,另一个有用的控制流关键字是continue,它允许您跳过循环的迭代。所有这些关键字均可用于whilefor循环。

为使您的if语句更好,我认为您应该检查密码是否是您希望输入的值之一:

if typed_in in ["4","8","9"]:

或检查这些值之一是否在输入的字符串中,就像您看起来一样:

if any(x in typed_in for x in ["4", "8", "9"]):

答案 1 :(得分:0)

您可以使用in语句:

password = ['4','9','8']
while True:
    typed_in = input("\nWhat is the passing code?\n> ")

    if typed_in in password:
        print("Well done! You have stopped falling.")
        break
    else:
        print("Wrong, try again!")

答案 2 :(得分:0)

  

注意:您正在尝试将输入(字符串)与整个列表进行比较:

     
    

如果typed_in!=密码

  

相反,请检查输入内容是否在列表中

  

检查列表中是否存在值的最快方法:

     
    

如果在中输入密码:

  

也在您的列表中(密码= [4,9,8]),您有整数,input()返回字符串

因此,您需要将输入转换为整数:

  

int (输入(“什么是密码?\ n>“))

return语句可以用作一种控制流。通过将一个(或多个)return语句放入一个函数中,return语句使您可以终止函数的执行

password = [4,9,8] # List of numbers 
while True:
    typed_in = int(input("What is the passing code?\n> "))
    if typed_in not in password: # Check if input is IN the list
        print("Wrong, try again!")
    elif typed_in in password: # Check if input is NOT in the list
        print("Well done! You have stopped falling.")
        return # Exit function
    else:
        print("Say what?")

答案 3 :(得分:0)

您将在下面找到代码的有效版本! 就像已经发布的一样,如果您要检查用户输入的数字是否在密码列表中,则可以使用关键字in来完成。此外,由于密码是整数,因此您需要将输入转换为这种类型。

要退出while循环,可以使用break,它可以退出更多嵌套的循环!

希望有帮助!

def hell_hole():
print("You have just fallen through the hell hole.")
print("You must guess the right number to stop falling otherwise this program will keep repeating.")
print("The right numbers are between 1 - 10 ")
password = [4,9,8]

while True:
    typed_in = int(input("What is the passing code?\n> "))
    if typed_in in password:
        print("Well done! You have stopped falling.")
        break
    else:
        print("Wrong, try again!")

答案 4 :(得分:0)

  • 将用户输入的内容intint进行比较,因为您将其与in的数组进行比较
  • 使用not inpassword检查输入的号码是否在break
  • 使用exit()代替breakwhile只会退出while True: typed_in = int(input("What is the passing code?\n> ")) if typed_in not in password: print("Wrong, try again!") elif typed_in in password: print("Well done! You have stopped falling.") break else: print("Say what?") 循环。

有效的实现方式:

model RefactoredFlatModel
  parameter Real x=4;
  parameter Real y(fixed=false);
  Real z;
  ComplexModel mStatic;
  ComplexModel mDynamic;
initial equation 
  y = mStatic.y;
equation 
  // The assignment is needed to have enough equations, even though its static
  mStatic.x = x;

  mDynamic.x = 4*x;
  z = mDynamic.y;
end RefactoredFlatModel;

演示:https://repl.it/@glhr/55450907