找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3794|回复: 4

[求助] 數學乘法執行問題-一直無法驗算結果

1

主题

1

帖子

1

积分

贫民

积分
1
game9910 发表于 2021-2-20 15:29:06 | 显示全部楼层 |阅读模式
本帖最后由 game9910 于 2021-2-20 15:30 编辑

想求助 各位大大,最近想利用 pyhton 做一個 數學的乘法題目,但參考網路上所寫的,自己在按「q」執行時要統計結果時,一直出現 以下訊息
question = input('Please input your answer:(q for exit)')
File "<string>", line 1, in <module>
NameError: name 'q' is not defined
實在搞不懂,想請各位大大幫忙該問題出在那裡呢??

import random

count = 0       #答题總數
right = 0       #正確數量

while True:
    a = random.randint(0,9)
    b = random.randint(0,9)
    print('%d*%d=' %(a,b))
    question = input('Please input your answer:(q for exit)')
    result = a * b
    if question == int(result):
        print('OK!')
        right += 1
        count += 1
    elif question == 'q':
        break
    else:
        print('Failed!')
        count +=1

percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))



回复

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
Marcline 发表于 2021-2-27 12:07:16 | 显示全部楼层
elif question == 'q':==此处改为elif question ==-1:即可
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
matclone 发表于 2021-3-1 15:48:42 | 显示全部楼层
# 只改了2处后,可以正常运行了
# 其实还有一个bug,就是如果运行后,完全不回答,系统会抛出ZeroDivisionError,因为count为0
# 所以最后计算成绩的时候再做个判断会比较好一些
import random

count = 0       #答题總數
right = 0       #正確數量

while True:
    a = random.randint(0,9)
    b = random.randint(0,9)
    print('%d*%d=' %(a,b))
    question = input('Please input your answer:(q for exit)')
   
    result = a * b
    # 字符'q'的判断加在前面会比较好一些
    if question.lower() == 'q':
        break    # 下面一行也做了修改, result 本来就是整型值,所以不需要int()强制转换
    if int(question) == result:
        print('OK!')
        right += 1
        count += 1
    else:
        print('Failed!')
        count +=1

percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))
回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
arktree 发表于 2021-3-4 11:32:20 | 显示全部楼层
同意二楼给出的答案,一般 break优先给出,然后再给出其它执行的条件
回复 支持 反对

使用道具 举报

0

主题

5

帖子

5

积分

贫民

积分
5
呆萌的小辣条 发表于 2021-4-13 17:52:06 | 显示全部楼层
你这个根本无法正常运行,首先question = int(input('Please input your answer:(q for exit)')),才能输入数字的时候才能正确计算结果.
不然即使你答案是对的,结果也是failed。
如果加上了int,你输入q又不灵了,马上报错,数据类型不对。
还不如直接用for循环写,在循环到达一定次数了就能退出来,或者就设置一个-1直接退出。
回复 支持 反对

使用道具 举报

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

本版积分规则

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