我是编码(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!")
但我想尝试修复可能的初始代码。
答案 0 :(得分:0)
您可以使用sys.exit()
而不是break
来中断循环(此处为while
循环),也可以使用将从函数返回的return
。
请注意,您可以通过使用return yourValue
从函数中返回一个值以在其中使用它,但对您而言这是没有用的。
另外,另一个有用的控制流关键字是continue
,它允许您跳过循环的迭代。所有这些关键字均可用于while
和for
循环。
为使您的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)
int
与int
进行比较,因为您将其与in
的数组进行比较not in
和password
检查输入的号码是否在break
中exit()
代替break
。 while
只会退出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;