Python 函数不是生成一个整数,而是生成一个";无”;输出

Python 函数不是生成一个整数,而是生成一个";无”;输出,python,Python,下面解释getvalidint函数,因为我调用函数getvalidint并给它一个输入,以便它可以生成整数输出。这不是因为我打印函数输出(见下面的主程序),它打印出“无”,我在python33上运行 #getValidInt() takes in a minn and maxx, and gets a number from the # user between those two numbers (inclusive) #Input: minn and m

下面解释getvalidint函数,因为我调用函数getvalidint并给它一个输入,以便它可以生成整数输出。这不是因为我打印函数输出(见下面的主程序),它打印出“无”,我在python33上运行

#getValidInt() takes in a minn and maxx, and gets a number from the
#               user between those two numbers (inclusive)
#Input:      minn and maxx, two integers
#Output:     an integer, between minn and maxx inclusive


MIN_VAL = -1000000
MAX_VAL =  1000000

def getValidInt(minn, maxx):
    message = "Please enter a number between " + str(minn) + " and " + \
        str(maxx) + " (inclusive): "
    newInt = int(input(message))
    while newInt <= minn & newInt >= maxx:

    # while loop exited, return the user's choice
        return newInt

def main():

    userNum = getValidInt(MIN_VAL, MAX_VAL)
    print(userNum)

main()
#getValidInt()接受一个minn和maxx,并从
#这两个数字之间的用户(包括)
#输入:minn和maxx,两个整数
#输出:一个整数,介于minn和maxx之间(包括minn和maxx)
最小值=-1000000
最大值=1000000
def getValidInt(明尼苏达州,最大值):
message=“请输入一个介于“+str(minn)+”和“+\
str(最大值)+(含):
newInt=int(输入(消息))
当newInt=maxx时:
#退出循环时,返回用户的选择
返回newInt
def main():
userNum=getValidInt(最小值、最大值)
打印(userNum)
main()
如果从未满足
while newInt=maxx:
条件,则不会返回任何内容。这意味着函数将隐式返回
None
。另外,假设您使用的是Python3(我从您的
int(input())
idiom中导出)

更深层次的问题是,无论值是否满足约束,输入代码只运行一次。这样做的典型方式如下:

import sys

def get_int(minimum=-100000, maximum=100000):
    user_input = float("inf")
    while user_input > maximum or user_input < minimum:
        try:
            user_input = int(input("Enter a number between {} and {}: ".format(minimum, maximum)))
        except ValueError:
            sys.stdout.write("Invalid number. ")
    return user_input
导入系统 def get_int(最小值=-100000,最大值=100000): 用户输入=浮点(“inf”) 当用户输入>最大值或用户输入<最小值时: 尝试: user_input=int(输入(“输入一个介于{}和{}之间的数字:“.format(最小值,最大值))) 除值错误外: sys.stdout.write(“无效数字”) 返回用户输入 如果从未满足
while newInt=maxx:
条件,则不会返回任何内容。这意味着函数将隐式返回
None
。另外,假设您使用的是Python3(我从您的
int(input())
idiom中导出)

更深层次的问题是,无论值是否满足约束,输入代码只运行一次。这样做的典型方式如下:

import sys

def get_int(minimum=-100000, maximum=100000):
    user_input = float("inf")
    while user_input > maximum or user_input < minimum:
        try:
            user_input = int(input("Enter a number between {} and {}: ".format(minimum, maximum)))
        except ValueError:
            sys.stdout.write("Invalid number. ")
    return user_input
导入系统 def get_int(最小值=-100000,最大值=100000): 用户输入=浮点(“inf”) 当用户输入>最大值或用户输入<最小值时: 尝试: user_input=int(输入(“输入一个介于{}和{}之间的数字:“.format(最小值,最大值))) 除值错误外: sys.stdout.write(“无效数字”) 返回用户输入
缩进很重要。return语句与函数位于不同的缩进级别。看起来这是循环的一部分。如果循环从未命中,则不会返回任何内容…缩进非常重要。return语句与函数位于不同的缩进级别。看起来这是循环的一部分。如果循环从未命中,则不会返回任何内容…是否有任何方法可以不使用import sys方法执行此操作??import sys仅使用sys.stdout,这是print()默认使用的。唯一的一点是在失败时将“无效数字”与“输入数字…”显示在同一行。这纯粹是为了美学。如果您使用的是python3,则可以通过
print(“Invalid Number”,end=“”)
不使用import sys方法实现相同的效果??import sys只使用sys.stdout,这是print()默认使用的方法。唯一的一点是在失败时将“无效数字”与“输入数字…”显示在同一行。这纯粹是为了美学。如果您使用的是python3,则使用
打印(“无效数字”,end=“”)