鱼C论坛

 找回密码
 立即注册
查看: 7708|回复: 18

[已解决]求教大神:while循环中,i+=1老是报错“invalid syntax”

[复制链接]
发表于 2016-6-16 12:05:42 | 显示全部楼层 |阅读模式

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

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

x
#innumber,用户输入的数
#getnumber,转换成整形的数
#secret,猫咪爱的数字
#j,输入类型正确的次数,有5次,j<5
#i,猜的次数,有8次机会,i<=8

import random
secret = random.randint(1,10)
j = 0
i = 0
while(j<5):   
    innumber = input('猜猜猫咪爱的数字是几:')
    if(isinstance(innumber,int) == 1):
        getnumber = int(innumber)
       # i = 0
        while(i<8):   
            if(getnumber == secret ):
                print('I LOVE YOU')
            else:
                if(getnum > secret):
                    print('大了大了')
                else:
                    print('小了小了')
                print('哼!再猜!你只剩'8-i'次机会')
                i+=1
        print('哼!那么多次机会都没猜对,你没机会了!')
    else:
        print('对不起,请输入整数,您还有'5-j'次机会')
        j+=1
print('嘿哥们,不玩了,老是不输入整数~')
最佳答案
2016-6-16 15:32:48
print("哼!再猜!你只剩'8-i'次机会")
print 只能输出字符串或者数字
如果要输出字符串和数字混合的模式,就要先把数字转成字符然后拼接。
print('哼!再猜!你只剩'+str( 8-i)+'次机会')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-16 12:41:20 | 显示全部楼层

回帖奖励 +1 鱼币

看到你输出的信息,感觉很有乐趣
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-16 12:51:34 | 显示全部楼层
标点符号错误!

  1. print("哼!再猜!你只剩'8-i'次机会")
  2. print('哼!那么多次机会都没猜对,你没机会了!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-16 14:47:43 | 显示全部楼层
flyskyltq 发表于 2016-6-16 12:41
看到你输出的信息,感觉很有乐趣

模拟的和女友对话
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-16 14:49:55 | 显示全部楼层

这个是怎么错了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-16 15:32:48 | 显示全部楼层    本楼为最佳答案   
print("哼!再猜!你只剩'8-i'次机会")
print 只能输出字符串或者数字
如果要输出字符串和数字混合的模式,就要先把数字转成字符然后拼接。
print('哼!再猜!你只剩'+str( 8-i)+'次机会')

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-16 16:37:55 | 显示全部楼层
梦里不知身是客 发表于 2016-6-16 15:32
print("哼!再猜!你只剩'8-i'次机会")
print 只能输出字符串或者数字
如果要输出字符串和数字混合的模式 ...

if (isinstance(innumber,int)==1):
        guessnumber=int(innumber)
        print('验证是否进入if 循环,guessnumber=',guessnumber)
这个if句子写的对不对?因为老是无法进入if循环,就是后面那个print打印不出来。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-16 17:27:30 | 显示全部楼层
isinstance(innumber,int) 这个是判定innumber是不是int类型,你输入的是int类型吗?
逻辑问题,单步调试看看运行状态吧

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-6-16 17:33:16 | 显示全部楼层
梦里不知身是客 发表于 2016-6-16 17:27
isinstance(innumber,int) 这个是判定innumber是不是int类型,你输入的是int类型吗?
逻辑问题,单步调试 ...

输入的是int整形,但是还是无法进入if循环中。
再请问下:怎么单步调试啊?需要下载什么插件吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-16 20:31:36 | 显示全部楼层
1、如果在字符串内部要用引号,必须外层引号和字符串内部的引号用不同的,例如print("哼!再猜!你只剩'8-i'次机会"),外面用“”双引号,里面用单引号,这是3楼说标点符号错误的原因
2、如果想要实现print输出8-i,应该这样写print("哼!再猜!你只剩%d次机会"%(8-i))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-6-16 20:54:33 | 显示全部楼层
vpo1 发表于 2016-6-16 20:31
1、如果在字符串内部要用引号,必须外层引号和字符串内部的引号用不同的,例如print("哼!再猜!你只剩'8-i ...

请问下:如果print("你还有%d次机会"%(8-i)) 的意思就是%d出显示(8-i)。这种用法是通用的是吧?换成别的也可以吗?比如print(“你已经消耗了%m升%(8-i))?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-17 10:36:45 | 显示全部楼层
格式
含义
注意
%d,或%i
输出整数
会直接取整输出,例如13.6会输出为13
%f,或%F
输出浮点直接用会输出6位小数
%.nf
输出指定位数的浮点
n是小数点后的位数,特别的如果用%.f即不指定n,那么会输出一个整数,但这个整数是四舍五入的。
如果本身位数少,那么会补0
不特别规定,总是会输出带-号的负数,但正数则不会有+,需要带+则需要用%+.nf,注意+要在点之前
%.ne或E
科学记数法
%g或G
自动选择
自动选择是浮点数还是科学记数法
%%
输出%号
%(number1,number2)
输出多个格式化字符串
注意,这是在需要输出多个时,在后面用的格式,例如
print("第一个数字是%.2f%%,\n第二个数字是%.2f%%"%(number,number2))
格式化赋值

my_string = '%.2f' % 12.3456
用format格式化
适用于python2.6之后
print 'I got {0:.1f} in math, {1:.1f} in science'.format(math, science)注意,format是字符串的一个方法,所以要用.format,注意花括号,注意0:和1:实际上说明字符串相当于一个元组?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-17 10:38:31 | 显示全部楼层
使用%在字符串中格式化输出,例如
age=13
print("你的年龄是%i岁"%age)
先在字符串中%i,然后在后面紧接着%变量
具体用法见上表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-6-17 10:42:36 | 显示全部楼层
提高效率用爬虫 发表于 2016-6-16 16:37
if (isinstance(innumber,int)==1):
        guessnumber=int(innumber)
        print('验证是否进入i ...

innumber = input('猜猜猫咪爱的数字是几:'),input获得的输入都是字符串,所以需要转换为整数格式的,最简单的就是用int(innumber)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-17 13:47:50 | 显示全部楼层
你的i+=1 少了一个缩进,不是放在else里的;另外如果第一次就猜中 也没有退出循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-10 00:56:05 | 显示全部楼层
错误比较多
改进一下
楼主参考
  1. import random
  2. secret = random.randint(1,10)
  3. j = 0
  4. i = 0
  5. while(j<5):   
  6.     innumber = input('猜猜猫咪爱的数字是几:')
  7.     if innumber.isdigit():
  8.         getnumber = int(innumber)
  9.         if getnumber == secret :
  10.             print('I LOVE YOU')
  11.             break
  12.         else:
  13.             if getnumber > secret:
  14.                 print('大了大了')
  15.                 i+=1
  16.                 continue
  17.             else:
  18.                 print('小了小了')
  19.                 i+=1
  20.                 continue
  21.             print('哼!再猜!你只剩%d次机会'%(8 - i))
  22.         print('哼!那么多次机会都没猜对,你没机会了!')
  23.         
  24.     else:
  25.         j += 1
  26.         print('对不起,请输入整数,您还有%d次机会'%(5 - j))
  27. if j == 5:
  28.     print('嘿哥们,不玩了,老是不输入整数~')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-11 18:44:09 | 显示全部楼层
新手一枚 你的问题也遇到过  把我自己能看出来的问题 给说了下 说的不对的地方见谅 毕竟小甲鱼的课才看到第五讲 没鱼币开课后题了 苦逼..
import random
secret = random.randint(1,10)
j = 0
i = 0
while(j<5):   
    innumber = input('猜猜猫咪爱的数字是几:')
    if(isinstance(innumber,int) == 1):
    # 你进不了循环是因为这个if语句不对 在小甲鱼python零基础入门第五讲课后题有讲到“input()的返回值始终是字符串”
        getnumber = int(innumber)
        while(i<8):
        # 上面已经计算一次次数了 这里这个while感觉好像没什么必要啊
            if(getnumber == secret ):
                print('I LOVE YOU')
            else:
                if(getnum > secret):
                # 这里getnumber写错了....
                    print('大了大了')
                else:
                    print('小了小了')
                print('哼!再猜!你只剩'8-i'次机会')
                # 这里你的括号里用了两个单引号  外面的必须换成双引号,并且也不能写'8-i'他会直接给你输出8-i 而不会计算出来
                i+=1
        print('哼!那么多次机会都没猜对,你没机会了!')
        
    else:
        print('对不起,请输入整数,您还有'5-j'次机会')
        # 这里也是和上面那句一样的问题
        j+=1
print('嘿哥们,不玩了,老是不输入整数~')

还有就是感觉其他的地方也有些问题 但是知识量不够啊 本来想给改一波代码的 但是输出剩余次数那不知道怎么弄 还有就是各个print没处理好 就不发了   给我鱼币吧 阿门
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-3 22:39:03 | 显示全部楼层
查下代码格式怎么发,这个有点乱哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-3 22:43:22 | 显示全部楼层
本帖最后由 铁岭小刚fishc 于 2018-5-3 23:26 编辑

我找到的错误1  
            if(getnumber == secret ):
                print('I LOVE YOU')
                                如果相等 游戏结束 break 跳出循环  这里加个 break

错误2  第14行  getnumber 打印成 getnum了 打错了

                if(getnumber > secret):
                    print('大了大了')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 09:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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