我的尝试有啥问题,除了?我没有得到任何打印,也没有错误
Posted
技术标签:
【中文标题】我的尝试有啥问题,除了?我没有得到任何打印,也没有错误【英文标题】:What is wrong with my try except? I'm not getting either print, nor an error我的尝试有什么问题,除了?我没有得到任何打印,也没有错误 【发布时间】:2021-12-05 20:53:02 【问题描述】:对 python 和自动化非常陌生。 我们的网站在页面顶部有一个计数器来倒计时直到星期五。它包含数字,然后是文本 - 直到 #friday 的天数(星期五除外,它没有数字,并显示 It's #friday!)
我星期五的代码正在运行。
elif datetime.datetime.today().weekday() == 4:
countdown_text = driver.find_element_by_class_name("friday-text").text
try:
if countdown_text == "IT'S #FRIDAY":
print("Friday Counter is correct. It's Friday.")
except:
print("Friday Counter is incorrect")
我的问题似乎是将数字和文本联系在一起。这是我所拥有的。
if datetime.datetime.today().weekday() == 0:
countdown_text = driver.find_element_by_class_name("friday-text").text
countdown_number = driver.find_element_by_class_name("count")
try:
if countdown_text == "DAYS UNTIL #FRIDAY" and countdown_number == 4:
print("Friday Counter is correct. It's Monday - unfortunately.")
except:
print("Friday Counter is incorrect.")
我目前没有输出,今天也没有错误。
【问题讨论】:
您是否尝试使用try .. except
而不是else
子句?如果是这样,为什么?根据字符串文字检查这两个变量的值不会引发异常,显然这也不是它们的值,因此不会打印任何消息。
我在使用 try... 只是因为我不知道更好。我通过将 if 更改为基于似乎已被删除的另一个用户的答案的断言来使打印工作 - 但如果它得到相同的结果,我可以将它们全部设为 if else 语句。
【参考方案1】:
试试这样的..
关键点:
我们首先有一个以 int 形式返回今天的函数 然后我们检查“如果不是星期五,则打印距离星期五还有多少天” days_until_friday 是一个函数,用于计算星期五 (4) - 今天(如果是星期二,则为 1)的基本数学运算 today_with_types 是一种使用内置标准库从数字中获取命名日期的方法,无需创建字典或地图。我说类型是因为 datetime 是一个对象,我们可以在其上进行格式化和日期时间转换/计算时间增量。from datetime import datetime, timedelta
def today_is():
"""
this returns a single int of what is today
0 = monday, 1 = tues, 2 = wed, 3 = thur
you can test what happens on different days by changing return 1 or return 4
"""
return datetime.today().weekday()
if today_is() != 4:
def days_until_friday():
countdown_days = 4 - today_is()
return countdown_days
today_with_types = datetime.now() + timedelta(days=today_is())
print("mate, today is", today_with_types.strftime("%A"), "we got", days_until_friday(), "to go" )
else:
countdown_text = "mate you made it, it's friday!!"
print(countdown_text)
ooof,忘记/想当然:进口,只进口你需要的东西,或命名你的进口,在互联网上你会发现人们使用datetime.datetime
vs datetime
vs dt
如果你进口的例子datetime.datetime
你必须总是使用那个长名字。
如果您导入 datetime from datetime
,那么您可以使用 datetime
而不使用 datetime.
。
您还可以命名您的导入...注意您导入的函数或类
命名导入示例 1
from datetime import datetime as daybanana
print("HAHHAHAHAHAHAHA", daybanana.now())
示例 2
import datetime as dt
print("HAHHAHAHAHAHAHA", dt.datetime.now())
【讨论】:
这很有帮助——尤其是导入名称。如果我被误认为我是新手,请原谅我,但如果我理解正确的话,如果我正在构建计数器元素,你给出的似乎很有帮助。该元素已构建并位于页面上。目前我正在尝试验证元素是否存在并且文本是否正确。这就是我现在所拥有的,我收到打印消息说星期一的日期不正确(现在是星期一,所以我不确定为什么会这样。)【参考方案2】:您在上面看到的是if, else
工作。
try/except
很好很好,但是我没用。
我选择不使用 try/except,因为我认为它是复杂性的“下一个级别”。
from datetime import datetime
import sys
def tell_time():
print(datetime.now())
try:
tell_time()
except Exception as e:
print(
"Error on line ".format(sys.exc_info()[-1].tb_lineno),
type(e).__name__,
e,
)
这里的例子:
-
我们将工作拆分为小功能
如果
tell_time()
函数没有正确退出,我们使用try 到try 来运行代码和except。
如果 try 无法运行代码,您可以让 except 运行另一个函数,并将日志记录到文件中,或者什么也不做(这是您的代码您的想象力)。
尝试在tell_time()
函数中添加一些错误代码,尝试中断tell_time()
并运行代码,看看它如何返回异常中的内容?
您可以为每次失败编写异常,甚至可以将异常用作 if/else,但这需要更多的输入,并且在您看到代码正常工作之前需要做更多的事情(距星期五还有 3 天!)。
【讨论】:
以上是关于我的尝试有啥问题,除了?我没有得到任何打印,也没有错误的主要内容,如果未能解决你的问题,请参考以下文章
在 nodeJS 中使用爬虫并没有给我任何结果,但是当我在浏览器中尝试相同的代码时,它会给出。我的代码有啥问题?
命令“wmic 打印机获取 MarkingTechnology”没有显示任何值