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

2024-03-29 10:33:35 发布

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

我正在用python3.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”赋值,就像他们输入了一个负数一样;基本上,如果用户输入一个字符串,我想编写一个循环,一遍又一遍地请求相同的东西。在

问题是input()总是将字符串赋给任意变量,因此我尝试编写代码将字符串转换为整数。当用户输入整数值时,它工作得很好,但是如果'n'不是整数,它就不能定义int(n)。在

关于这个问题,我在google上搜索了很多,我发现了一些使用try和except ValueError的例子,但似乎没有一个能够从中创建循环。在

有人知道吗?在


Tags: to字符串代码用户程序input整数many
3条回答

我猜是这样吧?伪python:

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

您可以使用str.isdigit()来完成此操作。根据文档,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)

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!")

您还可以将代码的最后一部分(第一个循环之后的部分)替换为:

^{pr2}$

但是不建议使用lambda ;)。当然,您可以使用普通函数:

def squares(x):
    print('{0} * {0} = {1}'.format(x, x**2))
    return x**2

相关问题 更多 >