写代码:用户输入一个整型数,求该数的阶乘并分析统计其中的非0值个数 提示: 1) 利用while循环和try-except实现:假如用户输入非整数,则提醒用户,直到获取整型数输出为止。 2)for循环,计算阶乘 3)获取数字每一位,利用f判断是否为0
时间: 2024-11-13 14:41:21 浏览: 18
c代码-编写一个求阶乘的函数Fact(),然后在主函数中,计算并输出1到n之间所有数的阶乘值
下面是一个Python程序,它首先获取用户的输入,检查输入是否为整数,然后计算阶乘并统计非零位的数量:
```python
def factorial(n):
if n == 0 or n == 1:
return 1
else:
fact = 1
for i in range(1, n + 1):
fact *= i
return fact
def count_non_zeros(num):
non_zero_count = 0
while num > 0:
digit = num % 10
if digit != 0:
non_zero_count += 1
num //= 10
return non_zero_count
def main():
while True:
try:
num = int(input("请输入一个整数:"))
if num < 0:
print("负数无法计算阶乘,请输入正整数")
else:
fact = factorial(num)
print(f"{num}的阶乘为:{fact}")
non_zero_count = count_non_zeros(str(abs(num)))
print(f"数字({num})各位的非零值个数为:{non_zero_count}")
break
except ValueError:
print("输入错误,请输入整数")
if __name__ == "__main__":
main()
```
这个程序首先定义了计算阶乘和非零值计数的函数,然后在主函数中通过`try-except`处理用户的输入,确保输入的是一个整数。
阅读全文