【问题标题】:How can I make it where it will print the longest name/string that was input by the user that doesnt need to be input again我怎样才能让它打印用户输入的最长的名称/字符串,不需要再次输入
【发布时间】:2020-12-11 17:30:06
【问题描述】:
def myNames():
    names = []
    while True:
        a = input("Enter Name: ")
        if a != "done":
            names.append(a)
        elif a == "done":
            return names

def all_lengths(myNames):
  num_of_strings = len(myNames)
  total_size = 0
  for item in myNames:
     total_size += len(item)
  ave_size = float(total_size) / float(num_of_strings)
  print(ave_size)

all_lengths(myNames())

def longestWord(myNames): 
    count = 0
    for i in myNames:
        if len(i) > count: 
            count = len(i)
            word = I
            print ("the longest string is ", word)

我怎样才能让它打印出用户输入的最长的名字,例如:在 Samantha 和 John 中,它会说 Samantha 是最长的名字。我需要它来计算最长的名字并从第一个函数中显示出来,而不会让我再次输入名字

【问题讨论】:

    标签: python list function


    【解决方案1】:

    您应该尝试更准确地确定您真正想问的内容,然后重新构建它,以便每个人都更容易理解。

    如果你想检查列表中哪个字符串最长,你可以简单地这样做:

    l = ["Samantha", "John"]
    maxlen = 0
    maxstring = ""
    
    for x in l:
        if len(x) > maxlen:
            maxlen = len(x)
            maxstring = x
    
    print(maxstring)
    

    【讨论】:

      【解决方案2】:

      您可以存储变量。事实上,你已经在你的函数中做了一大堆。

      初学者经常忽略的另一点是def 语句不运行任何代码。他们创建函数,直到你调用它们或使用相同的名称来做其他​​事情。

      您需要更改的当前正在调用您的函数的行是

      all_lengths(myNames())

      不是嵌套调用,而是存储结果:

      names = myNames()
      all_lengths(names)
      

      现在你也可以调用

      longestWord(names)
      

      备注

      手工实现这些功能是一次很好的学习体验。以下是一些关于如何改进代码的 cmets:

      • Python 用户通常只使用 CamelCase 作为类名。函数和变量是用snake_case 编写的。所以my_names 而不是myNameslongest_word 而不是longestWord

      • 除法运算符/ 自动返回float,即使在python 3 中输入为ints。无需在total_size / num_of_strings 中进行转换。如果您想要整数截断,您必须使用// 下除法运算符明确要求它。

      • 当您计算一个序列的总和时,使用内置的sum,即使您要求和的属性是间接的:

          def all_lengths(my_names):
              return sum(len(x) for x in my_names) / len(my_names)
        
      • 如上面的示例所示,函数应该做一件事情并且通常返回一个值。计算平均值和打印是两件事,其他地方的打印也是如此。

      • max 内置有一个 key 关键字,可让您将 longest_name 替换为

          def longest_name(names):
              return max(names, key=len)
        

      【讨论】:

      • 如何将其放入代码中?以及如何打印
      • @Kian。我会使用复制和粘贴。使用print 打印
      • @Kian。你到底在测试什么?记住,我只能看到你给我看的东西,而且我不是魔法师。
      • 我知道,但是当我测试整个代码时,它只会以数字形式给出平均长度的输出,并且不会打印最长的名称
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多