繁体   English   中英

Python 任务我在运行时遇到问题

[英]Python task I'm having trouble running

我在 Udemy 开设了一门新课程,名为“Python 训练营,从零到英雄”。 嗯,基础课后的任务之一就是写一个猜谜游戏,这些是规则:

挑战:

编写一个程序,从 1 到 100 中随机选择一个整数,让玩家猜测这个数字。 规则是:

如果玩家的猜测小于 1 或大于 100,请说“越界” 在玩家的第一回合,如果他们的猜测在数字的 10 以内,则返回“WARM!” 距离数字超过 10,返回“COLD!” 在所有后续回合中,如果猜测比前一个猜测更接近数字,则返回“更温暖!” 比先前猜测的数字更远,返回“COLDER!” 当玩家的猜测等于数字时,告诉他们他们猜对了以及猜对了多少!

我试图在没有指导的情况下写这个,只是从我学到的基本工具。 迄今为止。 这是我的代码(仍在处理它)

guess=randint(0,100)

## Guessing game ! 
# In this game, we will pick a random integer from the integers in the segment [0,100]. 
# In each step one should guess the integer that the system chose.
# Once you gussed correctly, you will win the game.

GuessList=[]

Guess=input('Your Guess is: ')
GuessList.append(Guess)

if int(Guess)<0 or int(Guess)>100:
    print('OUT OF BOUNDS')

else:
    if  int(Guess)==int(guess):
        print('Congragulations, you have earned your chicken for friday \n Game is over now.')
    else:
        if 0<int(guess)-int(Guess)<10:
            print('Warm')
        elif 0<int(Guess)-int(guess)<10:
            print('Warm')
        else:
            print('Cold')
        NewGuess=input('Your new guess is: ')
        
        
if int(NewGuess)==int(guess):
     print('Congragulations, you have earned your chicken for friday \n The game is over now')                

while int(NewGuess)!=int(guess):
    if int(NewGuess)<0 or int(NewGuess)>100:
        print('OUT OF BOUNDS')
    else:
        GuessList.append(NewGuess)
        if 0<int(NewGuess)-int(Guess)<int(Guess)-int(guess):
            print('WARMER')
        elif 0<int(NewGuess)-int(Guess)<int(guess)-int(Guess):
            print('WARMER')
        elif 0<int(Guess)-int(NewGuess)<int(guess)-int(Guess):
            print('WARMER')
        elif 0<int(Guess)-int(NewGuess)<int(Guess)-int(guess):
            print('WARMER')
        else:
            print('COLDER')
        NewGuess=input('Your new guess is: ')

我确定这很糟糕。 我的问题是:

首先,我知道我没有完成任务中写的内容。 我的代码没有告诉猜测他是否更接近正确数字的人,而是与第一个猜测有关。 不要告诉我怎么写正确,等我明白了更关键的问题,我会弄清楚的:

正如它所写的那样,无论我试图猜测什么,它都不会结束游戏(好像 0-100 之间的所有数字)都是不正确的。

同样,当我运行它并尝试运行简单的代码guess ,它什么也不做(我在木星笔记本中工作)。

但是如果我不运行这段代码,只运行guess=randint(0,100)然后运行guess它会显示我的数字。

提前致谢。

让我们一一解决问题:

  1. 您正在将NewGuessGuess ( int(NewGuess)-int(Guess) ) 进行比较, Guess是第一个猜测
  2. 我看不出比赛没有结束的任何理由。 只要您没有输入任何超出范围的数字,游戏就应该结束。 游戏结束时没有任何打印声明,所以也许这就是您认为它没有结束的原因。
  3. 同样, guess应该是区间 [1, 100] 中的数字。 也许您没有从random模块中导入randint

我强烈建议按照信函的课程来学习如何正确编码。 更好的是,给自己找一本由在该主题上拥有数十年经验的专业人士撰写的书。 Udemy 课程还可以,但它们只能让您到此为止。 同样在编码任何东西之前,先对你要编码的东西以及它应该如何运行进行草图。 此外,在 SO 上发布之前,请尝试自己调试,检查每一行并对其进行分析; 确保您确切地知道它的作用。 所以应该是你最后的手段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM