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

标签 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 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)。

我在谷歌上搜索了很多关于这个问题的信息,我发现了一些使用 try 和 except ValueError 的例子,但它们似乎都无法创建一个循环。

有人有想法吗?

最佳答案

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

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

squares = lambda x: [print('{0} * {0} = {1}'.format(x, x**2)), x**2][1]

print("Sum:", sum(squares(i) for i in range(1, n+1))

但不推荐使用 lambda ;)。您当然可以使用普通函数来代替:

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

关于python - 检查输入是否是循环中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793839/

相关文章:

python - Pylint 与 pytorch : Is there a way to tell pylint to look for module in different place?

python - 如何在 tensorflow 中检查 GPU 是否存在而不生成警告

javascript - jQuery 获取 href 值特定部分的字符串

python - 为什么 python 要求我在输入相同的内容后一遍又一遍地输入相同的内容 - (smtplib - gmail)

python - python的xml.etree.ElementTree支持DTD吗?

python - Python 中不同嵌套字典的 Gen 填充率?

javascript - 如何将值发送到 Javascript 表单元素。不断发送一个值

ruby - 为什么这个 while 循环内外的变量这个词不同?

使用c复制文本文件

c - 处理结构中的字符串