Python 检查输入是否为循环中的字符串

Python 检查输入是否为循环中的字符串,python,string,loops,input,integer,Python,String,Loops,Input,Integer,我目前正在用Python 3.3.0编写一个程序,它打印出n个第一个平方数,最后打印出它们的和。条件是用户只能计算大于零的整数项。代码如下: print("WELCOME!") n = input("How many numbers to sum up?: ") while n <= 0: print("You have to write a positive integer; try again!") n = input("How many numbers to su

我目前正在用Python 3.3.0编写一个程序,它打印出n个第一个平方数,最后打印出它们的和。条件是用户只能计算大于零的整数项。代码如下:

print("WELCOME!")

n = input("How many numbers to sum up?: ")

while n <= 0:
    print("You have to write a positive integer; try again!")
    n = input("How many numbers to sum up?: ")

i = 1
sum = 0
while 0 < i <= n:
    print(i,"*",i,"=", i**2)
    sum += i**2
    i += 1
print("Sum:", sum)
打印(“欢迎!”)
n=输入(“要加多少个数字?:”)

而我猜是这样的?伪python:

n = None
while n is None:
    try:
        n = int(input("How many numbers to sum up?: "))
    except ValueError:
        pass

try/except
放入循环中

while True:
    try:
        n = int(input("How many numbers to sum up?: "))
        if n <= 0:
            print("You have to write a positive integer; try again!")
            continue
        break
    except ValueError:
        print("You have to write a positive integer; try again!")
但是不建议使用lambda(代码>;)。当然,您可以使用普通函数:

def squares(x):
    print('{0} * {0} = {1}'.format(x, x**2))
    return x**2
您可以使用来完成此任务。根据文档,isdigit()接受兼容上标数字,如\u0660123。但是Python3的input()为这种类型的输入转义反斜杠,因此这些字符串不应该引起任何问题

while True:
  n = input("How many numbers to sum up?: ")
  if n.isdigit() and int(n) > 0:
    break
  else:
    print("You have to write a positive integer; try again!")

squares = (i**2 for i in range(1,int(n)+1))
s = 0
for integer in range(1,int(n)+1):
  nextsquare = next(squares)
  s += nextsquare
  print(integer, "*", integer, '=', nextsquare, sep='')

print('Sum', s)
你也可以看看
while True:
  n = input("How many numbers to sum up?: ")
  if n.isdigit() and int(n) > 0:
    break
  else:
    print("You have to write a positive integer; try again!")

squares = (i**2 for i in range(1,int(n)+1))
s = 0
for integer in range(1,int(n)+1):
  nextsquare = next(squares)
  s += nextsquare
  print(integer, "*", integer, '=', nextsquare, sep='')

print('Sum', s)