抱歉标题不好。这是我的代码:
import math
# Finds the square root of a number
def square_root():
square_root = math.sqrt(int(raw_input('What number do you want the Square Root for')))
print "The square root of is: %d " % (square_root)
基本上,我想阻止用户输入一个不以0,1,4,6,9或25结尾的数字,所以我只能输出完美的方块。我有点想知道该怎么做,但我不能为了我的生活而回想起术语来获得体面的谷歌搜索,所以我来到这里。
我知道它会涉及某种形式的if
以及类似[1:3]
的内容。
答案 0 :(得分:4)
如果你想确保输入是一个完美的正方形,试试这样的事情:
def square_root():
sqrt = int(raw_input("What number do you want the square root for? ")) ** 0.5
if sqrt == int(sqrt): # i.e. 'sqrt' is an integer
print "Result is", int(sqrt)
else:
print "That is not a perfect square!"
只是检查输入是否以您提到的数字结尾是不够的(作为上述评论之一)。当然,如果您仍想检查是否可以使用str(input).endswith(SOME_VAL)
。
答案 1 :(得分:2)
首先,阅读您对字符串的输入。然后,使用s.endswith('test')
方法测试字符串的某些结尾。如果成功,则将输入转换为整数,同时期望ValueError
发生(使用try
/ except ValueError:
语句捕获此值)。如果一切顺利,计算平方根并打印出来。
您对某些结局的测试在数学上没有意义。但这是一个不同的主题。让我们将您的请求用作编程练习:)此代码(未经测试)希望能够满足您的需求:
import sys
import math
tests = ['0', '1', '4', '6', '9', '25']
input = raw_input('What number do you want the square root for? ')
result = (input.endswith(t) for t in tests)
if any(result):
try:
print math.sqrt(int(input))
except ValueError:
print "Not a number."
(input.endswith(t) for t in tests)
是一个生成器表达式。它不返回列表,而是返回一个可迭代对象,也称为迭代器。这就是result
。 result
中的元素仅在请求时计算。 any(result)
完成此序列并在另一个之后请求一个测试结果,直到找到第一个评估为True
的结果。然后它返回True
本身。如果result
序列中的所有值均为False
,则any()
也会返回False
。
答案 2 :(得分:1)
>>> a=map(int,str(123456))
>>> a
[1, 2, 3, 4, 5, 6]
>>> a[-1]
6
>>> a[-1] in [0, 1, 4, 6, 9, 25]
True