我可以使用变量而不是特定输入吗?

时间:2016-01-02 03:29:10

标签: python-3.x

//Global variable.-
MyObject:= TMyObject.Create();
MyObject.MyData:= 'Salam world';
...
//Local variable.-
myObj:= TMyObject.Create();
myObj:= MyObject;
..
MyObject.Free();
...
ShowMessage(myObj.MyData);

我正在创建一个数据库程序,它会吐出您最喜欢的颜色,名称,重量和高度。问题在于,如果我想要提供大量的插槽,我需要能够使用变量(f.e:name,name1,name2)。

但是,我无法弄清楚如何在if the existing canvas color alpha is 0.0, then draw the new shape's color and set alpha to 0.1 if the existing canvas color is the same as the new shape's color then increase the alpha, by 0.1 if the existing canvas color is different from the the new shape's color then decrease the alpha by 0.1 中使用之前的变量。我试图做到这一点,如果你输入名称(让我们说它是弗兰克)我真的不想在IDLE打开程序,并且必须再次编辑整个事情只是为了添加弗兰克。那么我该如何制作它以便我可以将Frank变成变量,并使用它就好像它就像name = input("What is your name?") if input == name: print(final % (name, fav_color, weight, height)) 一样 我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

  

我试图做到这一点,如果你输入名字(让我们说它是弗兰克),我真的不想在IDLE中打开程序而必须再次编辑整个程序只是为了添加弗兰克。

很多人使用某种配置文件,通常是~/.namerc(或./.namerc)来存储你的偏好。

读取JSON文件

如果您想要从用户的当前目录see this answer获取json文件的示例。

您需要一个json文件,您想要包含要搜索的用户名的区域。

  

test.json

{
    "name": "Frank"
}
  

yourDatabaseScript.py

import json

with open("test.json") as json_file:
    json_data = json.load(json_file)
    print(json_data["name"])
  

在命令行上

$> python ./yourDatabaseScript.py
Frank

很多时候它用于最小化命令行参数的数量,这是在不使用input的情况下从用户获取输入的另一种流行方式。

从命令行读取

我在阅读时更喜欢vanilla python docs

  

yourDatabaseScript.py

import argparse

parser = argparse.ArgumentParser(description='Get a name for a search.')
parser.add_argument('--name', dest='input', action='store_const',
                   const=str,
                   help='Enter a user\'s name to search')

args = parser.parse_args()
print args.input #  Frank
  

在命令行上

$> python ./yourDatabaseScript.py --name="Not Frank"
Not Frank
$> python ./yourDatabaseScript.py --name Frank
Frank

旁注

name = input("What is your name?")
if input == name:
print(final % (name, fav_color, weight, height))

input是您在第一行调用的功能。您正在检查调用input的值是否与其本身相同。我认为这是一个错字。

答案 1 :(得分:0)

根据我的理解,您希望创建一个包含家庭成员所有信息的数据库。

所以,如果你所有的家庭成员总是预定义的(即你总是知道它将由弗兰克和其他人组成)你可以设置一堆变量,如name1 = Frank,name2 = Bob等,然后将它们与if和elif语句进行比较:

if name == name1:
    doStuff()
if name == name 2:
    doStuff()
...

但是,如果您想向数据库中添加更多人,那么这将是不切实际的。 你可以做的是制作一个列表/数组。

family = []

在这里你可以把所有现有的家庭成员。

family = ["Frank","Bob","Mary"]

然后,您可以在for循环中执行if语句。

for element in family:
    if name == element:
        doStuff()

所以它在这里做的是遍历列表中的每个元素,并将它与已经估算的名称进行比较。

最后,如果你想添加到当前的成员列表,你可以使用python中的.append函数添加一行代码。

family.append(name)

这将'追加'(添加)到列表中(当然打开源代码)。您可以创建一个循环来检查它是否已经在列表中或者其他任何内容,但这取决于您。

希望这有帮助!