首页 新闻 会员 周边

python的批量注释,会导致 while... else... 中的 else 报 invalid syntax 错误,不知原因,有高手见到还请赐教

0
[已解决问题] 解决于 2020-01-10 17:19

初学python,发现批量注释的一个问题,还请各位大拿指教

import random

num_random = random.randint(1,101)
count = 0

while count < 10:
    num_input = int(input("请输入您的整数数字(1~100):"))
    count += 1

    if num_input == num_random:
        print("恭喜您,猜对了。。。,共猜了 %d 次"%count)
        break

    elif num_input > num_random:
        print("您输入的数字太大,再输入个小一点的数试试。。")       

    else:
        print("您输入的数字太小,大一些。。")

# 使用"#"注释,执行时,下面 else 语句不会报错。
#    if count == 10:
#        
#        game_again = input("您已猜了10次,仍然没有猜中,是否继续游戏(yes/no)?")
#
#        if game_again == "yes":
#            count = 0
#
#        else:
#            break

else:
    print("猜了10次都没有猜中,太遗憾了。。")

但如果把上面,使用 "#" 注释的部分,改为使用 ''' 来批量注释的话,就会报invalid syntax 错误。

import random

num_random = random.randint(1,101)
count = 0

while count < 10:
    num_input = int(input("请输入您的整数数字(1~100):"))  
    count += 1

    if num_input == num_random:
        print("恭喜您,猜对了。。。,共猜了 %d 次"%count)
        break

    elif num_input > num_random:
        print("您输入的数字太大,再输入个小一点的数试试。。")       

    else:
        print("您输入的数字太小,大一些。。")

# 使用单引号或者双引号批量注释时,执行时,下面的 else 就会报invalid syntax 错误。

'''       
    if count == 10:   
        game_again = input("您已猜了10次,仍然没有猜中,是否继续游戏(yes/no)?")

        if game_again == "yes":
            count = 0

        else:
            break
'''

else:
    print("猜了10次都没有猜中,太遗憾了。。")

而有趣的是,如果把使用批量注释的部分,放到代码最后面不会报错了。

import random

num_random = random.randint(1,101)
count = 0

while count < 10:
    num_input = int(input("请输入您的整数数字(1~100):"))
    count += 1

    if num_input == num_random:
        print("恭喜您,猜对了。。。,共猜了 %d 次"%count)
        break

    elif num_input > num_random:
        print("您输入的数字太大,再输入个小一点的数试试。。")       

    else:
        print("您输入的数字太小,大一些。。")

else:
    print("猜了10次都没有猜中,太遗憾了。。")

# 一样的代码,把批量注释掉的代码放到 else 的后面,再执行时,就不会报错。

'''       
    if count == 10:
        game_again = input("您已猜了10次,仍然没有猜中,是否继续游戏(yes/no)?")

        if game_again == "yes":
            count = 0

        else:
            break

'''

补充我的python版本:
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32

小蜻蜓点水的主页 小蜻蜓点水 | 菜鸟二级 | 园豆:224
提问于:2020-01-10 15:46
< >
分享
最佳答案
0

字符串也不是注释啊

奖励园豆:5
jakio6 | 小虾三级 |园豆:1318 | 2020-01-10 16:31
'''       
    if count == 10:
        game_again = input("您已猜了10次,仍然没有猜中,是否继续游戏(yes/no)?")

        if game_again == "yes":
            count = 0

        else:
            break

'''

上面这部分批量注释,放在 while 前面就没问题,放在 else 前面就报错。。。,见下面对比图

注释放在 else 语句前面

注释放在 while 语句前面

小蜻蜓点水 | 园豆:224 (菜鸟二级) | 2020-01-10 16:47

@小蜻蜓点水: 字符串不是注释,就跟个没有作用的语句一样. 你个什么语句到那里都会报错啊

jakio6 | 园豆:1318 (小虾三级) | 2020-01-10 17:00

@小蜻蜓点水: 在正常可以出现语句的地方可以当做注释用,但是不能说它就和注释是等价的

jakio6 | 园豆:1318 (小虾三级) | 2020-01-10 17:02

@jakio6: 我明白了,python中单双引号是被认为是字符串的,可以用作注释用,这次主要原因是因为 while 代码块 和 else 代码块 之间不能有其他代码了(纯注释代码除外),所以才报错。

小蜻蜓点水 | 园豆:224 (菜鸟二级) | 2020-01-10 17:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册