我是编程新手,目前参加CSC 110课程.我们的任务是创建一组函数,使用给定的一些数据执行各种操作.我已经把所有数据都放到了字典中,但是我在获取我想要的数据时遇到了一些麻烦.
这是我的问题:
我有一个字典,存储了一堆国家,后面是一个包含人口和GDP的列表.格式化这样的东西
{'country': [population, GDP], ...}
Run Code Online (Sandbox Code Playgroud)
我的任务是遍历这个并找到人口或GDP最高的国家然后打印:
'The country with the highest population is ' + highCountry+\
' with a population of ' + format(highPop, ',.0f')+'.')
Run Code Online (Sandbox Code Playgroud)
为了做到这一点,我写了这个函数(这个函数专门用于最高人口,但它们看起来都是一样的).
def highestPop(worldInfo):
highPop = worldInfo[next(iter(worldInfo))][0] #Grabs first countries Population
highCountry = next(iter(worldInfo))#Grabs first country in worldInfo
for k,v in worldInfo.items():
if v[0] > highPop:
highPop = v[0]
highCountry = k
return highPop,highCountry
Run Code Online (Sandbox Code Playgroud)
虽然这对我有用,但我认为有一种更简单的方法可以做到这一点.另外,我不是100%确定如何[next(iter(worldInfo))]运作.这只是抓住它看到的第一个值吗?
感谢您的帮助!
编辑:对不起我想我不清楚.我需要通过国家人口以及国家名称.所以我可以在我的主要功能中打印它们.
所以我知道在python中创建变量"private"的方法如下:
class Foo:
def __init__(self):
self.__private = 'bar'
Run Code Online (Sandbox Code Playgroud)
这"有效",但没有,如下所示:
foo = Foo()
'__private' in vars(foo) #False
'_Foo__private' in vars(foo) #True
Run Code Online (Sandbox Code Playgroud)
现在,我明白这是在python中创建私有变量的方法,我喜欢这种方式.它可以让你裂伤名,使无意外子类覆盖此(因为它和类的名称开头),而没有人会不小心使用它.如果您知道自己在做什么,它还可以让您更改私有变量.此外,这是最好的方法,因为真正的私有变量是不可能的.
或者我想.
最近,我正在阅读PEP 8,我看到了这一行:
我们在这里不使用术语"私有",因为在Python中没有属性是真正私有的(没有通常不必要的工作量).
该引用可在PEP 8的Designing for Inheritance部分中找到.
注意短语"没有通常不必要的工作量".我现在确定必须有一种方法可以在python中获得真正的私有变量.我该怎么办?
我试过覆盖__getattribute__,但问题是无法判断呼叫是否来自类内部(我知道).
此外,该__dict__属性在尝试执行此操作时很烦人,因为它包含对所有实例变量的引用.
我也想过元类,但那些似乎有同样的问题__getattribute__.
思考?
注意: 我知道在python中创建真正的私有变量的任何方法都不应该在高效的代码中完成.我只是想知道它是如何能做到.
我正在尝试更改我的Mac OS应用程序上显示的图标.我最后一次检查此代码适用于Windows.目标是使此解决方案适用于所有平台.
root = tk.Tk()
app = Application(master=root)
app.master.iconbitmap("my_icon.ico")
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
代码正在添加.pdf文件的默认图标,这不是我的意图.通往的路径my_icon.ico是正确的.为什么这不适用于Mac OS?是否有跨平台工作的终极解决方案?
我知道这违反了随机数的定义,但我仍然需要这个项目.例如,我想生成一个包含5个随机元素的数组range(0, 200).
现在,我希望每个元素之间的差异至少为15.所以随机数组看起来应该是这样的:
[15, 45, 99, 132, 199]
Run Code Online (Sandbox Code Playgroud)
我可以使用numpy生成随机数:
np.random.uniform(low=0, high=200, size=5)
Run Code Online (Sandbox Code Playgroud)
但是,我无法保持至少15的一致差异.
我正在尝试创建一个图像库并从该图像库中调用图像tkinter。但是这段代码给了我一个错误:
这是图像库文件img.py:
from tkinter import *
food_0001 = PhotoImage(file='food_0001.gif')
food_0002 = PhotoImage(file='bg.gif')
Run Code Online (Sandbox Code Playgroud)
这是用于打开存储在以下位置的图像的文件img.py:
from tkinter import *
import img
window = Tk()
window.title('image')
canvas = Canvas(window, width = 800, height = 800)
canvas.pack()
canvas.create_image(0,0, anchor=NW, image=food_0001)
window.mainloop()
Run Code Online (Sandbox Code Playgroud) 我正在使用 Python 的 tkinter 模块,我想仅在按下按钮时更改按钮的颜色。所以举个例子,通常按钮是白色的,但是当我按下它时,它会变成绿色。如果我停止按下它,它会变回白色。那可能吗?
python ×5
tkinter ×3
dictionary ×1
icons ×1
macos ×1
numpy ×1
private ×1
python-3.x ×1
random ×1
scope ×1