指定函数的参数类型

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只

   猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了

   一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,

   问海滩上原来最少有多少个桃子?

方法1:

for i in range(10000):

if (i*5+4)%4 == 0 :

a=(i*5+4)/4

if (a*5+4)%4 == 0 :

b=(a*5+4)/4

if (b*5+4)%4 == 0 :

c=(b*5+4)/4

if (c*5+4)%4 == 0 :

d=(c*5+4)/4

if (d*5+4)%4 == 0 :

e=(d*5+4)/4

print i,a,b,c,d,e

break

方法2:

def r(j,int):

if j%4 == 0 :

return j*5/4+1   #(jj-1)*4/5=j,jj是j的上一个数

for i in range(10000):

if r(i,int) <>None and r(r(i,int),int) <>None and r(r(r(i,int),int),int) <>None \

and r(r(r(r(i,int),int),int),int) <>None and r(r(r(r(r(i,int),int),int),int),int) <>None:

print i,r(i,int),r(r(i,int),int),r(r(r(i,int),int),int),r(r(r(r(i,int),int),int),int),r(r(r(r(r(i,int),int),int),int),int)

break

在用方法2时,一开始定义的def r(j),报错:unsupported operand type(s) for *: ‘NoneType‘ and ‘int‘ 。后面改为指定参数类型,才解决报错问题。

经过分析,是因为r(j)不满足条件时也会返回None,而None作为参数传递使用时是无法进行运算操作的,r(j,int)则限定了参数必须是int类型。

方法2修改后:

def r(j):

if j !=None :

if j%4 == 0 :

return int(j*5/4+1)   #(jj-1)*4/5=j,jj是j的上一个数

for s in range(10000):

s1=r(s)

s2=r(s1)

s3=r(s2)

s4=r(s3)

s5=r(s4)

if (s1!= None) and (s2!= None) and (s3!= None) and (s4!= None) and (s5!= None):

print s,s1,s2,s3,s4,s5

break

原文地址:https://www.cnblogs.com/myshuzhimei/p/11756722.html

时间: 2024-08-04 06:46:10

指定函数的参数类型的相关文章

Python函数学习-参数类型

函数的参数 在定义Python函数时可定义形参,这些参数在调用时候才能确定具体的值,由函数的调用者负责为行参传入参数值 函数的参数类型 一. 位置参数 也叫必传参数,顺序参数,是最重要的,也是必须在调用函数时明确提供的参数!位置参数必须按先后顺序,一一对应,个数不多不少的传递! 说明:a,b,c是函数add的行参,没有具体的值,只有在add(x,y,z)是才被传入值,a=x=1,b=y=2,c=z=3, 其中x,y,z叫做实参,add(4,5,6,7),add(5,7)均为错误调用 二.关键字参

函数输入参数类型为枚举时,则限定函数参数的接收范围,非枚举值输入则错误

1 typedef enum 2 { 3 Mon = 1, 4 Tues, 5 Wed, 6 Thurs, 7 Fri, 8 Sat, 9 Sun 10 }week; 11 12 void week_func(week day) 函数参数 day 为枚举类型week,在使用函数 week_func() 时,参数只接收枚举值 Mon ~ Sun,输入数值1···或枚举值之外的值都是错误的 原文地址:https://www.cnblogs.com/skullboyer/p/9060056.html

函数的参数类型带协议约束

在头文件中,我们在这个类里面定义一个方法,然后参数的类型是一个对象,或者直接id,但是我们要求这个对象,必须是实现了myprotocol里面的协议的对象,才能传进来.这样也起到一个约束和提醒作用,提醒其他开发人员这个对象必须实现了xxx协议的才能传进来. #import "myprotocol.h" @interface  test : NSObject -(void)setFooObject:(id <myprotocol>)object withKey:(NSStrin

C#控制台基础 函数的参数类型是EventArgs如何传递数值

1 code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication3 8 { 9 /// <summary> 10 /// 这个类继承于eventargs,是它的子类 11 /// </summary> 12 class

【Python】函数参数类型及用法

 一.函数的参数类型 def hs(a1,a2,a3,...): ****statements 其中a1,a2,a3是函数的参数,函数的参数类型可分为:必须参数.默认参数.可变参数(不定长参数).关键字参数.组合参数,总共5种. 二.必须参数 其实我们之前举得例子就是必须参数,以下例子必须参数: >>>def hello(str): .... print('必须参数是:',str) >>>hello('hello,world') 我们可以看到在函数hello中,str作

6.函数的定义方式,函数的参数问题

涉及内容: 函数的定义方式 函数的文字描述 空操作语句 位置参数 默认参数 关键参数 可变长度参数 函数的定义方式: 函数的文字说明: 为了让别人了解函数的意义,或者避免自己遗忘,可以使用    字符串(不需要赋值,单引号,双引号,多引号都行).#注释   将文字说明写在函数最开始的位置 def function1() : """ 这是这个程序的说明文字 """ print("hello function") return 1

Swift 烧脑体操(二) - 函数的参数

前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困难.不过一切都是值得的,Swift 相比 Objective-C,写出来的程序更安全.更简洁,最终能够提高我们的工作效率和质量. Swift 相关的学习资料已经很多,我想从另外一个角度来介绍它的一些特性,我把这个角度叫做「烧脑体操」.什么意思呢?就是我们专门挑一些比较费脑子的语言细节来学习.通过「烧

PowerShell控制台输出符号+函数参数类型指定+文本内容读取

There are several ways: Write-Host: Write directly to the console, not included in function/cmdlet output. Allows foreground and background colour to be set. Write-Debug: Write directly to the console, if $DebugPreference set to Continue or Stop. Wri

pycahrm使用docstrings来指定变量类型、返回值类型、函数参数类型

py里面不需要显示声明类型,这和java c这些静态语言不同,虽然python这样做少了一些代码和写代码的困难度,但还是非常多的弊端的,运行速度 代码安全, 这些都是语言本身带来的本的弊端,这些没办法没办法弥补(说用c扩展和加入大量if isinstance来判断类型的,这是不好的不方便的).但下面这两种却是可以通过docstrings来弥补的. 1.没有类型就给函数(或者方法)调用者带来麻烦,这个函数怎么用,这个参数代表什么,需要传一个什么样的参数来调用这个函数,函数返回什么东西,这都对代码阅