这是我的密码:
varsec =raw_input("enter secret number between 1 and 100(the system won't know):")
if int(varsec.strip()) >=100: print("Cheater caught! >:D")
if int(varsec.strip()) <=1: print("Cheater caught! >:D")
import random
varGuess = random.randint(2,99)
if 2 <= int(varsec.strip()) <= 99 : print(varGuess,
("If this number is less than your secret number, type <, if more then type >, if it IS your secret number then type =."))
VarConfirm = raw_input(":")
if (VarConfirm.strip()) is "<": from random import randint
print(randint(varGuess + 1,99))
if (VarConfirm.strip()) is ">": from random import randint
print(randint(2,varGuess - 1))
if (VarConfirm.strip()) is "=": print("YES, the program has successfully guessed your number ^^")
如果我键入“<;”对于VarConfirm
,它打印两个数字(1个介于varGuess +1
和99
之间,另一个介于2
和varGuess -1
之间)
我希望它只打印介于varGuess + 1
和99
之间的数字
另外,当我键入"<"
或"="
时,会出现NameError: 'randint' is not defined.
您没有缩进您的
print
语句。无论if
测试如何,它们总是执行Python通过缩进形成块;您需要将只有在
if
测试为真时才能执行的所有行放在同一缩进处,并且缩进需要大于if
行本身:请注意,我将
import
语句放在新行中。您可以将'block'与if
语句放在同一行,但该块仅限于一个简单语句;你只能做一件事您也不应该使用
is
来测试字符串的相等性;这些测试通常应该失败,因为raw_input()
函数不需要返回内存中与您用来测试的对象完全相同的对象。无论如何,CPython所做的是一个内部实现细节,您不能依赖它。您要测试它们的值是否相等:但是,您的导入会向您的文件中添加新的全局变量;把它们放在你剧本的顶端:
或者直接用
random.randint()
;您之前已经导入了random
模块:你不需要用那么多括号;在Python 2中
print
是一个语句,而不是一个函数(就像return
):因为您的测试是互斥的,所以可以使用
if ... elif ...
,Python只需在其中一个测试为true之前保持测试:你可以避免经常打电话给
.strip()
;只需调用一次并存储结果:我不知道复制这里的代码是否会弄乱缩进,但是缩进表明if语句中“:”后面的部分只算作条件部分,然后print语句只是普通的python行,完全独立于if语句
另外,不需要在if语句中间导入这样的内容。只需在程序的开头做import语句,然后再使用它。所以你的代码应该是
相关问题 更多 >
编程相关推荐