如何在python中循环函数def,直到写入数字0

2024-04-27 13:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试执行def功能,让它添加输入的任何数字的数字,并在我键入数字“0”时停止,例如:

输入号码:25 位数总和:7

输入号码:38 位数和:11

输入数字:0 循环完成

我已经为输入的数字的数字总和创建了代码,但当程序完成添加时,循环结束,但我要寻找的是再次请求另一个数字,直到最后输入数字“0”,循环结束:(

这是我的代码:

def  sum_dig():
 s=0
 num = int(input("Enter a number: "))
 while num != 0 and num>0:
  r=num%10
  s=s+r
  num=num//10
 print("The sum of the digits is:",s)
 if num>0:
  return num
sum_dig()

Tags: 代码程序功能input键入def数字num
3条回答

为了获得连续的输入,您可以使用while True并添加中断条件,在本例中为if num == 0

def  sum_dig():
    while True:
        s = 0
        num = int(input("Enter a number: "))

        # Break condition
        if num == 0:
            print('loop finished')
            break

        while num > 0:
            r=num%10
            s=s+r
            num=num//10
        print("The sum of the digits is:",s)

sum_dig()

更好的方法是让sum_dig接受要将数字相加作为参数的数字,然后使用while循环来获取用户输入,将其转换为数字,并调用sum_digit函数

def sum_dig(num): # takes in the number as a parameter (assumed to be non-zero)
    s=0
    while num > 0: # equivalent to num != 0 and num > 0
        r = num % 10
        s = s + r
        num = num // 10

    return s

while True:
    num = int(input("Enter a number: "))
    if num == 0:
        break

    print("The sum of the digits is: " + sum_dig(num))

这使您的代码能够遵守Single-Responsibility Principle,其中每个代码单元都有一个单独的职责。在这里,函数负责获取输入数字并返回其数字总和(如名称所示),循环负责连续读取用户输入,转换它,检查它是否为退出值(0),然后调用输入上的处理函数并打印其输出

使用^{}将输入的数字(作为字符串)拆分为数字列表,然后使用list comprehension求和。使用while True生成一个无限循环,然后使用return退出它。使用f-strings or formatted string literals打印数字总和:

def sum_dig():
    while True:
        num = input("Enter a number: ")
        if int(num) <= 0:
            return
        s = sum([int(d) for d in list(num)]) 
        print(f'The sum of the digits is: {s}')

sum_dig()

相关问题 更多 >