老师您好,我有个疑问,既然finally语句和程序结尾的语句都一样的无论程序是否发生异常,都会被执行,那么finally语句的作用到底是什么呢,需要执行的语句直接放结尾不就可以了吗
视频中的代码,图片添加的那一段代码,以下两种写法有什么区别:
一种是使用global:
global photo photo = PhotoImage(file="imgs/logo.gif") self.canvas .create_image(150, 170, image=photo)
一种是使用self的写法:
self.photo = PhotoImage(file="imgs/logo.gif") self.canvas .create_image(150, 170, image=self.photo)
分别对这两种写法运行代码,显示效果是相同的。但这两种写法有什么区别吗?
def web_show(self, event): webbrowser.open("http://wwww.baidu.com")
老师,方法中的参数“event”代表什么意思?我看视频中的代码没有用到这个参数,但是代码中不写这个参数还会报错。
"""测试 Entry 组件的基本用法, 使用面向对象的方式""" from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # super()代表的是父类的定义, 而不是父类对象 self.master = master self.pack() self.createWidget() def createWidget(self): """创建登录界面的组件""" self.label01 = Label(self,text="用户名") self.label01.pack() # StringVar 变量绑定到指定的组件。 # StringVar 变量的值发生变化, 组件内容也变化; # 组件内容发生变化, StringVar 变量的值也发生变化。 v1 = StringVar() self.entry01 = Entry(self,textvariable=v1) self.entry01.pack() v1.set("admin") print(v1.get());print(self.entry01.get()) # 创建密码框 self.label02 = Label(self,text="密码") self.label02.pack() v2 = StringVar() self.entry02 = Entry(self,textvariable=v2, show="*") self.entry02.pack() Button(self,text="登陆",command=self.login).pack() def login(self): username = self.entry01.get() pwd = self.entry02.get() print("去数据库比对用户名和密码! ") print("用户名: "+username) print("密码: "+pwd) if username=="gaoqi" and pwd=="123456": messagebox.showinfo("尚学堂学习系统", "登录成功! 欢迎开始学习!") else: messagebox.showinfo("尚学堂学习系统","登录失败! 用户名或密码错误!") if __name__ == '__main__': root = Tk() root.geometry("400x130+200+300") app = Application(master=root) root.mainloop()
代码的第32行:
Button(self,text="登陆",command=self.login).pack()
中的
command=self.login
为什么不写成
command=self.login()
为什么不加括号,这不是要调用方法么?
请教老师 为啥程序进行添加图片时会出现这样的错误,是不是我没有这个图片文件? 如何做呢?
老师,在utf-8 中,\n 算几个字符? 斜杠算字符嘛
老师,GBK是不是与安装的windows语言版本有关,如果直接安装的en版的,那中文的字符怎么显示?
老师,我在调用open() 进行写入时,内容没有写进入。把a改成w,反而把我之前的内容给删除了。
这个问题出在哪儿?
import traceback class aerror(Exception): def __init__(self,error): Exception.__init__(self) self.errorInfo=error
老师,
Exception.__init__(self)
这个作用是什么
(): .btn01 = Button() .btn01[] = .btn01.pack() .btn01[] = .songhua .btnQuit = Button(==root.destroy) .btnQuit.pack()
createWidget()方法中的btnQuit的 command=root.destroy 为什么该方法中可以直接调用root啊,root是什么时候传进来的?
from collections import Iterable f = open(r"test.py") print(type(f).mro()) # 1 # [<class '_io.TextIOWrapper'>, <class '_io._TextIOBase'>, <class '_io._IOBase'>, <class 'object'>] print(isinstance(f, Iterable)) # 2 # True ''' with open(r"test.py") as f: # 3 for l in f: print(l, end="") '''
老师,上面代码,我有个地方有点疑问:
3处可以迭代,说明f是可迭代的,而且2处也证明了它确实是可迭代的,但是1处显示f的mro信息并没有看其可迭代性,所以我就比较疑惑,老师能帮我(从底层原理上)解答一下吗?
def salary(): #定义一个list来储存工资数据 salary = [] #存入四个人工资 for i in range(4): #防止用户输入除了q和数字的其他信息 try: inputSalary = input("Please enter the employee salary(press q or Q finish the programme): ") #判断是否等于q或者Q,如果等于直接退出程序 if inputSalary == "q" or inputSalary == "Q": print("录入中断") break else: #判断输入是否小于0 if int(inputSalary) < 0: inputSalary = int(input("Salary can't smaller than 0")) # inputSalary = input("Please enter a number or (press q and Q finish programme): ") #如果不小于0就append到list的上面 else: salary.append(int(inputSalary)) #如果用户输入了 q, Q或者数字以外的其他信息,print提示信息并且请用户再输入一次 except: inputSalary = input("Please enter a number or (press q and Q finish programme): ") #如果直接按Q退出了就不打印录入完成信息和平均工资 #if len(salary) == 4: print("您已录入四名员工的薪资") print("四人薪资是{0}, 平均薪资是{1}".format(salary,sum(salary)/4)) #else: # pass salary()
python 为版本3.7
希望实现的功能是:
首先判断用户的输入是否为q, Q或者数字
如果不为q, Q或者数字,提示用户只能输入q或者Q还有数字,并且在输出一次input如果再次输错继续提示同样的信息
现在出现的bug:
1.输入一次错误信息之后(eg:qeqwqw),然后会提示再输入一遍,然后输入正确的数字(eg:12312)不能够存入list中,只能存错误信息输入之后的连续的第二次之后的数字进入列表。
如图所示
2.连续两次输入错误信息不能够连续做判断
如果第二次输入出错误希望能够继续print第二句话,直到输入正确或者按q结束运行
希望老师可以指出我逻辑上的错误,和缺少使用的知识点。
现在所用的知识是 捕获异常 和 循环,不知是否需要用到正则表达式,或者自定义异常去进行处理
非常感谢!!!!
这个为什么会出现乱码?不是保存和解码方式是一样的嘛?
老师,看到现在,我发现我对 width 的值还是有疑问,像上面代码中红色箭头所指的值10 是代表十个英文字符的宽度,还是十个汉字字符的宽度?从运行结构看,好像都不是啊。
老师,不好意思问下,第三个事件是鼠标右击触发,为什么运行时,我鼠标右击按钮后没反应?我的鼠标左右键是没问题。不知道问题出在哪里?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637