鱼C论坛

 找回密码
 立即注册
查看: 1445|回复: 9

[已解决]SyntaxError: 'break' outside the loop

[复制链接]
发表于 2022-5-11 23:39:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# This is a guess the number game.
import random

print('Hello. What is your name?')
name = input()

print('Well, ' + name + ',I am thinking a number between 1 and 20.')
secretNumber = random.randint(1,20)

# print('Debug: Secret number is ' + str(secretNumber))

for guessesTaken in range(1,7):
    print('Take a guess.')
    guess = int(input())
    try:
        if guess < secretNumber:
            print('Your guess is too low.')
        elif guess > secretNumber:
            print('Your guess is too high.')
        else:
            break # This condition is for the correct guess!
    except ValueError:
        print('You did not enter a number.')
   
if guess == secretNumber:
    print('Good job, ' + name + '! You guessed my number in ' +str(guessesTaken) +' guesses!')
else:
    print('Nope. The number I was thinking of was ' + str(secretNumber))
最佳答案
2022-5-12 07:16:34
Boibot 发表于 2022-5-11 23:52
我用pythontutor检验这段代码,指出SyntaxError: 'break' outside the loop
我用F5跑一下,抛出来
这样ex ...


这个报错是因为你 guess 那输入的是字符串 'ss' ,而 'ss' 在 try 捕获外,导致没有捕获到这个  ValueError

而且建议在循环之前对数值进行初始化,这样可以更安全的执行代码,参考代码:
# This is a guess the number game.
import random

print('Hello. What is your name?')
name = input()

print('Well, ' + name + ',I am thinking a number between 1 and 20.')
secretNumber = random.randint(1, 20)

# print('Debug: Secret number is ' + str(secretNumber))
guess = 0
guessesTaken = 0
for guessesTaken in range(1, 7):
    print('Take a guess.')
    try:
        guess = int(input())
        if guess < secretNumber:
            print('Your guess is too low.')
        elif guess > secretNumber:
            print('Your guess is too high.')
        else:
            break  # This condition is for the correct guess!
    except ValueError:
        print('You did not enter a number.')

if guess == secretNumber:
    print('Good job, ' + name + '! You guessed my number in ' + str(guessesTaken) + ' guesses!')
else:
    print('Nope. The number I was thinking of was ' + str(secretNumber))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-11 23:45:13 | 显示全部楼层


SyntaxError: 'break' outside the loop


这个报错主要是指你在非循环体中使用了 break 关键字

只要将 break 关键字都使用在循环内即可

你代码中并没有发现会抛出这个错误的问题

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-11 23:45:47 | 显示全部楼层
本帖最后由 isdkz 于 2022-5-11 23:47 编辑

你这个没有问题,标题那个错误是在 break 没有放在循环里面才会出现的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 23:52:32 | 显示全部楼层
我用pythontutor检验这段代码,指出SyntaxError: 'break' outside the loop
我用F5跑一下,抛出来
line 14, in <module>
    guess = int(input())
ValueError: invalid literal for int() with base 10: 'ss'
这样except ValueError等于没有设置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 00:22:31 | 显示全部楼层
Twilight6 发表于 2022-5-11 23:45
这个报错主要是指你在非循环体中使用了 break 关键字

只要将 break 关键字都使用在循环内即可

请往下翻一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 00:23:02 | 显示全部楼层
isdkz 发表于 2022-5-11 23:45
你这个没有问题,标题那个错误是在 break 没有放在循环里面才会出现的

请往下翻一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 07:16:34 | 显示全部楼层    本楼为最佳答案   
Boibot 发表于 2022-5-11 23:52
我用pythontutor检验这段代码,指出SyntaxError: 'break' outside the loop
我用F5跑一下,抛出来
这样ex ...


这个报错是因为你 guess 那输入的是字符串 'ss' ,而 'ss' 在 try 捕获外,导致没有捕获到这个  ValueError

而且建议在循环之前对数值进行初始化,这样可以更安全的执行代码,参考代码:
# This is a guess the number game.
import random

print('Hello. What is your name?')
name = input()

print('Well, ' + name + ',I am thinking a number between 1 and 20.')
secretNumber = random.randint(1, 20)

# print('Debug: Secret number is ' + str(secretNumber))
guess = 0
guessesTaken = 0
for guessesTaken in range(1, 7):
    print('Take a guess.')
    try:
        guess = int(input())
        if guess < secretNumber:
            print('Your guess is too low.')
        elif guess > secretNumber:
            print('Your guess is too high.')
        else:
            break  # This condition is for the correct guess!
    except ValueError:
        print('You did not enter a number.')

if guess == secretNumber:
    print('Good job, ' + name + '! You guessed my number in ' + str(guessesTaken) + ' guesses!')
else:
    print('Nope. The number I was thinking of was ' + str(secretNumber))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 12:15:15 | 显示全部楼层
Twilight6 发表于 2022-5-12 07:16
这个报错是因为你 guess 那输入的是字符串 'ss' ,而 'ss' 在 try 捕获外,导致没有捕获到这个  ValueE ...

怎么改写能让try捕获'ss'异常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 14:51:17 | 显示全部楼层
Twilight6 发表于 2022-5-12 07:16
这个报错是因为你 guess 那输入的是字符串 'ss' ,而 'ss' 在 try 捕获外,导致没有捕获到这个  ValueE ...

怎么改写能让try捕获'ss'异常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 15:05:19 | 显示全部楼层
Boibot 发表于 2022-5-12 14:51
怎么改写能让try捕获'ss'异常

6 楼的代码就可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 08:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表