当我使用此代码时,我的目标是尝试确保任何输入都不会破坏代码,比如字母或数字,而不是0-3之间。但是当我使用这个代码时,整个列表不会出现。我该如何解决这个问题?

输出应该如下所示

1

2

3

4

5

6

7

8

9

10

11

12

13Hello Megan the four games avaliable are:

0 Mario Cart

1 Minecraft

2 Angry Birds

3 Grabd Theft Auto

What number game do you want? h

Please choose a valid number

What number game do you want? 23

Please choose a number between 0 and 3

What number game do you want? 1

You have chosen Minecraft

相反,输出是

1

2

3

4

5

6Hello the four games avaliable are:

0 Mario Cart

What number game do you want? 2

1 Minecraft

What number game do you want? h

Please enter a valid value

我使用的代码是:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23#Ask user what game they would like to play

def game () :

global gametype,gamelist

gamelist = ["Mario Cart","Minecraft","Angry Birds","Grabd Theft Auto"]

gamecount = 0

print ("Hello the four games avaliable are:")

while gamecount < 4:

print (gamecount,"",gamelist[gamecount])

gamecount = gamecount + 1

try:

gametype = int(input("What number game do you want?"))

while gametype <0 or gametype >3:

print (" Please enter a value between 0 and 3")

except ValueError:

print ("Please enter a valid value" )

return gametype

game ()

我还尝试了另一种方法,在"try"之前使用"while-true",但程序说这是无效语法。

第二次尝试

我已经使用了这段新代码,但它不会让我运行代码,因为它说当我输入while true时语法无效,true以红色突出显示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24#Ask user what game they would like to play

def game () :

global gametype,gamelist

gamelist = ["Mario Cart","Minecraft","Angry Birds","Grabd Theft Auto"]

gamecount = 0

print ("Hello the four games avaliable are:")

while gamecount < 4:

print (gamecount,"",gamelist[gamecount])

gamecount = gamecount + 1

while True:

try:

gametype = int(input("What number game do you want?"))

if 0 <= gametype <= 3 :

return game

print ("Please enter a value between 0 and 3")

except ValueError:

print ("Please enter whole number from 0 to 3" )

return game

game ()

请修复代码中的缩进。按照您介绍的方式,它不是有效的python,因为try和except不在同一缩进级别上。

此外,while循环将永远不会终止,但如果满足条件,则会无限期运行。

最后,您能告诉我们Python解释器显示的确切错误吗?通常,会有一个关于什么是错误的明确提示。

问题不在您上面显示的代码中,而是在yup.py中,而正是解释器所说的:您试图打印的变量name未定义(尚未引入并设置为任何值)。

看起来您需要检查python的缩进代码规则。正确的缩进在Python中至关重要!

我修正了那些错误,但现在一切都没有打印出来。

检查压痕。我相信通过跟踪程序流,您可以看到它的错误所在。你快到了!

@IonicSolutions我已经更改了我的契约,但我仍然不知道该怎么做

@米歇尔,看起来你有点迷路了。但我可以告诉你,你正在努力使这项工作,所以我很快会发布一个答案。以后,请发布您试图运行的确切代码,并确保缩进与您的计算机上的代码完全相同。当您收到错误消息时,请在您的问题中包含完整的错误消息,从回溯行开始。将错误消息放入代码块以保留格式。

您应该看看Kevin的精彩问答:询问用户输入,直到他们给出有效的回答。在这个阶段,其中的一些代码可能对您来说有点高级,但它非常值得研究并为该页面添加书签,以供将来参考。

顺便说一句,你不想要return game。返回game函数对象本身。您需要返回gametype,并且只有在gametype有效时才应该这样做,所以您不应该将它返回到该except ValueError块中。

我想你想要这样的东西:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21gamelist = ["Mario Cart","Minecraft","Angry Birds","Grand Theft Auto"]

def game(name):

""" Ask user what game they would like to play"""

print ("Hello, {}, the four available games are:".format(name))

for gamenum, gamename in enumerate(gamelist):

print(gamenum,":", gamename)

while True:

try:

gamenum = int(input("What number game do you want?"))

if 0 <= gamenum <= 3:

return gamenum

print("Please enter a value between 0 and 3")

except ValueError:

print ("Please enter a whole number from 0 to 3")

name = input("What's your name?")

gamenum = game(name)

print("You chose", gamelist[gamenum])

演示输出

1

2

3

4

5

6

7

8

9

10

11

12What's your name? Megan

Hello, Megan, the four available games are:

0 : Mario Cart

1 : Minecraft

2 : Angry Birds

3 : Grand Theft Auto

What number game do you want? 4

Please enter a value between 0 and 3

What number game do you want? Minecraft

Please enter a whole number from 0 to 3

What number game do you want? 2

You chose Angry Birds

我对您的代码所做的主要更改是将try.. except的东西放在while True块中,所以我们一直要求输入,直到得到有效的东西为止。我还使用enumerate打印每个游戏及其编号。这比你的while gamecount < 4:环更整洁。

如果您必须使用while循环打印游戏列表,那么您可以这样做:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23gamelist = ["Mario Cart","Minecraft","Angry Birds","Grand Theft Auto"]

def game(name):

""" Ask user what game they would like to play"""

print ("Hello, {}, the four available games are:".format(name))

gamenum = 0

while gamenum < len(gamelist):

print(gamenum,":", gamelist[gamenum])

gamenum += 1

while True:

try:

gamenum = int(input("What number game do you want?"))

if 0 <= gamenum <= 3:

return gamenum

print("Please enter a value between 0 and 3")

except ValueError:

print ("Please enter a whole number from 0 to 3")

name = input("What's your name?")

gamenum = game(name)

print("You chose", gamelist[gamenum])

我把gamelist列为一个全局列表,这样我们就可以在game功能之外访问它。我们不需要在函数中使用global语句,因为我们不更改gamelist。一般来说,应该避免使用global语句。

没有枚举还有什么办法吗?

@米歇尔当然!但是,使用enumerate是一种简洁的方法。你也可以用for gamenum in range(4):来实现。看看你能不能弄清楚。你也可以用一个while循环来完成,就像你以前试图做的那样,但这是最混乱的方式。

我试着改变它,我在问题的底部添加了它,你能看看吗?我想我需要它在while循环中作为一个需求

@Michelle编码时必须小心,以确保键入的关键字和变量名准确无误。你需要while都是小写的。您使用大写W,因此在堆栈溢出部分,它将以浅蓝色而不是深蓝色打印。

谢谢,这使它现在起作用了,但我相信我的"except valueerror"有问题,因为当我输入一个字母时,它会打印("请输入0到3之间的整数"),但它不会像"if"那样重新思考问题。

@米歇尔是的。你还做了一些其他的改变,把事情搞砸了。试着让你的新版本更接近我的。我现在做不了什么,因为我在打电话。

我不知道该怎么做,对不起,我是新来的,我不太明白,但是你能告诉我要改变什么吗?或者我可以等一下

@Michelle你需要让你的程序和我的程序一样,除了打印游戏号码和名称的循环。确保不要弄乱压痕。

@Michelle我在答案中添加了一个新版本。

python的try和except_关于python:修复try和except中的无效语法错误相关推荐

  1. Python学习中的无效语法常见原因和解决办法分析

    Python以其简单的语法而闻名.然而,当您第一次学习Python时,或者当您具有另一种编程语言的坚实背景时,您可能会遇到一些Python不允许的事情.如果您在尝试运行Python代码时收到过Synt ...

  2. python代码中的中文语法错误:SyntaxError: Non-ASCII character ‘\xe5‘ in file trade.py on line 7

    编写的python程序中使用了中午,执行的时候报了上述语法错误.经过排查原因如下: 我使用的解释器的版本是python2的,Python 2默认的编码格式是ASCII,如果直接使用中文就会报如下错误: ...

  3. python中elif老是出错_Python中的Elif语法错误

    这是我用Python编写的基于文本的冒险游戏if/elif/else条件的代码.本节的目的是让玩家选择该怎么做,但是它说我所有的"elif"语句的语法都有问题.在if comman ...

  4. python常见的语法错误_python常见语法错误有什么

    本文主要整理了Python中常见的语法错误,需要的小伙伴可以学习. 1:TypeError: must be str, not int 类型错误name = '小王' age = 20 print(' ...

  5. python中common是什么意思_common中的python无效语法

    使用IDLE Python 3.4.3.这是一个脚本,给用户一个小测试,然后计算有多少得到正确的.在脚本运行之前,我的注释中有一个无效语法错误.这是评论的全部代码.具体注释在score = decim ...

  6. python中语法错误英文提示解析(可能没有解决方案)

    python中常见的语法错误英文提示解析 1.indentation is not a multiple of four 缩进不是四的倍数 2.PEP 8: E231 missing whitespa ...

  7. Python语法错误和异常

    语法错误和异常 语法错误和异常 异常和错误 处理异常 捕获指定异常 异常中的else 异常的finally 自定义异常类型 语法错误和异常 异常和错误 错误分为两种:语法错误与异常 语法错误:指拼写代 ...

  8. python setup.py install 提示语法错误_python – 使用“’packages’:[],”安装setup.py时无效的语法...

    我是编程新手,过去几周我一直在研究 python.大多数指令来自资源"学习 Python的艰难之路". 现在我的问题,我刚刚开始进行测验,基本上你已经完成并安装了自己的setup. ...

  9. python交互式环境是什么意思_如何在交互式环境中执行 Python 程序

    如何在交互式环境中执行 Python 程序 相信接触过 Python 的小伙伴们都知道运行 Python 脚本程序的方式有多种, 目前主要的方式有: 交互式环境运行命令行窗口运行开发工具上运行等, 其 ...

  10. python中__init__导入失败_python - 如何使用__init__.py修复“在非包中尝试相对导入”...

    python - 如何使用__init__.py修复"在非包中尝试相对导入" 我正在尝试遵循PEP 328,具有以下目录结构: pkg/ __init__.py component ...

最新文章

  1. 本地nginx多域名映射
  2. SAP保存操作记录CDHDR和CDPOS表
  3. C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表
  4. spring之集合注入
  5. 冲刺阶段(二) 第六天
  6. 用卷积神经网络识别实际田间条件下茶叶病虫害(自然环境下拍摄的数据集不用太多预处理)
  7. leancloud 怎么绑定域名_云引擎支持绑定加速域名 | LeanCloud 八月变化
  8. fdtd安装在服务器系统可以么,并行FDTD结合服务器分析电大电磁问题
  9. c++ PP第九章最后一题
  10. 公众号的服务器位置和ip地址,怎么查看公众号服务器ip地址吗
  11. 来,同学,坐下,谈谈对Dex文件的认识
  12. 【机器学习应用】机器学习之有监督学习
  13. Pinterest和Instagram哪个更好用?姐妹还是天敌...
  14. WIFI破解原理(WEP)
  15. Recap Language Model (LM) -- 自然语言处理中的预训练,对于Bert、ELMO、GPT的一些思考
  16. [转]看恐怖片能减肥
  17. 在通用计算机内 PC是指,计算机模拟考试题答案
  18. IBM SPSS Modeler使用技巧 ----参数及全局变量的使用
  19. Win8快速关机命令
  20. Java基础之《JVM性能调优(14)—CPU性能调优》

热门文章

  1. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别【含Matlab源码 1118期】
  2. 【水果识别】基于matlab GUI苹果质量检测及分级系统【含Matlab源码 896期】
  3. 福建师范网络教育应用计算机,福建师范大学网络教育计算机应用基础课程期末考核答案.docx...
  4. CSE-CIC-IDS 2018数据集下载
  5. linux qt读取显示图片,Linux下使用QT调用opencv读取摄像头视频 调试心得
  6. python字典统计字母出现次数_第三篇 python运用字典统计字符串中字母出现的次数...
  7. java接口测试工具_接口模拟测试利器,moco server工具的介绍
  8. kali工具中文手册_黑客系统指南-在安卓手机上安装kali分步教程
  9. linux内核 semaphore,Linux内核参数信号量semaphore设置
  10. 32利用文件系统保存数据_数据管理技术的产生与发展