for and in 和 enumerate and if ...... AHHHHHHH
Posted
技术标签:
【中文标题】for and in 和 enumerate and if ...... AHHHHHHH【英文标题】:for and in and enumerate and if ...... AHHHHHHH 【发布时间】:2015-10-08 15:02:20 【问题描述】:我有一个涉及编程的学校项目。我在批处理和 python 之间转移,因为这对我来说最简单。
这是我用python编写的代码:
for i,x in enumerate(result):
if number in x:
print "Start of 1"
cursor.execute(insert1, (number))
cursor.execute(delete, (number))
f.close()
os.system("extracommands.bat 1")
print "Found Number"
else:
print "Start of 2"
cursor.execute(insert1, (number))
cursor.execute(insert2, (number))
cursor.execute(delete, (number))
f.close()
os.system("emailfine.py 1")
print "Finished 2"
我的问题是在元组中找不到字符串。发生的情况是,当有结果时,它会完美运行。但是当没有结果时,什么都不会发生。
我该如何克服这个问题?
提前谢谢你。
编辑:
我的问题可能不够具体。
result
变量实际上是使用fetchall()
命令的 mysql 执行结果。我的程序的整个代码是:
import MySQLdb
import sys
import os
print "=========================="
print "Start Registered_Or_Not.py"
print "=========================="
os.chdir("C:/DisabledParkingSpacesImages/textfiles")
f = open("numberplate.txt", "r")
number = f.read()
print number
try:
db = MySQLdb.connect(
host = 'localhost',
user = 'root',
passwd = 'jordan',
db = 'disabledparking'
)
except Exception as e:
sys.exit("Can't access the database")
print "MySQL Connection OK"
cursor = db.cursor()
cursor.execute("SELECT registration FROM registered WHERE EXISTS (SELECT 1 FROM limbo WHERE limbo.registration = registered.registration)")
result = cursor.fetchall()
insert1 = "INSERT INTO log (registration, time, date) VALUES(%s, CURRENT_TIME, CURRENT_DATE);"
insert2 = "INSERT INTO not_registered (registration, time, date) VALUES(%s, CURRENT_TIME, CURRENT_DATE);"
delete = "DELETE FROM limbo WHERE registration=%s;"
print "-------------"
print "Result:"
print result
print "-------------"
TrueFalse = False
for i,x in enumerate(result):
if number in x:
print "Start of 1"
cursor.execute(insert1, (number))
cursor.execute(delete, (number))
f.close()
os.system("extracommands.bat 1")
print "Found Number"
TrueFalse = True
elif TrueFalse == False:
print "Start of 2"
cursor.execute(insert1, (number))
cursor.execute(insert2, (number))
cursor.execute(delete, (number))
f.close()
os.system("emailfine.py 1")
print "Finished 2"
db.commit()
【问题讨论】:
这个问题可能对你有帮助:***.com/questions/1969005/enumerations-in-python?rq=1 你为什么使用enumerate
?你不会对 i
做任何事情。
嘿乔丹,我们都知道编程可能令人沮丧。你能具体说明你的问题/挑战是什么吗?您必须在哪里搜索元组中的字符串?这与您的代码有什么关系? x
是元组吗?我们必须猜测很多事情来帮助你。请提供更多信息。
更好的是,提供一个 MWE(最小工作示例)。
result
变量实际上是 MySQL 执行的结果。这是运行命令的代码:cursor.execute("SELECT registration FROM registered WHERE EXISTS (SELECT 1 FROM limbo WHERE limbo.registration = registered.registration)")
【参考方案1】:
好的,所以我回答了我自己的问题。
这是有问题的代码:
for i,x in enumerate(result):
if number in x:
print "Start of 1"
cursor.execute(insert1, (number))
cursor.execute(delete, (number))
f.close()
os.system("extracommands.bat 1")
print "Found Number"
else:
print "Start of 2"
cursor.execute(insert1, (number))
cursor.execute(insert2, (number))
cursor.execute(delete, (number))
f.close()
os.system("emailfine.py 1")
print "Finished 2"
这是没有问题的代码:
for i,x in enumerate(result):
if number in x:
print "Start of 1"
cursor.execute(insert1, (number))
cursor.execute(delete, (number))
f.close()
os.system("extracommands.bat 1")
print "Found Number"
TrueFalse = True
if TrueFalse == False:
print "Start of 2"
cursor.execute(insert1, (number))
cursor.execute(insert2, (number))
cursor.execute(delete, (number))
f.close()
os.system("emailfine.py 1")
print "Finished 2"
【讨论】:
我很困惑。你为什么要这样做?以上是关于for and in 和 enumerate and if ...... AHHHHHHH的主要内容,如果未能解决你的问题,请参考以下文章
enumerateObjectsWithOptions 和for 循环
转was mutated while being enumerated 你是不是以为你真的懂For...in... ??