首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我的代码可以在在线编译器上运行,而不能在代码编辑器上运行

为什么我的代码可以在在线编译器上运行,而不能在代码编辑器上运行
EN

Stack Overflow用户
提问于 2021-01-16 06:29:00
回答 2查看 67关注 0票数 0

为什么我的代码会卡在while循环中?我不能理解为什么会发生这种情况。这段代码像往常一样在像Thorny这样的在线代码检查器和编译器上运行。但是当在代码编辑器中运行它时,它会进入无限的while循环。有一些错误,我不能删除。请帮我解决问题。

代码语言:javascript
运行
AI代码解释
复制
import random

WIN_SCORE = 100
DICE_FACES = 6

Position_of_snakes = {17: 7, 54: 34, 62: 19, 98: 79}
Position_of_ladders = {3: 38, 24: 33, 42: 93, 72: 84}


def starting_title():
    print("###### Welcome to Snake & Ladder Game ######")
    print("###### Lets us Start ######")


def players_name():
    player1_name = None
    while not player1_name:
        player1_name = input("Please enter Player 1 name: ")
    player2_name = None
    while not player2_name:
        player2_name = input("Please enter Player 2 name: ")
    return player1_name, player2_name


def roll_the_dice():
    dice_value = random.randint(1, DICE_FACES)
    return dice_value


def snake_and_ladder(player_name, current_position, value_of_dice):
    previous_position = current_position
    current_position = current_position + value_of_dice

    if current_position > WIN_SCORE:
        return previous_position

    if current_position in Position_of_snakes:
        final_position = Position_of_snakes.get(current_position)
    elif current_position in Position_of_ladders:
        final_position = Position_of_ladders.get(current_position)
    else:
        final_position = current_position
    return final_position


def win_check(player_name, position):
    if WIN_SCORE == position:
        print(f"Congratulations!!! {player_name} won the Game")


def game_start():
    starting_title()

    player1_position = 0
    player2_position = 0

    player1_name, player2_name = players_name()
    while True:
        player_input_1 = input("Enter 'roll' to Roll the Dice").lower()
        dice_value = roll_the_dice()
        player1_position = snake_and_ladder(player1_name, player1_position, dice_value)
        win_check(player1_name, player1_position)
        player_input_2 = input("Enter 'roll' to Roll the Dice").lower()
        dice_value = roll_the_dice()
        player2_position = snake_and_ladder(player2_name, player2_position, dice_value)
        win_check(player2_name, player2_position)

game_start()
EN

回答 2

Stack Overflow用户

发布于 2021-01-16 06:36:42

当玩家获胜时,你需要跳出这个循环。所以win_check()应该返回玩家是否赢了,您可以在if语句中使用它。

代码语言:javascript
运行
AI代码解释
复制
def win_check(player_name, position):
    if WIN_SCORE == position:
        print(f"Congratulations!!! {player_name} won the Game")
        return True
    else:
        return False


def game_start():
    starting_title()

    player1_position = 0
    player2_position = 0

    player1_name, player2_name = players_name()
    while True:
        player_input_1 = input("Enter 'roll' to Roll the Dice").lower()
        dice_value = roll_the_dice()
        player1_position = snake_and_ladder(player1_name, player1_position, dice_value)
        if win_check(player1_name, player1_position):
            break
        player_input_2 = input("Enter 'roll' to Roll the Dice").lower()
        dice_value = roll_the_dice()
        player2_position = snake_and_ladder(player2_name, player2_position, dice_value)
        if win_check(player2_name, player2_position):
            break
票数 0
EN

Stack Overflow用户

发布于 2021-01-16 06:39:22

你有一个无限循环的while True。您需要在那里声明一个变量,并在每次移动后更新它的值。您可以使用您的win_check函数来返回condition的值。

代码语言:javascript
运行
AI代码解释
复制
while win_check()

在win_check中

代码语言:javascript
运行
AI代码解释
复制
if WIN_SCORE == position:
    print(f"Congratulations!!! {player_name} won the Game")
    return false
else
    return true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65747065

复制
相关文章
散列查找和哈希查找_散列检索
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:
全栈程序员站长
2022/11/15
9070
Hash表(二)——散列冲突
在Hash表(一)——Hash函数已经分析了散列冲突产生的原因,我们一般使用开放寻址法和链表法来解决。
用户3470542
2019/07/10
1.4K0
Hash表(二)——散列冲突
使用awk命令批量删除指定范围的账号
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢
耕耘实录
2018/12/20
1.2K0
几道和散列(哈希)表有关的面试题
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
五分钟学算法
2019/03/19
1.4K0
几道和散列(哈希)表有关的面试题
分离链接的散列散列代码实现
散列 散列为一种用于以常数平均时间执行插入,删除和查找的技术。一般的实现方法是使通过数据的关键字可以计算出该数据所在散列中的位置,类似于Python中的字典。关于散列需要解决以下问题: 散列的关键字如何映射为一个数(索引)——散列函数 当两个关键字的散列函数结果相同时,如何解决——冲突 散列函数 散列函数为关键字->索引的函数,常用的关键字为字符串,则需要一个字符串->整数的映射关系,常见的三种散列函数为: ASCII码累加(简单) 计算前三个字符的加权和$\sum key[i] * 27^{i}$ (不太
月见樽
2018/04/27
1.6K0
SQL 删除外键列
alter table tableName drop column columnName  --(其中,tableName为表名,columnName为列名)
星哥玩云
2022/08/17
1.6K0
散列/散列函数「建议收藏」
每个关键字被映射到从0-TableSize-1这个范围中的某个数,并且被放到适当的单元中。这种映射就叫做散列函数
全栈程序员站长
2022/08/28
9120
散列/散列函数「建议收藏」
散列算法与散列码
一、引入 1 /** 2 * Description:新建一个类作为map的key 3 */ 4 public class Groundhog 5 { 6 protected int number; 7 8 public Groundhog(){ 9 } 10 public Groundhog(int number) 11 { 12 this.number = number; 13 } 14 15 @Overr
JMCui
2018/03/15
1.5K0
散列算法与散列码
Hash(散列)冲突解决 线性探测再散列和二次探测再散列
例如  哈希函数为: H(key) =  key %13,key 为关键字,采用开放地址法中的线性探测再散列解决冲突,依次输入
用户2965768
2018/12/28
16.7K0
C++:哈希:闭散列哈希表
哈希表就是通过哈希映射,让key值与存储位置建立关联。比如,一堆整型{3,5,7,8,2,4}在哈希表的存储位置如图所示:
二肥是只大懒蓝猫
2023/03/30
4630
C++:哈希:闭散列哈希表
散列
将一个元素的关键码和存储位置之间建立对应的函数关系 Hash( ), 使得每个关键码与结构中的唯一的存储位置相对应:
Rikka
2022/02/07
1.8K0
SqlServer批量删除表
最近需要删除一批曾经用来存放日志的表,这些表数量很多而且占用了大量的磁盘空间,不得不删除,释放相应的磁盘空间。但是一张一张的手动来删除比较麻烦,在网上找了小技巧,只需要三步,就可以实现批量删除。
我是李超人
2020/08/20
2.9K0
散列
选择键值,冲突的时候采取不同的策略 散列函数: 简单的散列函数: 1 int hash(const string & key,int tableSize) 2 { 3 int hashVal = 0; 4 for(int i = 0; i < key.length();++i) 5 { 6 hashVal + = key[i]; 7 } 8 return hashVal % tableSize; 9 } 比较好的散列函数: 1 int hash( c
用户1154259
2018/01/17
8200
【Oracle笔记】详解表分区的方式(范围、散列、列表、复合)
   范围分区是根据数据库表中某一字段的值的范围来划分分区,例如:user表过于庞大时,将user表根据一周7天分成7个分区。
程序员云帆哥
2022/05/12
2.1K0
散列冲突
概念:如果当一个元素被插入时与一个已经插入的元素散列到相同的值, 那么就会产生冲突, 这个冲突需要消除。解决这种冲突的方法有几种:本章介绍两种方法:分离链接法和开放定址法
全栈程序员站长
2022/08/27
6020
Hash散列[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146553.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/27
6790
hashmap 的重新散列和装载因子
HashMap 的装载因子是 0.75,用人话说就是当 HashMap 的容量达到定义容量的 75% 的时候,HashMap 会进行扩容,当 HashMap 进行扩容的时候就会重新散列(rehashing)。
HoneyMoose
2022/11/30
6000
hashmap 的重新散列和装载因子
Python:说说字典和散列表,散列冲突的解决原理
散列表其实是一个稀疏数组(总是有空白元素的数组称为稀疏数组)。在一般书中,散列表里的单元通常叫做表元(bucket)。在 dict 的散列表当中,每个键值对都占用一个表元,每个表元都有两个部分,一个是对键的引用,一个是对值的引用。因为每个表元的大小一致,所以可以通过偏移量来读取某个表元。
丹枫无迹
2019/03/15
2K0
hashmap 的重新散列和装载因子
HashMap 的装载因子是 0.75,用人话说就是当 HashMap 的容量达到定义容量的 75% 的时候,HashMap 会进行扩容,当 HashMap 进行扩容的时候就会重新散列(rehashing)。
HoneyMoose
2022/12/03
4760
hashmap 的重新散列和装载因子
散列函数
散列的概念属于查找,它不以关键字的比较为基本操作,采用直接寻址技术。在理想情况下,查找的期望时间为O(1)。
233333
2019/09/24
9290

相似问题

MATLAB中不同长度信号的互相关

23

不同长度的C#中的两个信号相关

34

python中两个信号的归一化互相关

25

归一化-具有不同采样率的信号

147

如何对颤振中[-1,1]之间的数据进行归一化

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文