我的老师想要一个程序向用户询问一个正整数值,程序应该循环以获得从1到输入的编号的所有整数之和。在使用Python的For循环中。
这是我为For循环提出的内容,但是当我输入一个负数时它不会循环,当我输入一个负数后输入一个正数时它不会显示答案。
x=int(input("Please pick a positive integer"))
sum=0
for i in range(1,x):
sum=sum+1
print(sum)
else:
x=int(input("Please pick a positive integer"))
帮助?
答案 0 :(得分:2)
如何实现以下内容。您的计划存在一些问题,最明显:
1。正在为每个值重复打印总和。
2。您只需在总和中加1,而不是添加整数i
。
3。如果您的用户未输入正整数,则不会返回您的函数。
4. 如果整数大于0,则没有if
语句。
def intpicker():
x=int(input("Please pick a positive integer"))
sum=0
if x >= 0:
for i in range(1,x):
sum=sum+i
print(sum)
else:
return intpicker()
此代码可以进一步缩写,但是出于所有意图和目的,您应该尝试将此实现理解为一个开始。
答案 1 :(得分:1)
您的计划中存在一些致命缺陷。见下文:
x=int(input("Please pick a positive integer")) #what if the user inputs "a"
sum=0
for i in range(1,x): # this will not include the number that they typed in
sum=sum+1 # you are adding 1, instead of the i
print(sum)
else:
x=int(input("Please pick a positive integer")) # your script ends here without ever using the above variable x
这就是我可能做的事情:
while True: # enters loop so it keeps asking for a new integer
sum = 0
x = input("Please pick an integer (type q to exit) > ")
if x == "q": # ends program if user enters q
break
else:
# try/except loop to see if what they entered is an integer
try:
x = int(x)
except:
print "You entered {0}, that is not a positive integer.".format(x)
continue
for i in range(1, x+1): # if the user enters 2, this will add 1 and 2, instead of 1.
sum += i
print sum