博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python】牛客编程题---汽水瓶
阅读量:2356 次
发布时间:2019-05-10

本文共 1186 字,大约阅读时间需要 3 分钟。

  • 这道题不是说太难了值得写一篇博客来纪念,而是作为一个python初学者,通过这道题掌握了python的一个坑。
  • 我的代码如下:
while True:		num = int(input())		if num != 0:			numOfQs = 0			while num // 3:				numOfQs += num // 3				num = num//3 + num%3			print(numOfQs + num - 1)
  • 正常的测试用例你输多少个结果都是对的。但是提交上去通过率0.0。
  • 然后在牛客上使用自测功能,测试也正常,找了一大圈。复制了别人的代码过来。运行正常。
  • 然后看到了这位朋友的代码
while True:    try:       a=int(input())       if a!=0:           print(a//2)     except:        break
  • 发现它多放了个try和except,我故意将这两个符号去掉,提交上去,逻辑上确实没毛病,但是测试通不过。把try和except放上去,就能通过。
  • 然后我把这两个东西搬过来放到我的程序上:
while True:	try:		num = int(input())		if num != 0:			numOfQs = 0			while num // 3:				numOfQs += num // 3				num = num//3 + num%3			print(numOfQs + num - 1)	except:		break
  • 提交通过
  • 总结:python如果没有try和excetp进行异常处理,当输入异常数据时,程序会出错,而不是结束。需要自己通过异常处理来正常结束程序。c++如果出现数据类型异常会自动结束程序。所以下面的这个代码没有异常处理任然能够通过测试:
#include 
using namespace std;int main(){
int n; while(cin>>n) {
if(n==0) break; int count=0; while(n/3) {
count+=n/3; n=n/3+n%3; } cout<
<
  • OJ系统判断输入是否结束的情况
    • 在OJ系统中,输入一般是一个文件,有些题目,它不告诉你到底有多少个输入数据。
      需要你自己判断输入是否结束,这就需要自己动手了。
      在这种情况下,我们可以把输入转化为int,这样一来就会出错,然后使用try和except来处理异常,终止程序。

转载地址:http://yzbtb.baihongyu.com/

你可能感兴趣的文章
IOS 成员变量,属性变量,局部变量,实例变量,全局变量 详解
查看>>
Android ADB 详解
查看>>
GitHub 出现 POST git-receive-pack (chunked) 解决方案详解
查看>>
iOS SQLCipher SQLite加密 详解
查看>>
OpenSSL生成证书进行iOS加密,java解密的RSA非对称加密 详解
查看>>
Android EventBus详解
查看>>
iOS 关闭软键盘
查看>>
iOS 限制应用只能竖屏显示
查看>>
Android Studio Freeline插件详解
查看>>
SourceTree冲突解决详解
查看>>
iOS CocoaPods 详解
查看>>
Object-C Block详解
查看>>
iOS 不定参数 详解
查看>>
iOS AFNetworking 以及 Cookie 详解
查看>>
Intellij IDEA 将工程转换成maven工程 详解
查看>>
Linux 安装以及基本使用Hadoop 详解
查看>>
iOS 在 xib 文件中使用 UIScrollView
查看>>
iOS pushViewController 和 presentViewController的区别 详解
查看>>
iOS UICollectionView 和 UITableView cell更新 详解
查看>>
iOS UINavigationController 详解
查看>>