我的尝试有啥问题,除了?我没有得到任何打印,也没有错误

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() 函数没有正确退出,我们使用trytry 来运行代码和except。 如果 try 无法运行代码,您可以让 except 运行另一个函数,并将日志记录到文件中,或者什么也不做(这是您的代码您的想象力)。 尝试在tell_time() 函数中添加一些错误代码,尝试中断tell_time() 并运行代码,看看它如何返回异常中的内容? 您可以为每次失败编写异常,甚至可以将异常用作 if/else,但这需要更多的输入,并且在您看到代码正常工作之前需要做更多的事情(距星期五还有 3 天!)。

【讨论】:

以上是关于我的尝试有啥问题,除了?我没有得到任何打印,也没有错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 C 结构在输入中没有得到任何数据?

在 nodeJS 中使用爬虫并没有给我任何结果,但是当我在浏览器中尝试相同的代码时,它会给出。我的代码有啥问题?

命令“wmic 打印机获取 MarkingTechnology”没有显示任何值

有啥方法可以打印 rmarkdown 表而不丢失颜色?

我正在尝试从我的 SQL 数据库中传递值来填充一个表,但我没有得到任何数据

业力记者之间有啥区别?