任意数的阶乘排除非正整数
本帖最后由 lywxc168 于 2022-12-30 22:59 编辑初学者用最原始的方法编写的,学生喜欢不按套路来,明明有提示,非得输入不相干的内容……于是我就编写了这个程序。希望高手指正不足之处,谢谢了!# 任意数的阶乘,强制用户输入正整数
i = 0 # 初始化循环变量
while i >= 0:
try:
str_num = input('请输入一个正整数:')
num = int(str_num)# 强制转化数据类型
print() # 空行醒目
factorial = 1
if num < 0: # 负数作为结束循环条件
print("抱歉,负数没有阶乘!程序结束^-^!!!")
break# 在循环语句中执行
else:
for i in range(1, num + 1):
factorial = factorial * i
print(f'{num}的阶乘为:{factorial}\n')
# break #若输入的正确,则退出,错误执行except下面代码
except:
print('您输入的内容不规范,请重新输入一个正整数:') 本帖最后由 jackz007 于 2022-12-30 23:15 编辑
while True :
try :
x = int(input('请输入一个正整数:'))
if x > 0 : break
else : print('您输入了一个负数\n')
except:
print('您输入的整数无效\n')
s = 1
for d in range(x) : s *= d + 1
print(s) jackz007 发表于 2022-12-30 23:12
谢谢!代码简化了。美中不足的是:当输入正整数时,退出循环,不能运行多次,然后输入特定值结束…… lywxc168 发表于 2022-12-31 07:11
谢谢!代码简化了。美中不足的是:当输入正整数时,退出循环,不能运行多次,然后输入特定值结束……
那在套一层while循环, lywxc168 发表于 2022-12-31 07:11
谢谢!代码简化了。美中不足的是:当输入正整数时,退出循环,不能运行多次,然后输入特定值结束……
用一个变量控制,若检测到特定值,变量等于FALSE,循环结束 from math import gamma
# n! = gamma(n+1)
print(gamma(int(input())+1)){:10_256:} jackz007 发表于 2022-12-30 23:12
我这样修改的,当输入非正整数时循环提示,同时把0的阶乘也包括在内,当输入整数为负整数时,循环结束。就是方法有点笨……
i = 0
while i >= 0:
try:
x = int(input('请输入一个正整数:'))
if x >= 0:
s = 1
for d in range(x): s *= d + 1
print(f'{x}的阶乘为:{s}\n')
else: break
except:
print('您输入的数据无效\n')
页:
[1]