我是Python的新手,也是一般的编程,所以我决定编写一些基本的代码来帮助我了解它的细节。我决定尝试创建一个数据库编辑器,并开发了以下代码:
name = []
rank = []
age = []
cmd = input("Please enter a command: ")
def recall(item): #Prints all of the information for an individual when given his/her name
if item in name:
index = name.index(item) #Finds the position of the given name
print(name[index] + ", " + rank[index] + ", " + age[index]) #prints the element of every list with the position of the name used as input
else:
print("Invalid input. Please enter a valid input.")
def operation(cmd):
while cmd != "end":
if cmd == "recall":
print(name)
item = input("Please enter an input: ")
recall(item)
elif cmd == "add":
new_name = input("Please enter a new name: ")
name.append(new_name)
new_rank = input("Please enter a new rank: ")
rank.append(new_rank)
new_age = input("Please input new age: ")
age.append(new_age)
recall(new_name)
else:
print("Please input a valid command.")
else:
input("Press enter to quit.")
operation(cmd)
我希望能够调用operation(cmd)
,并且可以调用尽可能多的函数/执行任意数量的操作。不幸的是,它只是无限地打印其中一个结果而不是让我输入多个命令。
如何更改此功能以便我可以调用operation(cmd)
一次,并重复调用其他功能?或者有更好的方法来做这件事吗?请记住,我是初学者,只是想学习,而不是开发人员。
答案 0 :(得分:0)
您没有在代码中添加任何内容来显示operator_1,operator_2和operator_3的来源,尽管您已暗示operator_3来自命令行。
你需要有一些代码才能获得" operator_3"的下一个值。这可能来自function_3的参数列表,在这种情况下你会得到:
def function_3(operator_3):
for loopvariable in operator_3:
if loopvariable == some_value_1:
#(and so forth, then:)
function_3(["this","that","something","something else"])
或者,您可以从输入中获取它(默认情况下,键盘):
def function_3():
read_from_keyboard=raw_input("First command:")
while (read_from_keyboard != "end"):
if read_from_keyboard == some_value_1:
#(and so forth, then at the end of your while loop, read the next line)
read_from_keyboard = raw_input("Next command:")
答案 1 :(得分:0)
问题是你只在operator_3
中检查一次function_3
,第二次向用户询问操作员,你没有存储它的值,这就是为什么它只运行一个条件
def function_3(operator_3):
while operator_3 != "end":
if operator_3 == some_value_1
function_1(operator_1)
elif operator_3 == some_value_2
function_2
else:
print("Enter valid operator.") # Here, the value of the input is lost
您尝试实施的逻辑如下:
function_3
。end
,请运行function_1
或function_2
。但是,你错过了上面的#4,你试图再次重新启动循环。
要解决此问题,请确保在向操作员提示时存储用户输入的值。为此,如果您使用的是Python3,请使用input
函数;如果您使用的是Python2,请使用raw_input
。这些函数会提示用户输入一些内容,然后将该输入返回给您的程序:
def function_3(operator_3):
while operator_3 != 'end':
if operator_3 == some_value_1:
function_1(operator_3)
elif operator_3 == some_value_2:
function_2(operator_3)
else:
operator_3 = input('Enter valid operator: ')
operator_3 = input('Enter operator or "end" to quit: ')
答案 2 :(得分:0)
看起来你正在尝试从用户那里获得输入,但你从未在function_3 ...
中实现它def function_3(from_user):
while (from_user != "end"):
from_user = raw_input("enter a command: ")
if from_user == some_value_1:
# etc...
答案 3 :(得分:0)
看看你的代码:
while cmd != "end":
if cmd == "recall":
如果您使用“结束”,“召回”或“添加”之外的任何内容致电operation
,则while
中的条件为True
,下一个if
也是True
,但随后的if
是假的。因此,该函数执行以下块
else:
print("Please input a valid command.")
并且while
循环继续到下一圈。由于cmd
未发生变化,因此相同的过程会一再重复。