J'essayais un petit code avec l'instruction if, bien que ce soit très simple, mais il y a quelque chose que je confond vraiment ici, c'est le code
n<-857
while(n!=1){
if(n<=0)
print("please input a positive integer")
else if(n%%2==0)
n<-n/2
print(n)
else
n<-3*n+1
print(n)
}
comme nous le voyons ci-dessus, lors de l'exécution de ce code dans R, il y a l'erreur, mais si je change l'instruction if comme ceci
if(n<=0)
print("please input a positive integer")
else if(n%%2==0)
n<-n/2
else
n<-3*n+1
c'est ok, ma question est que peut-on écrire une seule ligne sous chaque jugement? si je veux faire quelque chose de plus après chaque juge, que dois-je faire, comme dans ce cas, je veux changer la valeur de n, mais aussi l'afficher, que dois-je faire? Merci beaucoup
Pour être précis, il ne s'agit pas de lignes mais de déclarations. Vous pouvez avoir l'intégralité de l'instruction if else
Sur une seule ligne:
> if (TRUE) 1 else 3
[1] 1
Une instruction se terminera à la fin de la ligne (si elle est complète), vous pouvez le voir bien en mode interactif si vous entrez le code ligne par ligne:
> if (TRUE)
+ 1
[1] 1
> else
Fehler: Unerwartete(s) 'else' in "else" # error: unexpected 'else' in "else"
> 3
[1] 3
if
peut se présenter sous la forme if (condition) statement
ou if (condition) statement else other.statement
, l'interpréteur suppose que la première version est destinée si l'instruction est terminée après la ligne 2 - en mode interactif, elle ne peut pas raisonnablement attendre si un else
apparaît ensuite. C'est différent dans le code source
d - il est clair avec la ligne suivante de quelle forme il s'agit.
Les points-virgules terminent également les instructions:
> if (TRUE) 1; else 3
[1] 1
Fehler: Unerwartete(s) 'else' in " else" # error: unexpected 'else' in "else"
Mais vous ne pouvez avoir qu'un instruction dans chaque branche de la condition.
> if (TRUE) 1; 2 else 3
[1] 1
Fehler: Unerwartete(s) 'else' in " 2 else" # error: unexpected 'else' in "2 else"
Les accolades regroupent les instructions afin qu'elles apparaissent comme une seule instruction.
> if (TRUE) {1; 2} else 3
[1] 2
Vous devez utiliser {}
for permet à l'instruction if
d'avoir plusieurs lignes. Essaye ça:
n<-857
while(n!=1){
if(n<=0){
print("please input a positive integer")
}
else if(n%%2==0){
n<-n/2
print(n)
}
else {
n<-3*n+1
print(n)
}
}
Pour regrouper des instructions, entourez-les d'accolades comme vous l'avez fait avec la boucle while
:
if(n<=0) {
print("please input a positive integer")
} else if(n%%2==0) {
n<-n/2
print(n)
} else {
n<-3*n+1
print(n)
}
Cela vous permettra de placer plusieurs instructions dans le if
, le else if
et la finale else
.
tandis que la réponse directe est, comme cela a été noté, d'utiliser des accolades;
il convient d'ajouter que vous pouvez intégrer le <-
opérateur d'affectation dans de nombreuses fonctions.
Dans votre cas particulier:
print(n <- 3*n+1)
## instead of
# n <- 3*n+1
# print(n)
notez que l'utilisation de =
ici --- PAS fonctionnera. Ce doit être <-
Avez-vous déjà entendu parler de barbes bouclées?
n<-857
while(n!=1){
if(n<=0) {
print("please input a positive integer")
} else if(n%%2==0) {
n<-n/2
print(n)
} else {
n<-3*n+1
print(n)
}
}