python中的一个简单IF语句
我很难让Else语句起作用 到目前为止,我的代码如下所示:python中的一个简单IF语句,python,Python,我很难让Else语句起作用 到目前为止,我的代码如下所示: roomNumber = (input("Enter the room number: ")) def find_details(id2find): rb_text = open('roombookings2.txt', 'r') for line in rb_text: s = {} (s['Date'], s['Room'], s['Course'], s['Stage']) = l
roomNumber = (input("Enter the room number: "))
def find_details(id2find):
rb_text = open('roombookings2.txt', 'r')
for line in rb_text:
s = {}
(s['Date'], s['Room'], s['Course'], s['Stage']) = line.split(",")
if id2find == (s['Room']):
yield(s)
rb_text.close()
for room in find_details(roomNumber):
print("Date: " + room['Date'])
print("Room: " + room['Room'])
print("Course: " + room['Course'])
print("Stage: " + room['Stage'])
因此,当我进行肯定搜索并在文本文件中获得多个匹配项时,我会得到组织良好的结果
但是,我试图让它告诉我是否输入了无效的输入数据,并重新询问房间号,直到输入正确的数据
我试着用一个关于收益率的Else语句,但它不接受。
有什么想法吗?你可以这样做:
def find_details(id2find):
found = False
with open('roombookings2.txt', 'r') as rb_text:
for line in rb_text:
s = {}
(s['Date'], s['Room'], s['Course'], s['Stage']) = line.split(",")
if id2find == s['Room']:
found = True
yield(s)
if not found:
raise ValueError("No such room number!")
while True:
roomNumber = (input("Enter the room number: "))
try:
for room in find_details(roomNumber):
print("Date: " + room['Date'])
print("Room: " + room['Room'])
print("Course: " + room['Course'])
print("Stage: " + room['Stage'])
break
except ValueError as e:
print str(e)
Python块由缩进描述,因此else:note小写并带有冒号以指示块的开头应该与if语句处于相同的缩进级别
def find_details(id2find):
rb_text = open('roombookings2.txt', 'r')
for line in rb_text:
s = {}
(s['Date'], s['Room'], s['Course'], s['Stage']) = line.split(",")
if id2find == (s['Room']):
yield(s)
else:
print "this print will execute if d2find != (s['Room'])"
# ... also see DrTyrsa's comment on you question.
但我怀疑你真的不想使用else子句,你会从那里得到什么?这看起来非常像一个作业,所以我不打算发布一个精确的解决方案。我想你们需要其他的解决方案。你真的想在循环的第一次迭代后关闭该文件吗?否则:应该与..处于相同的级别:-除了上面的代码之外,也许你可以发布不适合你的代码。