谢谢你抽出时间来读这篇文章。 我必须创建一个程序,根据=,-和*生成10个随机数学问题。我有程序工作,但每次我运行后,它打印“无”主程序,即使这不是在我的有什么计划吗如果能帮上忙,我将不胜感激。非常感谢。你知道吗
import random
print ("Welcome")
name=input("What's your name?")
print("Nice to meet you", name, ",you will be given 10 multiplication, addition and subtraction questions.")
Num1 = random.randint(1,12)
Num2 = random.randint(1,12)
sign = random.randint(1,3)
if sign == 1: # If the random number generated is 1
question = Num1 + Num2
rightanswer1 = Num1 + Num2
answer1=input(print("What is", question ,"?"))
if answer1 == rightanswer1:
print("Well Done!")
if answer1 != rightanswer1:
print("Sorry, that's incorrect, the answer was", rightanswer1)
if sign == 2:
question = Num1 - Num2
rightanswer2 = Num1 - Num2
answer2=input(print("What is", Num1, "-", Num2 ,"?"))
if answer2 == rightanswer2:
print("Well done!")
elif answer2 != rightanswer2:
print("Sorry, that's incorrect, the answer was", rightanswer2)
if sign == 3:
question = Num1 * Num2
rightanswer3 = Num1 * Num2
answer3=input(print("What is", Num1, "x", Num2 ,"?"))
if answer3 == rightanswer3:
print("Well done!")
elif answer3 != rightanswer3:
print("Sorry, that's incorrect, the answer was", rightanswer3)`
> Welcome
> What's your name? John
> Nice to meet you John ,you will be given 10 multiplication, addition and subtraction questions.
> What is 12 x 3 ?
> None 36
> Sorry, that's incorrect, the answer was 36
我不愿意只给你一个对你有用的答案,所以我会给你一些改进的提示。(也就是说,这不是一个答案,只是一个太大的评论——更像是一个codereview答案)
首先,你使用这样的结构:
在这种情况下,如果按预期使用
if
语法,阅读起来就更容易了,这没有什么区别:所以你可以这样用:
这将使程序的这一部分更容易理解。你知道吗
同样的事情也可以在
if answer1 == rightanswer1:
节中完成那就更清楚了。您似乎已经在其中的几个中使用了
if...elif
样式,但不是第一个。你知道吗一旦你有了这个,它会更清晰一点。你知道吗
下一种改进方法是删除重复的代码。您不需要为每个标志分别设置分支,只需将所有标志合并为一个:
这将为您完成大部分逻辑,并生成所需的字符串,而无需复制所有其他代码。你知道吗
像这样的小改动可以使事情更具可读性。你知道吗
我想你在用
python 3
。在python3中input
类似于python2中的raw_input
。所以你得到字符串作为输入。所以把它转换成int所以在你的代码中
看这个:
whats-the-difference-between-raw-input-and-input-in-python3-x
它正在打印
None
,因为print()
函数返回None
,而您将None
的值从print()
传递给input()
函数作为提示。例如因此
print("What is", Num1, "x", Num2 ,"?")
打印其内容,并返回None
,然后input()
将其作为提示打印出来。你知道吗解决这个问题的一个简单方法是将
print()
函数调用移出input()
函数。你知道吗例如
但是,您的程序还有另一个主要的问题:
rightanswer
变量是int
,但输入的答案是字符串。为了正确地比较它们,它们必须是同一类型的。所以你要么把输入的答案转换成int
,要么把rightanswer
转换成str
。你知道吗相关问题 更多 >
编程相关推荐