当我猜对了时,如何重置随机整数。我是初学者,你可以给我一些提示,帮助我写一个更好的代码。
from random import randint
##Guess a number from 1 to 100
##Made by
##vers. 0.01beta
name = str(input("how ya name bruh:"))
randm = randint(1, 99)
guesstaken = str(int(0))
while True:
user_guess = int(input(name + " " + "enter a number:"))
if user_guess == randm:
print("you guessed" + " " + "right" + ", " + name)
SystemExit
elif user_guess >= randm:
print("guess lower")
guesstaken = guesstaken + str(int(1))
elif user_guess <= randm:
print("guess higher")
guesstaken = guesstaken + str(int(1))
答案 0 :(得分:0)
您发布的代码存在一些问题。正如评论中所提到的,minifyEnabled true
shrinkResources true
中的str()
调用毫无意义,因为Python 3 name = str(input("how ya name bruh:"))
函数总是返回一个字符串;在已经是字符串的对象上调用input()
只返回该对象。所以它不会伤害任何东西,但它会给代码带来不必要的混乱。
类似地,表达式str()
是多余的,因为1已经是整数。在整数对象上调用int(1)
只返回原始整数对象。
然而,int()
很奇怪。由于guesstaken = guesstaken + str(int(1))
和guesstaken
都是字符串,没有执行算术它会进行字符串连接。以下是它的功能的简短演示。
str(int(1))
<强>输出强>
s = '0'
for i in range(5):
s = s + '1'
print(s)
有了这些东西,我们可以解决你的问题。 :)一旦玩家猜到了正确的数字,你想知道如何得到一个新的随机整数。这很简单:我们只是将代码放在另一个01
011
0111
01111
011111
循环中。我们还需要询问玩家他们是否想再玩一次,以便我们有一些方法可以打破这个循环并退出程序。
以下是代码的修复版本,带有额外的while
循环。我使用字符串while
方法使打印代码更清晰。
.format()
<强>演示强>
''' Guess a number from 1 to 100 '''
from random import randint
name = input("What's your name? ")
prompt = name + " enter a number: "
while True:
randm = randint(1, 99)
guesstaken = 0
while True:
user_guess = int(input(prompt))
guesstaken += 1
if user_guess == randm:
print("You guessed {} {}, in {} guesses".format(randm, name, guesstaken))
# break out of inner loop
break
elif user_guess >= randm:
print("Guess lower")
elif user_guess <= randm:
print("Guess higher")
# Play again if user inputs "y" or "Y"
if input("Play again? [y/N] ").lower() != "y":
# break out of outer loop
break
print("Thanks for playing, {}.".format(name))
答案 1 :(得分:-1)
只需将randm
分配给randint(1, 99)
(再次randm = randint(1,99)
)。
另外,如果你想要的是Python忘记变量使用del
,但这完全没必要。