从一个函数中获取列表和输入,并在不同的函数中运行它们

2024-04-25 19:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个生成列表的程序,然后我让他们告诉我他们想从菜单上做什么,这就是我的问题开始,我能够从用户那里得到不同函数的输入,但是当我尝试使用if-else条件时,它没有检查,下面是我的代码

def menu(x,l):
    print (x)
    if x == 1:
        return make_table(l)
    if x == 2:
        y= input("enter a row (as a number) or a column (as an uppercase letter")
        if y in [ "1",'2','3']:
            print("Minmum is:",minimum(y,l))
    if x== 3:
        print ('bye')

def main():
    bad_filename = True
    l =[]
    while bad_filename == True:
        try:
            filename = input("Enter the filename: ")
            fp = open(filename, "r")
            for f_line in fp:
                f_str=f_line.strip()
                f_str=f_str.split(',')
                for unit_str in f_str:
                    unit=float(unit_str)
                    l.append(unit)
            bad_filename = False
        except IOError:
            print("Error: The file was not found: ", filename)
        #print(l)
    condition=True

    while condition==True:
        print('1- open\n','2- maximum')
        x=input("Enter the choice")
        menu(x,l)

main()

从底部的功能,我可以得到列表,我可以得到用户的输入,我可以得到数据,并在第二个功能移动它,但它不会工作后那。谢谢你呢


Tags: 用户intrue列表inputifmaindef
1条回答
网友
1楼 · 发布于 2024-04-25 19:26:31

我认为你的问题很简单,与你如何在函数之间传递值无关。你知道吗

main中,您从用户处读取的值如下:

x=input("Enter the choice")

^{}函数:

… reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

因此,如果用户在提示符处键入1,则返回字符串"1"。你知道吗

现在,将该值完全正确地传递给menu。你知道吗

menu中,然后尝试将其与各种数字进行比较,如下所示:

if x == 1:

但这永远不会是真的。一个字符串,如"1",从不等于一个数字,如1。它们甚至不是同一种价值,更不是同一种价值。你知道吗

所以,你需要做两件事之一:

  • 将输入转换成数字。例如,将menu(x,l)更改为menu(int(x), l)。或者
  • 写入menu以期望字符串。例如,将if x == 1:更改为if x == "1":。你知道吗

您可能想知道为什么print (x)没有帮助您调试问题。你知道吗

print(x)打印出最终用户友好的字符串表示形式。也就是说,它会自动为您调用^{}函数。出于调试目的,您通常希望使用^{}而不是str,以获得程序员友好的字符串表示,而不是最终用户友好的字符串表示。你知道吗

例如,print(str("10"))将打印出10-就像print(str(10)),所以您无法区分它们。但是print(repr("10"))会打印出'10',不像print(repr(10)),同时打印10,所以你可以把它们区分开来。repr还可以帮助您发现一些东西,比如字符串中包含不可见的字符,从解析器中获得特殊的“node”对象,而不仅仅是字符串,等等

相关问题 更多 >