Python基本输入混乱

时间:2015-01-14 20:41:11

标签: python python-3.x input integer

所以我正在尝试自学python,我在完成这项任务时遇到了一些问题。我试图从键盘读取两个整数,但问题是它们可以在同一行或两个不同的行上读入。

示例输入:

23 45

23
45

每个数字应该转到自己的变量。 我很确定我应该使用条带/分割功能,但我还缺少什么呢?我真的不知道怎么回事......谢谢。

以下是我正在使用的内容,但显然这个版本在每一行都采用了数字。

def main():
  num1 = int(input())
  num2 = int(input())
  numSum = num1 + num2
  numProduct = num1 * num2
  print("sum = ",numSum)
  print("product = ",numProduct)
main()

2 个答案:

答案 0 :(得分:2)

输入终止于新行(更新,更新,sys.stdin在新行上刷新),因此您获得整行。拆分使用:

inputs = input("Enter something").split() # read input and split it
print inputs

应用于您的代码,它看起来像这样:

# helper function to keep the code DRY
def get_numbers(message):
    try:
        # this is called list comprehension
        return [int(x) for x in input(message).split()]
    except:
        # input can produce errors such as casting non-ints
        print("Error while reading numbers")
        return []

def main():
     # 1: create the list - wait for at least two numbers
     nums = []
     while len(nums) < 2:
         nums.extend(get_numbers("Enter numbers please: "))
     # only keep two first numbers, this is called slicing
     nums = nums[:2]
     # summarize using the built-in standard 'sum' function
     numSum = sum(nums)
     numProduct = nums[0] * nums[1]
     print("sum = ",numSum)
     print("product = ",numProduct)

main()

关于此处使用的内容的说明

您可以使用list comprehension从可迭代对象构建列表。

您可以使用sum中的standard library functions来汇总列表。

如果您只想要列表的一部分,则可以slice列出。

答案 1 :(得分:0)

我在这里修改了你的代码。

def main(): num1 = int(input("Enter first number : ")) num2 = int(input("\nEnter second number : ")) if(num1<=0 or num2<=0): print("Enter valid number") else: numSum = num1 + num2 numProduct = num1 * num2 print("sum of the given numbers is = ",numSum) print("product of the given numbers is = ",numProduct) main()

如果您输入的号码无效,则会打印消息输入有效号码。