试图在python while循环中定位语法错误

试图在python while循环中定位语法错误,python,Python,非常非常新的初学者-今天刚开始学习!这里的语法错误是什么: import random x = random.randrange(7) user_start = "yes" user_start_input = str(input("type 'yes' to generate random number. ")) while user_start_input == user_input: print("your random dice number is " + str(x)) user_st

非常非常新的初学者-今天刚开始学习!这里的语法错误是什么:

import random
x = random.randrange(7)
user_start = "yes"
user_start_input = str(input("type 'yes' to generate random number. "))
while user_start_input == user_input:
print("your random dice number is " + str(x))
user_start_input = input("roll again?")
if user_start_input != user_input:
break
print("done")
错误消息是:

文件“/Users/joel/Documents/Learning Python/Dice.py”,第12行
当用户\u开始\u输入==用户\u输入时:
^
语法错误:无效语法


我做错了什么?

首先,似乎您混淆了两个变量名
user\u start
user\u input
,因此需要将它们更改为相同的变量名

接下来,Python使用缩进结构代码:因此while循环等中的内容需要缩进

在这里,您将缩进while循环中的所有代码,并进一步缩进while循环中if语句中的代码

代码的目的似乎也是在每次while循环再次运行时模拟掷骰子。在while循环中,您为掷骰子调用变量
x
,但
x
从未更改。您从未将
x
更改为不同的随机数,因此每次用户再次掷骰子时,它只会显示相同的随机数

要解决此问题,只需在每次运行while循环时重新定义
x
。因此,只需将变量
x
的定义移动到while循环中即可

通过所有这些修复,代码可以正常工作:

随机导入
用户\u start=“是”
user\u start\u input=str(输入(“键入“是”生成随机数”)
当用户\u开始\u输入==用户\u开始时:
x=随机。随机范围(7)
打印(“你的随机骰子数是”+str(x))
用户\u开始\u输入=输入(“再次滚动?”)
如果用户启动输入!=用户启动:
打破
打印(“完成”)
当然,变量名可以提供更多的信息,代码的结构也可以更好地提高性能和用户友好性,但总的来说,对于初学者来说,这是一项伟大的工作

首先,我们(希望回答的人)丢失了一些信息,
5
在线时,当
在线
12
时报告错误时,有很多可能会导致错误出现在下一行;缺少报价。看起来G.Anderson已经躲过了最后一点,因为错误通常来自前一行。在这种情况下,我的建议是找到一个开发人员友好的文本编辑器(IDE),它可以通过语法突出显示来指出小的打字错误;非常棒,特别是有几个插件,但是还有很多其他的文本编辑器可以使用

其次,正如
CoffeeTableEspresso
所评论的,标签在您的代码剪贴中是不存在的!如果您的源代码看起来与发布的代码完全相同,那么您的bug踩踏才刚刚开始

第三,因为ya已经声明Python不是您的第一语言,所以了解
\uuuu doc\uuuu
字符串可能会有帮助,如果不是现在,那么将来肯定会有帮助,例如

>>打印(random.randrange.\uuuuuu doc\uuuuuuuuuuuuuuuuuuuuu)
从范围(开始、停止[、步骤])中选择一个随机项。
这修复了randint()的问题,其中包括
终点;在Python中,这通常不是您想要的。
。。。Python中的许多内容都是通过
\uuuu doc\uuuu
方法记录和访问的,也可以通过
help()
访问,例如
help(random.randrange)
,并且可以使用以下语法编写自己的内容

def测试函数(arg):
"""
这是一个文档字符串
"""
打印(“arg->{0}”。格式(arg))
最后,就目前而言,在用一种不熟悉的语言写作时,最好使用大量的注释,并将内容分割成小块,以表达您的意图;例如

#/usr/bin/env python
随机输入
def骰子(边=6):
"""
返回'1'和'side'之间的随机整数`
"""
返回random.randrange(开始=1,停止=int(边)+1,步长=1)
def提示符(应为消息):
"""
如果用户输入与预期匹配,则返回'True'`
"""
预期返回==str(输入(“{0}”)。格式(消息)))
def主回路()
"""
返回'dice(…)`结果的列表,列表长度取决于
当出现次数时,`prompt(…)`返回`True`
"""
滚动结果=[]
用户\u开始='是'
#为循环的第一次运行设置消息
message=“键入“{0}”掷骰子”。格式(用户\u开始)
提示时(message=message,expected=user\u start):
#将骰子输出保存到变量,以便以后使用和
#附加到将返回的卷列表中
掷骰子(边=6)
滚动结果。追加(滚动)
#现在只需打印每一卷,但这是一卷
#aria可通过自己的编辑进行扩展
打印(“滚动{0}”。格式(滚动))
#为以下循环迭代设置新消息行
消息='再次滚动?'
返回滚动结果
#如果脚本是直接运行的,而不是作为模块导入的,则执行这些操作
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
主循环()

注意,坚持下去,最终所有的学习都会开始点击,下面与RP相关的示例课程将从

#/usr/bin/env python
从未来导入范围
随机输入
分类袋(dict):
"""
DiceBag是“random.randrange”的捷径集合。
-'selection','n'sided骰子列表,例如,'[4,20]`将与d4和d20一起打包
"""
定义初始值(自,选择=[2,4,20],**kwargs):
超级(DiceBag,自我)。\uuuuu初始值(**kwargs)
self.update(selection=selection)
def骰子(自身,侧面=6):
"""
返回'1'和'side'之间的随机整数`
"""
返回random.randrange(开始=1,停止=int(边)+1,步长=1)
def handfull_of(self,dice={}):
"""
返回带有掷骰子列表的'dict'
##范例