当前位置: 首页 > 面试题库 >

将用户输入限制在Python范围内

卢健
2023-03-14
问题内容

在下面的代码中,您将看到它询问“ shift”值。我的问题是我想将输入限制为1到26。

    For char in sentence:
            if char in validLetters or char in space: #checks for
                newString += char                     #useable characters
        shift = input("Please enter your shift (1 - 26) : ")#choose a shift
        resulta = []
        for ch in newString:
            x = ord(ch)      #determines placement in ASCII code
            x = x+shift      #applies the shift from the Cipher
            resulta.append(chr(x if 97 <= x <= 122 else 96+x%122) if ch != \
            ' ' else ch) # This line finds the character by its ASCII code

我如何轻松做到这一点?


问题答案:

使用while循环不断询问他们的输入,直到收到您认为有效的信息:

shift = 0
while 1 > shift or 26 < shift:
    try:
        # Swap raw_input for input in Python 3.x
        shift = int(raw_input("Please enter your shift (1 - 26) : "))
    except ValueError:
        # Remember, print is a function in 3.x
        print "That wasn't an integer :("

如果您收到一个呼叫(例如,如果他们键入),您还希望try-exceptint()呼叫周围有一个障碍。ValueError``a

请注意,如果您使用Python 2.x,则需要使用raw_input()而不是input()。后者将尝试将输入解释为Python代码-可能非常糟糕。



 类似资料:
  • 我在pandas数据框内寻找最大值,但仅在特定索引范围内: 这为我提供了一个具有多行的pandas.core.frame.DataFrame类型输出。我特别需要iloc[430:440]中最大值的索引整数,并且只有第一个索引出现最大值。 是否有限制.loc方法范围的方法? 非常感谢。

  • 问题内容: 我正在尝试进行多项选择调查,以允许用户从选项1-x中进行选择。如何做到这一点,以便用户输入除数字以外的任何字符,返回“那是无效答案”之类的内容 问题答案: 您的代码将变为: 它的工作方式是使循环无限循环,直到仅放入数字为止。因此,如果我输入“ 1”,它将破坏循环。但是如果我放“ Fooey!” 该语句将捕获“将引发的错误” ,并且该循环将循环,因为它没有被破坏。

  • 问题内容: 上面的查询将返回前10个等级。 如何修改,或者是否存在另一种语法来查询第10位到第20位? 问题答案: 这真的是基本的东西。您应该使用: http://dev.mysql.com/doc/refman/5.5/en/select.html 两个参数10,10是(Offset,Limit),因此它将检索第11-20行。 9,11将需要获得第10-20名。

  • 问题内容: 我想将数字限制在一定范围内。目前,我正在执行以下操作: 这样可以将其保留在和中,但看起来不太好。我怎样才能做得更好? PS:仅供参考,我正在使用Python 2.6。 问题答案: def clamp(n, minn, maxn): return max(min(maxn, n), minn) 或功能等效: 现在,您使用: 或者说得很清楚: 更清晰:

  • 问题内容: 我正在处理自动为我生成的一些python代码。我想避免手动编辑这些python文件,因此避免这个问题/问题: foo.py: boo.py: bar.py: 执行: python.exe bar.py 给出了找不到的错误。但是bar都导入&。不应自动提供给? 有办法吗?如前所述, boo.py 是为我自动生成的,我想避免将import foo添加到 boo.py中 。 谢谢。 问题答案

  • 我目前正在工作的代码,以产生一个空心的正方形,由星号从1-20。到目前为止,这里是我所拥有的,但我无法弄清楚,如果用户输入的是一个大于20的数字,如何将代码循环回自身。例如,如果用户要输入21,代码仍然创建星号方块,并在下面弹出“无效大小.从1-20输入大小:”文本以重新提示用户,但新的数字不会产生任何结果。我需要它不创建正方形(如果>20或<=0),而是直接“跳转”到无效大小文本,然后创建一个正