如何在列表中附加变量名(已创建)?

时间:2018-08-09 04:10:28

标签: python string python-3.x

我几乎遍历了堆栈中的所有答案,但未找到答案。 我正在制作程序以进行sql插入查询.. 所以我有:

a="Aadi Aarav Aarnav Aarush Aayush Abdul Abeer Abhimanyu Abhiramnew Aditya Advaith Advay Advik Agastya Akshay Amol Anay Anirudhnew Anmol Ansh ArinArjun Arnav Aryan Atharv Avi Ayaan Ayush Ayushman Azaan Azad Daksh Darsh Dev Dev Devansh Dhruv Farhan Gautam Harsh Harshil Hredhaan Isaac IshaanJainew Jason Kabir Kalpit Karan Kiaan Krish Krishna Laksh LakshayManannew Mohammed Nachiket Naksh Nakul Neel Om Parth Pranav PraneelPranit Pratyush Rachit Raghav Ranbir Ranveer Rayaan Rehaannew Reyansh Rishi Rohan Ronith Rudranew Rushil Ryan Sai Saksham Samaksh SamarSamarth Samesh Sarthak Sathviknew Shaurya Shivansh Siddharth Tejas Vedant Veer Viaannew Vihaan Viraj Vivaan Yash Yug Zayan"
name=a.split(' ')
location="Goregaon dadar andheri vileparle santacruz london usa newYork Malad Mulund VAshi Newzealand ".split(' ')
grade="A B C D".split(' ')
query=[]
def generate(id):
    global query
    if id==1:
        query.append('[choice(name)]')
    elif id==2:
        query.append(',randint(35,99)')
    elif id==3:
        query.append(',choice(location)')
    elif id==4:
        query.append(',randint(25000,90000)')
    elif id==5:
        query.append(',choice(grade)')
    elif id==0:
        done()


def done():
    for i in range(5):
         print((query))
        #Result.insert(END,)

输出为:

['[choice(name)]', ',randint(35,99)', ',choice(location)', ',choice(location)', ',randint(25000,90000)']
['[choice(name)]', ',randint(35,99)', ',choice(location)', ',choice(location)', ',randint(25000,90000)']
['[choice(name)]', ',randint(35,99)', ',choice(location)', ',choice(location)', ',randint(25000,90000)']
['[choice(name)]', ',randint(35,99)', ',choice(location)', ',choice(location)', ',randint(25000,90000)']
['[choice(name)]', ',randint(35,99)', ',choice(location)', ',choice(location)', ',randint(25000,90000)']

但是我希望输出是该变量的值,如生成的随机名称,我该如何

edit1:

我想要的输出是这样的。

insert into student values (101, 'varun', 62, 'B', 'vashi') ;
insert into student values (102, 'nana', 46, 'C', 'vashi') ;
insert into student values (103, 'varun', 56, 'A', 'vashi') ;
insert into student values (104, 'rajkumar', 81, 'D', 'vashi') ;
insert into student values (105, 'varun', 73, 'A', 'malad') ;
insert into student values (106, 'rajkumar', 49, 'A', 'vashi') ;
insert into student values (107, 'rajkumar', 37, 'D', 'malad') ;
insert into student values (108, 'deepika', 30, 'C', 'vashi') ;
insert into student values (109, 'varun', 37, 'D', 'goregaon') ;

我有一个GUI程序 像这样。enter image description here

所以变量的数目不是固定的。 当用户单击按钮时,它将列出变量。 在清单中 然后我要对此进行迭代。 希望你能解决我的问题,

2 个答案:

答案 0 :(得分:0)

如果需要表达式的值,则只需使用表达式;不要将其用引号引起来:

query.append([choice(name)])
# ...
query.append(randint(35, 99))
# etc.

我不确定您要使用那里的逗号做什么。如果您确实想要列表值的字符串表示形式,并在其前面加上逗号,则可以为此使用字符串格式:

query.append(f',{randint(35, 99)}')

这可能与您正在执行的操作类似,但是有两个主要区别。

首先,字符串前的f前缀表示这是一个字符串格式表达式(也称为f字符串),其中对{…}中的位进行求值。

第二,randint(35, 99)表达式是{…}中的那些位之一,因此它被评估为一个值,然后将其格式化为字符串并插入模板中。

因此,尽管原始代码中的randint(35, 99)表示文字字符ran等,但{ -string取决于调用{randint(35, 99)}的结果-例如,它可能最终意味着字符randint(35, 99)4

但是,如果您不希望价值观中出现逗号,那么所有这些都会使事情变得过于复杂。就像我在顶部所说的那样,只需附加值本身。

答案 1 :(得分:0)

和其他人一样,我不确定您在这里想要达到的目标,但是我会尽力而为。您似乎正在创建一个数据结构来存储有关学生的信息。有两种更好的方法可以做到这一点。带有字典或对象。我将介绍对象方法。

您要创建一个学生班来包含您的数据。

class Student:
    def ___init___(self, name, letter_grade, score, location):
        self.name = name
        self.letter_grade = letter_grade
        self.score = score
        self.location = location

使用此数据结构,您可以将学生存储在列表中,并调用有关他们的信息。这是一个例子。

class Student:
    def ___init___(self, name, letter_grade, score, location):
        self.name = name
        self.letter_grade = letter_grade
        self.score = score
        self.location = location

students = []
students.append(Student("varun", "A", 67, "vashi")

这将在学生列表中存储学生的姓名,年级和位置。要返回有关它们的信息,您需要专门对其进行调用。

print(students[0].name)

将返回“ varun”

因此,如果您想一次调用有关学生的所有信息,则可以执行类似的操作

for student in students:
    print("insert into student values: ", student.name, student.letter_grade, student.score, student.location)