Python报input expected at most 1 argument, got 2错误如何解决
TypeError报错排查及修复方案
报错根源
Python内置的input()函数仅支持接收1个字符串类型的可选参数作为输入提示文本,你当前代码中向input()传入了2个参数:字符串"Input a number from 1 to"和整数变量n,不符合函数参数要求,因此触发参数数量不匹配的TypeError。
可行解决方案
以下三种方案均可实现参数拼接为单个提示字符串的需求,选择任意一种替换原代码里的input行即可:
- 方案1:字符串拼接(适配所有Python版本)
num = int(input("Input a number from 1 to " + str(n)))
- 方案2:f-string(推荐,Python 3.6及以上版本支持,写法简洁易读)
num = int(input(f"Input a number from 1 to {n}"))
- 方案3:format格式化(兼容性好,适合需要兼容低版本Python3的场景)
num = int(input("Input a number from 1 to {}".format(n)))
完整优化后的代码(新增非数字输入异常处理,避免用户输入非数字时程序崩溃)
def enterValidNumber(n): while True: try: num = int(input(f"Input a number from 1 to {n}")) if 1 <= num <= n: return num except ValueError: print("输入内容不是合法数字,请重新输入") enterValidNumber(17)
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

