与 Def 混淆 Python

Confused with Def Python

def yesno(endwhat):
    end = False
    while not end:
        ok = input("<Y/N>")
        if ok.upper == 'Y' or ok.upper == 'N':
            if ok.upper == 'Y':
                end = True
                endwhat = True
        else:
            print("Enter only <Y/N>")
    return(ok)

这不起作用,即使我输入 Y 或 N,它也会重复。 我认为问题是当我在 'endwhat' 中输入 var 时,它不会将其更改为 True。 非常感谢任何帮助。 谢谢...

您忘记将 () 放入字符串函数中。

def yesno(endwhat):
  end = False
  while not end:
    ok = input("<Y/N>")
    if ok.upper() == 'Y' or ok.upper() == 'N':
        if ok.upper() == 'Y':
            end = True
            endwhat = True
    else:
        print("Enter only <Y/N>")
  return(ok)

.upper() 是一个函数,所有函数都必须为任何参数(如果有)包含一个“()”。否则,它们将被视为提到的默认值。您忘记输入“()”。正确的版本是-

def yesno(endwhat):
  end = False
  while not end:
    ok = input("<Y/N>")
    if ok.upper() == 'Y' or ok.upper() == 'N':
        if ok.upper() == 'Y':
            end = True
            endwhat = True
    else:
        print("Enter only <Y/N>")
  return(ok)

你忘记了 () 代表鞋面。 您也可以使用如下代码:

def yesno(endwhat):
  end = False
  while not end:
    ok = input("<Y/N>").upper()
    if ok == 'Y' or ok == 'N':
        if ok == 'Y':
            end = True
            endwhat = True
    else:
        print("Enter only <Y/N>")
  return(ok)