if语句,来回
if statement, going back and forth
我是 python 的新手,但已经编写了一些结构化文本和一点点 C++
现在我正在使用 if 语句解决一个问题,它似乎不像我习惯的那样工作
示例代码:
more_guests = 0
loop = bool; loop = False
ferdig = int; ferdig = 1
while loop == False:
guests = []
more_guests = 0
if int(ferdig) == 1:
guest = input("type in guest ")
more_guests = int(input("done? 1 for yes 2 for no "))
if int(more_guests) == 1:
guests.append(guest)
ferdig == 3
elif int(more_guests) == 2:
guests.append(guest)
ferdig == 2
else:
print("unvalid answer, please use 1 or 2")
ferdig == 1
elif int(ferdig) == 2:
ferdig = 1
elif int(ferdig) == 3:
print(guests)
else:
loop = True
我试过确保它是一个整数等等,只是继续坚持完成吗? 1 表示是 2 表示否,它总是让我返回输入 guest
在使用结构化文本时,我经常使用这种来回的方式,但在 python 中我似乎无法理解它,也许我更应该使用 case/switch?
无论如何,如果有人可以帮助我理解您是否可以在 python 中以这种方式使用 IF 语句,我们将不胜感激
我想你写错了运算符。
ferdig == 1 只是比较值运算符。所以它是 return 真 (1) 或假 (0)。
如果你想改变 ferdig 的值,你应该在 if 语句中写 ferdig = 3。
我已经稍微清理了你的代码以获得我认为你想要的。
guests = []
while True:
guest = input("type in guest ")
guests.append(guest)
response = int(input("done? 1 for yes 2 for no "))
if response == 1:
print(guests)
break
elif response == 2:
continue
elif response == 3:
print(guests)
else:
print("invalid answer, please use 1 or 2")
你的代码有很多问题,这里已经解决了:
more_guests = 0
# you don't need to declare types, but if you want to, this is how
loop: bool = False
# however, Python can just infer the type itself like this
ferdig = 1
# you don't want to reset guests every time around the loop
guests = []
while loop == False:
more_guests = 0
if int(ferdig) == 1:
guest = input("type in guest ")
# you always want to append a guest, including if someone types a 1 after
guests.append(guest)
more_guests = int(input("done? 1 for yes 2 for no "))
if int(more_guests) == 1:
ferdig = 3
elif int(more_guests) == 2:
ferdig = 2
else:
print("invalid answer, please use 1 or 2")
ferdig = 1
elif int(ferdig) == 2:
ferdig = 1
elif int(ferdig) == 3:
# after printing, you're done, you don't want to print forever
print(guests)
loop = True
请注意,您的大部分代码并不是真正需要的,您正在做很多 Python 可以为您做的簿记工作,或者根本不需要:
# this isn't needed, because you set that at the start of the loop anyway
# more_guests = 0
# this isn't needed, because you can tell when to stop from ferdig
# loop: bool = False
# starting at 2, since that means you want to keep going
ferdig = 2
guests = []
while ferdig != 1:
# this isn't needed, you can just read ferdig
# more_guests = 0
# this isn't needed, you want a new guest on every loop
#if int(ferdig) == 1:
guest = input("type in guest ")
guests.append(guest)
ferdig = int(input("done? 1 for yes 2 for no "))
# none of this is needed, all you need to know is if ferdig is 1 or 2
# if int(more_guests) == 1:
# ferdig = 3
# elif int(more_guests) == 2:
# ferdig = 2
# else:
if ferdig not in (1, 2):
print("invalid answer, please use 1 or 2")
ferdig = 1
# this is also not needed, at this point ferdig will be 1 or 2
# elif int(ferdig) == 2:
# ferdig = 1
# elif int(ferdig) == 3:
# put the print outside the loop and it only prints once
print(guests)
# got rid of this
# loop = True
所以,这只是:
ferdig = 2
guests = []
while ferdig != 1:
guest = input("type in guest ")
guests.append(guest)
ferdig = int(input("done? 1 for yes 2 for no "))
if ferdig not in (1, 2):
print("invalid answer, please use 1 or 2")
ferdig = 1
print(guests)
最后,这样做也是一样的:
more_guests = True
guests = []
while more_guests:
guests.append(input("type in guest "))
more_guests = input("done? 1 for yes") != '1'
print(guests)
这里有另一种方法可以使用函数来完成您想要做的事情。
guests = []
def add_guest():
guest = input("type in guest ")
guests.append(guest)
add_more()
def add_more():
more_guests = int(input("done? 1 for yes 2 for no "))
#if they answer 1 we print out the final list
if more_guests == 1:
print("the guest list is {}".format(guests))
print('have a nice day')
#if they answer 2 we go to the add_guest function
elif more_guests == 2:
add_guest()
#if they answer anything other than 1 or 2 we re-call the add_more function.
else:
print("unvalid answer, please use 1 or 2")
add_more()
add_guest()
我是 python 的新手,但已经编写了一些结构化文本和一点点 C++ 现在我正在使用 if 语句解决一个问题,它似乎不像我习惯的那样工作
示例代码:
more_guests = 0
loop = bool; loop = False
ferdig = int; ferdig = 1
while loop == False:
guests = []
more_guests = 0
if int(ferdig) == 1:
guest = input("type in guest ")
more_guests = int(input("done? 1 for yes 2 for no "))
if int(more_guests) == 1:
guests.append(guest)
ferdig == 3
elif int(more_guests) == 2:
guests.append(guest)
ferdig == 2
else:
print("unvalid answer, please use 1 or 2")
ferdig == 1
elif int(ferdig) == 2:
ferdig = 1
elif int(ferdig) == 3:
print(guests)
else:
loop = True
我试过确保它是一个整数等等,只是继续坚持完成吗? 1 表示是 2 表示否,它总是让我返回输入 guest
在使用结构化文本时,我经常使用这种来回的方式,但在 python 中我似乎无法理解它,也许我更应该使用 case/switch? 无论如何,如果有人可以帮助我理解您是否可以在 python 中以这种方式使用 IF 语句,我们将不胜感激
我想你写错了运算符。 ferdig == 1 只是比较值运算符。所以它是 return 真 (1) 或假 (0)。
如果你想改变 ferdig 的值,你应该在 if 语句中写 ferdig = 3。
我已经稍微清理了你的代码以获得我认为你想要的。
guests = []
while True:
guest = input("type in guest ")
guests.append(guest)
response = int(input("done? 1 for yes 2 for no "))
if response == 1:
print(guests)
break
elif response == 2:
continue
elif response == 3:
print(guests)
else:
print("invalid answer, please use 1 or 2")
你的代码有很多问题,这里已经解决了:
more_guests = 0
# you don't need to declare types, but if you want to, this is how
loop: bool = False
# however, Python can just infer the type itself like this
ferdig = 1
# you don't want to reset guests every time around the loop
guests = []
while loop == False:
more_guests = 0
if int(ferdig) == 1:
guest = input("type in guest ")
# you always want to append a guest, including if someone types a 1 after
guests.append(guest)
more_guests = int(input("done? 1 for yes 2 for no "))
if int(more_guests) == 1:
ferdig = 3
elif int(more_guests) == 2:
ferdig = 2
else:
print("invalid answer, please use 1 or 2")
ferdig = 1
elif int(ferdig) == 2:
ferdig = 1
elif int(ferdig) == 3:
# after printing, you're done, you don't want to print forever
print(guests)
loop = True
请注意,您的大部分代码并不是真正需要的,您正在做很多 Python 可以为您做的簿记工作,或者根本不需要:
# this isn't needed, because you set that at the start of the loop anyway
# more_guests = 0
# this isn't needed, because you can tell when to stop from ferdig
# loop: bool = False
# starting at 2, since that means you want to keep going
ferdig = 2
guests = []
while ferdig != 1:
# this isn't needed, you can just read ferdig
# more_guests = 0
# this isn't needed, you want a new guest on every loop
#if int(ferdig) == 1:
guest = input("type in guest ")
guests.append(guest)
ferdig = int(input("done? 1 for yes 2 for no "))
# none of this is needed, all you need to know is if ferdig is 1 or 2
# if int(more_guests) == 1:
# ferdig = 3
# elif int(more_guests) == 2:
# ferdig = 2
# else:
if ferdig not in (1, 2):
print("invalid answer, please use 1 or 2")
ferdig = 1
# this is also not needed, at this point ferdig will be 1 or 2
# elif int(ferdig) == 2:
# ferdig = 1
# elif int(ferdig) == 3:
# put the print outside the loop and it only prints once
print(guests)
# got rid of this
# loop = True
所以,这只是:
ferdig = 2
guests = []
while ferdig != 1:
guest = input("type in guest ")
guests.append(guest)
ferdig = int(input("done? 1 for yes 2 for no "))
if ferdig not in (1, 2):
print("invalid answer, please use 1 or 2")
ferdig = 1
print(guests)
最后,这样做也是一样的:
more_guests = True
guests = []
while more_guests:
guests.append(input("type in guest "))
more_guests = input("done? 1 for yes") != '1'
print(guests)
这里有另一种方法可以使用函数来完成您想要做的事情。
guests = []
def add_guest():
guest = input("type in guest ")
guests.append(guest)
add_more()
def add_more():
more_guests = int(input("done? 1 for yes 2 for no "))
#if they answer 1 we print out the final list
if more_guests == 1:
print("the guest list is {}".format(guests))
print('have a nice day')
#if they answer 2 we go to the add_guest function
elif more_guests == 2:
add_guest()
#if they answer anything other than 1 or 2 we re-call the add_more function.
else:
print("unvalid answer, please use 1 or 2")
add_more()
add_guest()